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
53typedef struct
54 {
56
57 gavl_metadata_t m;
58
59 int64_t duration;
60 int64_t pts_offset;
62
68typedef struct
69 {
71 gavl_metadata_t m;
72
73 int64_t duration;
74 int64_t pts_offset;
76
82typedef struct
83 {
84 gavl_metadata_t m;
85 int timescale;
86 int64_t duration;
88
94typedef struct
95 {
96 gavl_metadata_t m;
98 int64_t duration;
100
122char * bg_create_track_name(const gavl_metadata_t * m, const char * format);
123
130char * bg_metadata_to_string(const gavl_metadata_t * m, int use_tabs);
131
140int bg_metadata_get_year(const gavl_metadata_t * m);
141
142
143/* XML Interface */
144
153void bg_xml_2_metadata(xmlDocPtr xml_doc, xmlNodePtr xml_metadata,
154 gavl_metadata_t * ret);
155
163void bg_metadata_2_xml(xmlNodePtr xml_metadata,
164 gavl_metadata_t * ret);
165
179
195
196
203void bg_metadata_set_parameter(void * data, const char * name,
204 const bg_parameter_value_t * v);
205
213void bg_chapter_list_set_default_names(gavl_chapter_list_t * list);
214
222void bg_chapter_list_2_xml(gavl_chapter_list_t * list, xmlNodePtr xml_list);
223
232gavl_chapter_list_t *
233bg_xml_2_chapter_list(xmlDocPtr xml_doc, xmlNodePtr xml_list);
234
240void bg_chapter_list_save(gavl_chapter_list_t * list, const char * filename);
241
247gavl_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
255typedef 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
276
287
299 const char * location);
300
311char * 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.
void bg_chapter_list_set_default_names(gavl_chapter_list_t *list)
Set default chapter names.
char * bg_metadata_to_string(const gavl_metadata_t *m, int use_tabs)
Convert metadata to a humanized string.
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.
void bg_metadata_2_xml(xmlNodePtr xml_metadata, gavl_metadata_t *ret)
Convert a metadata struct into a libxml2 node.
void bg_chapter_list_2_xml(gavl_chapter_list_t *list, xmlNodePtr xml_list)
Convert a chapter list into a libxml2 node.
bg_parameter_info_t * bg_metadata_get_parameters(gavl_metadata_t *m)
Get parameters for editing metadata.
gavl_chapter_list_t * bg_xml_2_chapter_list(xmlDocPtr xml_doc, xmlNodePtr xml_list)
Convert libxml2 node into a chapter list.
void bg_chapter_list_save(gavl_chapter_list_t *list, const char *filename)
Save a chapter list to a file.
bg_parameter_info_t * bg_metadata_get_parameters_common(gavl_metadata_t *m)
Get parameters for editing metadata.
char * bg_get_track_name_default(const char *location, int track, int num_tracks)
Get a track name from the filename/URL.
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_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