streaminfo.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __BG_STREAMINFO_H_
00023 #define __BG_STREAMINFO_H_
00024
00025 #include <gavl/gavl.h>
00026
00027 #include <libxml/tree.h>
00028 #include <libxml/parser.h>
00029
00039
00040
00041
00042
00043
00044
00051 typedef struct
00052 {
00053 gavl_audio_format_t format;
00054 char * description;
00055 char language[4];
00056 char * info;
00057 int64_t duration;
00058 int64_t pts_offset;
00059 } bg_audio_info_t;
00060
00066 typedef struct
00067 {
00068 gavl_video_format_t format;
00069 char * description;
00070 char language[4];
00071 char * info;
00072 int64_t duration;
00073 int64_t pts_offset;
00074 } bg_video_info_t;
00075
00081 typedef struct
00082 {
00083 char * description;
00084 char language[4];
00085 char * info;
00086
00087 int is_text;
00088 gavl_video_format_t format;
00089 int64_t duration;
00090 } bg_subtitle_info_t;
00091
00097 typedef struct
00098 {
00099 char * key;
00100 char * value;
00101 } bg_metadata_extended_t;
00102
00108 typedef struct
00109 {
00110 char * artist;
00111 char * title;
00112 char * album;
00113
00114 int track;
00115 char * date;
00116 char * genre;
00117 char * comment;
00118
00119 char * author;
00120 char * copyright;
00121
00122 bg_metadata_extended_t * ext;
00123 } bg_metadata_t;
00124
00129 void bg_metadata_free(bg_metadata_t * m);
00130
00139 void bg_metadata_copy(bg_metadata_t * dst, const bg_metadata_t * src);
00140
00162 char * bg_create_track_name(const bg_metadata_t * m, const char * format);
00163
00170 char * bg_metadata_to_string(const bg_metadata_t * m, int use_tabs);
00171
00180 int bg_metadata_get_year(const bg_metadata_t * m);
00181
00190 void bg_metadata_append_ext(bg_metadata_t * m, const char * key, const char * value);
00191
00192
00193
00202 void bg_xml_2_metadata(xmlDocPtr xml_doc, xmlNodePtr xml_metadata,
00203 bg_metadata_t * ret);
00204
00212 void bg_metadata_2_xml(xmlNodePtr xml_metadata,
00213 bg_metadata_t * ret);
00214
00227 bg_parameter_info_t * bg_metadata_get_parameters(bg_metadata_t * m);
00228
00235 void bg_metadata_set_parameter(void * data, const char * name,
00236 const bg_parameter_value_t * v);
00237
00244 void bg_metadata_dump(const bg_metadata_t * m);
00245
00246
00254 typedef struct
00255 {
00256 int num_chapters;
00257 int timescale;
00258 struct
00259 {
00260 int64_t time;
00261 char * name;
00262 } * chapters;
00263 } bg_chapter_list_t;
00264
00270 bg_chapter_list_t * bg_chapter_list_create(int num_chapters);
00271
00276 bg_chapter_list_t * bg_chapter_list_copy(const bg_chapter_list_t * list);
00277
00278
00283 void bg_chapter_list_destroy(bg_chapter_list_t * list);
00291 void bg_chapter_list_insert(bg_chapter_list_t * list, int index,
00292 int64_t time, const char * name);
00293
00299 void bg_chapter_list_delete(bg_chapter_list_t * list, int index);
00300
00308 void bg_chapter_list_set_default_names(bg_chapter_list_t * list);
00309
00319 int bg_chapter_list_get_current(bg_chapter_list_t * list,
00320 gavl_time_t time);
00321
00332 int bg_chapter_list_changed(bg_chapter_list_t * list,
00333 gavl_time_t time, int * current_chapter);
00334
00335
00343 void bg_chapter_list_2_xml(bg_chapter_list_t * list, xmlNodePtr xml_list);
00344
00353 bg_chapter_list_t *
00354 bg_xml_2_chapter_list(xmlDocPtr xml_doc, xmlNodePtr xml_list);
00355
00361 void bg_chapter_list_save(bg_chapter_list_t * list, const char * filename);
00362
00368 bg_chapter_list_t * bg_chapter_list_load(const char * filename);
00369
00370 #define BG_TRACK_SEEKABLE (1<<0) //!< Track is seekable
00371 #define BG_TRACK_PAUSABLE (1<<1) //!< Track is pausable
00372
00376 typedef struct
00377 {
00378 int flags;
00379 char * name;
00380 char * description;
00381 int64_t duration;
00382
00383 int num_audio_streams;
00384 int num_video_streams;
00385 int num_subtitle_streams;
00386
00387 bg_audio_info_t * audio_streams;
00388 bg_video_info_t * video_streams;
00389 bg_subtitle_info_t * subtitle_streams;
00390
00391 bg_metadata_t metadata;
00392
00393
00394
00395 char * url;
00396
00397 bg_chapter_list_t * chapter_list;
00398
00399 } bg_track_info_t;
00400
00410 void bg_track_info_free(bg_track_info_t * info);
00411
00422 void bg_set_track_name_default(bg_track_info_t * info,
00423 const char * location);
00424
00435 char * bg_get_track_name_default(const char * location, int track, int num_tracks);
00436
00442 #endif // /__BG_STREAMINFO_H_