1 /* GStreamer
2  *
3  * Copyright (C) 2015 Brijesh Singh <brijesh.ksingh@gmail.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20 
21 #include "gstplayer-media-info.h"
22 
23 #ifndef __GST_PLAYER_MEDIA_INFO_PRIVATE_H__
24 #define __GST_PLAYER_MEDIA_INFO_PRIVATE_H__
25 
26 struct _GstPlayerStreamInfo
27 {
28   GObject parent;
29 
30   gchar *codec;
31 
32   GstCaps *caps;
33   gint stream_index;
34   GstTagList  *tags;
35   gchar *stream_id;
36 };
37 
38 struct _GstPlayerStreamInfoClass
39 {
40   GObjectClass parent_class;
41 };
42 
43 struct _GstPlayerSubtitleInfo
44 {
45   GstPlayerStreamInfo  parent;
46 
47   gchar *language;
48 };
49 
50 struct _GstPlayerSubtitleInfoClass
51 {
52   GstPlayerStreamInfoClass parent_class;
53 };
54 
55 struct _GstPlayerAudioInfo
56 {
57   GstPlayerStreamInfo  parent;
58 
59   gint channels;
60   gint sample_rate;
61 
62   guint bitrate;
63   guint max_bitrate;
64 
65   gchar *language;
66 };
67 
68 struct _GstPlayerAudioInfoClass
69 {
70   GstPlayerStreamInfoClass parent_class;
71 };
72 
73 struct _GstPlayerVideoInfo
74 {
75   GstPlayerStreamInfo  parent;
76 
77   gint width;
78   gint height;
79   gint framerate_num;
80   gint framerate_denom;
81   gint par_num;
82   gint par_denom;
83 
84   guint bitrate;
85   guint max_bitrate;
86 };
87 
88 struct _GstPlayerVideoInfoClass
89 {
90   GstPlayerStreamInfoClass parent_class;
91 };
92 
93 struct _GstPlayerMediaInfo
94 {
95   GObject parent;
96 
97   gchar *uri;
98   gchar *title;
99   gchar *container;
100   gboolean seekable, is_live;
101   GstTagList *tags;
102   GstSample *image_sample;
103 
104   GList *stream_list;
105   GList *audio_stream_list;
106   GList *video_stream_list;
107   GList *subtitle_stream_list;
108 
109   GstClockTime  duration;
110 };
111 
112 struct _GstPlayerMediaInfoClass
113 {
114   GObjectClass parent_class;
115 };
116 
117 G_GNUC_INTERNAL GstPlayerMediaInfo*   gst_player_media_info_new
118                                       (const gchar *uri);
119 G_GNUC_INTERNAL GstPlayerMediaInfo*   gst_player_media_info_copy
120                                       (GstPlayerMediaInfo *ref);
121 G_GNUC_INTERNAL GstPlayerStreamInfo*  gst_player_stream_info_new
122                                       (gint stream_index, GType type);
123 G_GNUC_INTERNAL GstPlayerStreamInfo*  gst_player_stream_info_copy
124                                       (GstPlayerStreamInfo *ref);
125 
126 #endif /* __GST_PLAYER_MEDIA_INFO_PRIVATE_H__ */
127