00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00029 #include <gavl/gavl.h>
00030
00064 typedef struct bgav_s bgav_t;
00065
00071 bgav_t * bgav_create();
00072
00103 typedef struct bgav_metadata_s bgav_metadata_t;
00104
00111 const char * bgav_metadata_get_author(const bgav_metadata_t*metadata);
00112
00119 const char * bgav_metadata_get_title(const bgav_metadata_t * metadata);
00120
00127 const char * bgav_metadata_get_comment(const bgav_metadata_t * metadata);
00128
00135 const char * bgav_metadata_get_copyright(const bgav_metadata_t * metadata);
00136
00142 const char * bgav_metadata_get_album(const bgav_metadata_t * metadata);
00143
00149 const char * bgav_metadata_get_artist(const bgav_metadata_t * metadata);
00150
00157 const char * bgav_metadata_get_genre(const bgav_metadata_t * metadata);
00158
00165 const char * bgav_metadata_get_date(const bgav_metadata_t * metadata);
00166
00173 int bgav_metadata_get_track(const bgav_metadata_t * metadata);
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00188 typedef struct bgav_options_s bgav_options_t;
00189
00199 bgav_options_t * bgav_get_options(bgav_t * bgav);
00200
00214 bgav_options_t * bgav_options_create();
00215
00225 void bgav_options_destroy(bgav_options_t * opt);
00226
00233 void bgav_options_copy(bgav_options_t * dst, const bgav_options_t * src);
00234
00244 void bgav_options_set_connect_timeout(bgav_options_t * opt, int timeout);
00245
00255 void bgav_options_set_read_timeout(bgav_options_t * opt, int timeout);
00256
00266 void bgav_options_set_network_bandwidth(bgav_options_t * opt, int bandwidth);
00267
00277 void bgav_options_set_network_buffer_size(bgav_options_t * opt, int size);
00278
00279
00280
00291 void bgav_options_set_http_use_proxy(bgav_options_t* opt, int enable);
00292
00302 void bgav_options_set_http_proxy_host(bgav_options_t* opt, const char * host);
00303
00313 void bgav_options_set_http_proxy_port(bgav_options_t* opt, int port);
00314
00325 void bgav_options_set_http_proxy_auth(bgav_options_t* opt, int enable);
00326
00335 void bgav_options_set_http_proxy_user(bgav_options_t* opt, const char * user);
00336
00345 void bgav_options_set_http_proxy_pass(bgav_options_t* opt, const char * pass);
00346
00355 void bgav_options_set_http_shoutcast_metadata(bgav_options_t* opt, int enable);
00356
00357
00358
00365 void bgav_options_set_ftp_anonymous(bgav_options_t* opt, int enable);
00366
00375 void bgav_options_set_ftp_anonymous_password(bgav_options_t* opt, const char* pass);
00376
00388 void bgav_options_set_default_subtitle_encoding(bgav_options_t* opt,
00389 const char* encoding);
00390
00397 void bgav_options_set_dvd_chapters_as_tracks(bgav_options_t* opt,
00398 int chapters_as_tracks);
00399
00410 void bgav_options_set_audio_dynrange(bgav_options_t* opt,
00411 int audio_dynrange);
00412
00413
00429 void bgav_options_set_seamless(bgav_options_t* opt,
00430 int seamless);
00431
00447 void bgav_options_set_seek_subtitles(bgav_options_t* opt,
00448 int seek_subtitles);
00449
00456 void bgav_options_set_pp_level(bgav_options_t* opt,
00457 int pp_level);
00458
00470 void bgav_options_set_dvb_channels_file(bgav_options_t* opt,
00471 const char * file);
00472
00484 void bgav_options_set_prefer_ffmpeg_demuxers(bgav_options_t* opt,
00485 int prefer);
00486
00487
00494 typedef enum
00495 {
00496 BGAV_LOG_DEBUG,
00497 BGAV_LOG_WARNING,
00498 BGAV_LOG_ERROR,
00499 BGAV_LOG_INFO
00500 } bgav_log_level_t;
00501
00510 typedef void (*bgav_log_callback)(void*data, bgav_log_level_t level,
00511 const char * log_domain,
00512 const char * message);
00513
00521 void
00522 bgav_options_set_log_callback(bgav_options_t* opt,
00523 bgav_log_callback callback,
00524 void * data);
00525
00526
00527
00528
00538 typedef void (*bgav_name_change_callback)(void*data, const char * name);
00539
00547 void
00548 bgav_options_set_name_change_callback(bgav_options_t* opt,
00549 bgav_name_change_callback callback,
00550 void * data);
00551
00562 typedef void (*bgav_metadata_change_callback)(void*data, const bgav_metadata_t * metadata);
00563
00571 void
00572 bgav_options_set_metadata_change_callback(bgav_options_t* opt,
00573 bgav_metadata_change_callback callback,
00574 void * data);
00575
00586 typedef void (*bgav_track_change_callback)(void*data, int track);
00587
00595 void
00596 bgav_options_set_track_change_callback(bgav_options_t* opt,
00597 bgav_track_change_callback callback,
00598 void * data);
00599
00609 typedef void (*bgav_buffer_callback)(void*data, float percentage);
00610
00618 void
00619 bgav_options_set_buffer_callback(bgav_options_t* opt,
00620 bgav_buffer_callback callback,
00621 void * data);
00622
00634 typedef int (*bgav_user_pass_callback)(void*data, const char * resource,
00635 char ** username, char ** password);
00636
00648 void
00649 bgav_options_set_user_pass_callback(bgav_options_t* opt,
00650 bgav_user_pass_callback callback,
00651 void * data);
00652
00663 typedef void (*bgav_aspect_callback)(void*data, int stream,
00664 int pixel_width, int pixel_height);
00665
00666
00674 void
00675 bgav_options_set_aspect_callback(bgav_options_t* opt,
00676 bgav_aspect_callback callback,
00677 void * data);
00678
00679
00680
00681
00699 typedef struct
00700 {
00701 char * device;
00702 char * name;
00703 } bgav_device_info_t;
00704
00705
00706
00714 bgav_device_info_t * bgav_find_devices_vcd();
00715
00723 int bgav_check_device_vcd(const char * device, char ** name);
00724
00732 bgav_device_info_t * bgav_find_devices_dvd();
00733
00741 int bgav_check_device_dvd(const char * device, char ** name);
00742
00750 bgav_device_info_t * bgav_find_devices_dvb();
00751
00759 int bgav_check_device_dvb(const char * device, char ** name);
00760
00767 void bgav_device_info_destroy(bgav_device_info_t * arr);
00768
00775 int bgav_eject_disc(const char * device);
00776
00783 const char * bgav_get_disc_name(bgav_t * bgav);
00784
00785
00786
00787
00788
00789
00790
00798 int bgav_open(bgav_t * bgav, const char * location);
00799
00807 int bgav_open_vcd(bgav_t * bgav, const char * location);
00808
00816 int bgav_open_dvd(bgav_t * bgav, const char * location);
00817
00829 int bgav_open_dvb(bgav_t * bgav, const char * location);
00830
00831
00841 int bgav_open_fd(bgav_t * bgav, int fd,
00842 int64_t total_size,
00843 const char * mimetype);
00844
00845
00846
00852 void bgav_close(bgav_t * bgav);
00853
00854
00855
00856
00857
00858
00859
00860
00861
00884 int bgav_is_redirector(bgav_t * bgav);
00885
00892 int bgav_redirector_get_num_urls(bgav_t * bgav);
00893
00901 const char * bgav_redirector_get_url(bgav_t * bgav, int index);
00902
00910 const char * bgav_redirector_get_name(bgav_t * bgav, int index);
00911
00912
00913
00914
00915
00929 int bgav_num_tracks(bgav_t * bgav);
00930
00937 const char * bgav_get_description(bgav_t * bgav);
00938
00946 gavl_time_t bgav_get_duration(bgav_t * bgav, int track);
00947
00948
00949
00957 int bgav_num_audio_streams(bgav_t * bgav, int track);
00958
00966 int bgav_num_video_streams(bgav_t * bgav, int track);
00967
00975 int bgav_num_subtitle_streams(bgav_t * bgav, int track);
00976
00977
00985 const char * bgav_get_track_name(bgav_t * bgav, int track);
00986
00994 const bgav_metadata_t * bgav_get_metadata(bgav_t * bgav,int track);
00995
01007 int bgav_select_track(bgav_t * bgav, int track);
01008
01021 int bgav_get_num_chapters(bgav_t * bgav, int track, int * timescale);
01022
01031 const char *
01032 bgav_get_chapter_name(bgav_t * bgav, int track, int chapter);
01033
01042 int64_t bgav_get_chapter_time(bgav_t * bgav, int track, int chapter);
01043
01059 const char * bgav_get_audio_language(bgav_t * bgav, int stream);
01060
01068 const char * bgav_get_subtitle_language(bgav_t * bgav, int stream);
01069
01077 typedef enum
01078 {
01079 BGAV_STREAM_MUTE = 0,
01080 BGAV_STREAM_DECODE = 1
01081 }
01082 bgav_stream_action_t;
01083
01094 int bgav_set_audio_stream(bgav_t * bgav, int stream, bgav_stream_action_t action);
01095
01106 int bgav_set_video_stream(bgav_t * bgav, int stream, bgav_stream_action_t action);
01107
01118 int bgav_set_subtitle_stream(bgav_t * bgav, int stream, bgav_stream_action_t action);
01119
01120
01121
01122
01123
01124
01125
01126
01127
01128
01129
01130
01144 int bgav_start(bgav_t * bgav);
01145
01161 const gavl_audio_format_t * bgav_get_audio_format(bgav_t * bgav, int stream);
01162
01174 const gavl_video_format_t * bgav_get_video_format(bgav_t * bgav, int stream);
01175
01188 const gavl_video_format_t * bgav_get_subtitle_format(bgav_t * bgav, int stream);
01189
01200 int bgav_subtitle_is_text(bgav_t * bgav, int stream);
01201
01213 const char * bgav_get_audio_description(bgav_t * bgav, int stream);
01214
01229 const char * bgav_get_audio_info(bgav_t * bgav, int stream);
01230
01231
01243 const char * bgav_get_video_description(bgav_t * bgav, int stream);
01244
01256 const char * bgav_get_subtitle_description(bgav_t * bgav, int stream);
01257
01258
01273 const char * bgav_get_subtitle_info(bgav_t * bgav, int stream);
01274
01275
01276
01277
01278
01279
01280
01293 int bgav_read_video(bgav_t * bgav, gavl_video_frame_t * frame, int stream);
01294
01304 int bgav_read_audio(bgav_t * bgav, gavl_audio_frame_t * frame, int stream,
01305 int num_samples);
01306
01318 int bgav_has_subtitle(bgav_t * bgav, int stream);
01319
01335 int bgav_read_subtitle_overlay(bgav_t * bgav, gavl_overlay_t * ovl, int stream);
01336
01354 int bgav_read_subtitle_text(bgav_t * bgav, char ** ret, int *ret_alloc,
01355 gavl_time_t * start_time, gavl_time_t * duration, int stream);
01356
01357
01358
01359
01360
01371 int bgav_can_seek(bgav_t * bgav);
01372
01381 void bgav_seek(bgav_t * bgav, gavl_time_t * time);
01382
01403 void bgav_seek_scaled(bgav_t * bgav, gavl_time_t * time, int scale);
01404
01405
01406
01407
01408
01409
01418 void bgav_dump(bgav_t * bgav);
01419
01420
01421
01429 void bgav_codecs_dump();
01430
01431
01432
01440 void bgav_formats_dump();
01441
01449 void bgav_inputs_dump();
01450
01458 void bgav_redirectors_dump();
01459
01467 void bgav_subreaders_dump();