gmerlin
streaminfo.h
1 /*****************************************************************
2  * gmerlin - a general purpose multimedia framework and applications
3  *
4  * Copyright (c) 2001 - 2012 Members of the Gmerlin project
5  * gmerlin-general@lists.sourceforge.net
6  * http://gmerlin.sourceforge.net
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  * *****************************************************************/
21 
22 #ifndef __BG_STREAMINFO_H_
23 #define __BG_STREAMINFO_H_
24 
25 #include <gavl/gavl.h>
26 #include <gavl/metadata.h>
27 #include <gavl/chapterlist.h>
28 
29 #include <libxml/tree.h>
30 #include <libxml/parser.h>
31 
41 /************************************************
42  * Types for describing media streams
43  ************************************************/
44 
45 /* Languages are ISO 639-2 (3 character code) */
46 
53 typedef struct
54  {
56 
57  gavl_metadata_t m;
58 
59  int64_t duration;
60  int64_t pts_offset;
62 
68 typedef struct
69  {
71  gavl_metadata_t m;
72 
73  int64_t duration;
74  int64_t pts_offset;
76 
82 typedef struct
83  {
84  gavl_metadata_t m;
85  int timescale;
86  int64_t duration;
88 
94 typedef struct
95  {
96  gavl_metadata_t m;
98  int64_t duration;
100 
122 char * bg_create_track_name(const gavl_metadata_t * m, const char * format);
123 
130 char * bg_metadata_to_string(const gavl_metadata_t * m, int use_tabs);
131 
140 int bg_metadata_get_year(const gavl_metadata_t * m);
141 
142 
143 /* XML Interface */
144 
153 void bg_xml_2_metadata(xmlDocPtr xml_doc, xmlNodePtr xml_metadata,
154  gavl_metadata_t * ret);
155 
163 void bg_metadata_2_xml(xmlNodePtr xml_metadata,
164  gavl_metadata_t * ret);
165 
179 
195 
196 
203 void bg_metadata_set_parameter(void * data, const char * name,
204  const bg_parameter_value_t * v);
205 
213 void bg_chapter_list_set_default_names(gavl_chapter_list_t * list);
214 
222 void bg_chapter_list_2_xml(gavl_chapter_list_t * list, xmlNodePtr xml_list);
223 
232 gavl_chapter_list_t *
233 bg_xml_2_chapter_list(xmlDocPtr xml_doc, xmlNodePtr xml_list);
234 
240 void bg_chapter_list_save(gavl_chapter_list_t * list, const char * filename);
241 
247 gavl_chapter_list_t * bg_chapter_list_load(const char * filename);
248 
249 #define BG_TRACK_SEEKABLE (1<<0)
250 #define BG_TRACK_PAUSABLE (1<<1)
251 
255 typedef struct
256  {
257  int flags;
258 
263 
268 
269  gavl_metadata_t metadata;
270 
271  // char * url; //!< URL (denotes a redirector)
272 
273  gavl_chapter_list_t * chapter_list;
274 
275  } bg_track_info_t;
276 
287 
299  const char * location);
300 
311 char * bg_get_track_name_default(const char * location, int track, int num_tracks);
312 
319 
325 #endif // /__BG_STREAMINFO_H_
void bg_xml_2_metadata(xmlDocPtr xml_doc, xmlNodePtr xml_metadata, gavl_metadata_t *ret)
Convert a libxml2 node into a metadata struct.
bg_parameter_info_t * bg_metadata_get_parameters(gavl_metadata_t *m)
Get parameters for editing metadata.
char * bg_metadata_to_string(const gavl_metadata_t *m, int use_tabs)
Convert metadata to a humanized string.
void bg_chapter_list_set_default_names(gavl_chapter_list_t *list)
Set default chapter names.
int bg_metadata_get_year(const gavl_metadata_t *m)
Try to get the year from the metadata.
gavl_time_t bg_track_info_get_duration(const bg_track_info_t *info)
Get the duration of a track.
gavl_chapter_list_t * bg_xml_2_chapter_list(xmlDocPtr xml_doc, xmlNodePtr xml_list)
Convert libxml2 node into a chapter list.
bg_parameter_info_t * bg_metadata_get_parameters_common(gavl_metadata_t *m)
Get parameters for editing metadata.
void bg_metadata_2_xml(xmlNodePtr xml_metadata, gavl_metadata_t *ret)
Convert a metadata struct into a libxml2 node.
char * bg_create_track_name(const gavl_metadata_t *m, const char *format)
Create trackname from metadata.
gavl_chapter_list_t * bg_chapter_list_load(const char *filename)
Load a chapter list from a file.
void bg_chapter_list_2_xml(gavl_chapter_list_t *list, xmlNodePtr xml_list)
Convert a chapter list into a libxml2 node.
void bg_chapter_list_save(gavl_chapter_list_t *list, const char *filename)
Save a chapter list to a file.
char * bg_get_track_name_default(const char *location, int track, int num_tracks)
Get a track name from the filename/URL.
void bg_set_track_name_default(bg_track_info_t *info, const char *location)
Set the track name from the filename/URL.
void bg_track_info_free(bg_track_info_t *info)
Free all allocated memory in a track info.
void bg_metadata_set_parameter(void *data, const char *name, const bg_parameter_value_t *v)
Change metadata by setting parameters.
int64_t gavl_time_t
Description of an audio stream.
Definition: streaminfo.h:54
int64_t duration
Duration in timescale tics.
Definition: streaminfo.h:59
int64_t pts_offset
First timestamp.
Definition: streaminfo.h:60
gavl_audio_format_t format
Format (invalid until after the start function was called)
Definition: streaminfo.h:55
gavl_metadata_t m
Metadata.
Definition: streaminfo.h:57
Description of an overlay stream.
Definition: streaminfo.h:95
gavl_metadata_t m
Metadata.
Definition: streaminfo.h:96
gavl_video_format_t format
Format of overlay subtitles.
Definition: streaminfo.h:97
int64_t duration
Duration in timescale tics.
Definition: streaminfo.h:98
Parmeter description.
Definition: parameter.h:135
Description of a text stream.
Definition: streaminfo.h:83
int64_t duration
Duration in timescale tics.
Definition: streaminfo.h:86
gavl_metadata_t m
Metadata.
Definition: streaminfo.h:84
Track info.
Definition: streaminfo.h:256
int flags
BG_TRACK_ flags defined above.
Definition: streaminfo.h:257
bg_audio_info_t * audio_streams
Audio streams.
Definition: streaminfo.h:264
int num_text_streams
Number of text streams.
Definition: streaminfo.h:261
bg_text_info_t * text_streams
Subtitle streams.
Definition: streaminfo.h:266
gavl_chapter_list_t * chapter_list
Chapter list (or NULL)
Definition: streaminfo.h:273
bg_overlay_info_t * overlay_streams
Subtitle streams.
Definition: streaminfo.h:267
int num_overlay_streams
Number of overlay streams.
Definition: streaminfo.h:262
bg_video_info_t * video_streams
Video streams.
Definition: streaminfo.h:265
int num_audio_streams
Number of audio streams.
Definition: streaminfo.h:259
gavl_metadata_t metadata
Metadata (optional)
Definition: streaminfo.h:269
int num_video_streams
Number of video streams.
Definition: streaminfo.h:260
Description of a video stream.
Definition: streaminfo.h:69
gavl_metadata_t m
Metadata.
Definition: streaminfo.h:71
gavl_video_format_t format
Format (invalid before the start function was called)
Definition: streaminfo.h:70
int64_t duration
Duration in timescale tics.
Definition: streaminfo.h:73
int64_t pts_offset
First timestamp.
Definition: streaminfo.h:74
Container for a parameter value.
Definition: parameter.h:83