#include <plugin.h>
Data Fields | |
bg_plugin_common_t | common |
Infos and functions common to all plugin types. | |
const char *(* | get_protocols )(void *priv) |
Get supported protocols. | |
const char *(* | get_mimetypes )(void *priv) |
Get supported mimetypes. | |
const char *(* | get_extensions )(void *priv) |
Get supported extensions. | |
void(* | set_callbacks )(void *priv, bg_input_callbacks_t *callbacks) |
Set callbacks. | |
int(* | open )(void *priv, const char *arg) |
Open file/url/device. | |
int(* | open_fd )(void *priv, int fd, int64_t total_bytes, const char *mimetype) |
Open plugin from filedescriptor (optional). | |
int(* | open_callbacks )(void *priv, int(*read_callback)(void *priv, uint8_t *data, int len), int64_t(*seek_callback)(void *priv, uint64_t pos, int whence), void *cb_priv, const char *filename, const char *mimetype, int64_t total_bytes) |
Open plugin with callbacks (optional). | |
const bg_edl_t *(* | get_edl )(void *priv) |
Get the edl (optional). | |
const char *(* | get_disc_name )(void *priv) |
Get the disc name (optional). | |
int(* | eject_disc )(const char *device) |
Eject disc (optional). | |
int(* | get_num_tracks )(void *priv) |
Get the number of tracks. | |
bg_track_info_t *(* | get_track_info )(void *priv, int track) |
Return information about a track. | |
int(* | set_track )(void *priv, int track) |
Set the track to be played. | |
int(* | get_audio_compression_info )(void *priv, int stream, gavl_compression_info_t *info) |
Get the compression info of an audio stream. | |
int(* | get_video_compression_info )(void *priv, int stream, gavl_compression_info_t *info) |
Get the compression info of a video stream. | |
int(* | set_audio_stream )(void *priv, int stream, bg_stream_action_t action) |
Setup audio stream. | |
int(* | set_video_stream )(void *priv, int stream, bg_stream_action_t action) |
Setup video stream. | |
int(* | set_subtitle_stream )(void *priv, int stream, bg_stream_action_t action) |
Setup subtitle stream. | |
int(* | start )(void *priv) |
Start decoding. | |
gavl_frame_table_t *(* | get_frame_table )(void *priv, int stream) |
Get frame table. | |
bg_read_audio_func_t | read_audio |
Read audio samples. | |
int(* | has_still )(void *priv, int stream) |
Check is a still image is available. | |
bg_read_video_func_t | read_video |
Read a video frame. | |
int(* | read_audio_packet )(void *priv, int stream, gavl_packet_t *p) |
Read compressed audio packet. | |
int(* | read_video_packet )(void *priv, int stream, gavl_packet_t *p) |
Read compressed video packet. | |
void(* | skip_video )(void *priv, int stream, int64_t *time, int scale, int exact) |
Skip frames in a video stream. | |
int(* | has_subtitle )(void *priv, int stream) |
Query if a new subtitle is available. | |
int(* | read_subtitle_overlay )(void *priv, gavl_overlay_t *ovl, int stream) |
Read one pixmap subtitle. | |
int(* | read_subtitle_text )(void *priv, char **text, int *text_alloc, int64_t *start_time, int64_t *duration, int stream) |
Read one text subtitle. | |
void(* | seek )(void *priv, int64_t *time, int scale) |
Seek within a media track. | |
void(* | stop )(void *priv) |
Stop playback. | |
void(* | close )(void *priv) |
Close plugin. |
This is for all kinds of media inputs (files, disks, urls, etc), except recording from hardware devices (see Recorder).
Infos and functions common to all plugin types.
const char*(* bg_input_plugin_s::get_protocols)(void *priv) |
Get supported protocols.
priv | The handle returned by the create() method |
const char*(* bg_input_plugin_s::get_mimetypes)(void *priv) |
Get supported mimetypes.
priv | The handle returned by the create() method |
const char*(* bg_input_plugin_s::get_extensions)(void *priv) |
Get supported extensions.
priv | The handle returned by the create() method |
void(* bg_input_plugin_s::set_callbacks)(void *priv, bg_input_callbacks_t *callbacks) |
Set callbacks.
priv | The handle returned by the create() method | |
callbacks | Callback structure initialized by the caller before |
int(* bg_input_plugin_s::open)(void *priv, const char *arg) |
Open file/url/device.
priv | The handle returned by the create() method | |
arg | Filename, URL or device name |
int(* bg_input_plugin_s::open_fd)(void *priv, int fd, int64_t total_bytes, const char *mimetype) |
Open plugin from filedescriptor (optional).
priv | The handle returned by the create() method | |
fd | Open filedescriptor | |
total_bytes | Totally available bytes or 0 if unknown | |
mimetype | Mimetype from http header (or NULL) |
int(* bg_input_plugin_s::open_callbacks)(void *priv, int(*read_callback)(void *priv, uint8_t *data, int len), int64_t(*seek_callback)(void *priv, uint64_t pos, int whence), void *cb_priv, const char *filename, const char *mimetype, int64_t total_bytes) |
Open plugin with callbacks (optional).
priv | The handle returned by the create() method | |
read_callback | Callback for reading data | |
seek_callback | Callback for seeking | |
cb_priv | Private argument for the callbacks | |
filename | The filename of the input or NULL if this info is not known. | |
mimetype | The mimetype of the input or NULL if this info is not known. | |
total_bytes | total number of bytes or 0 if this info is not known. |
const bg_edl_t*(* bg_input_plugin_s::get_edl)(void *priv) |
Get the edl (optional).
priv | The handle returned by the create() method |
const char*(* bg_input_plugin_s::get_disc_name)(void *priv) |
Get the disc name (optional).
priv | The handle returned by the create() method |
int(* bg_input_plugin_s::eject_disc)(const char *device) |
Eject disc (optional).
priv | The handle returned by the create() method |
int(* bg_input_plugin_s::get_num_tracks)(void *priv) |
Get the number of tracks.
priv | The handle returned by the create() method |
bg_track_info_t*(* bg_input_plugin_s::get_track_info)(void *priv, int track) |
Return information about a track.
priv | The handle returned by the create() method | |
track | Track index starting with 0 |
Other data, especially audio and video formats, will become valid after the start() call (see below).
int(* bg_input_plugin_s::set_track)(void *priv, int track) |
Set the track to be played.
priv | The handle returned by the create() method | |
track | Track index starting with 0 |
int(* bg_input_plugin_s::get_audio_compression_info)(void *priv, int stream, gavl_compression_info_t *info) |
Get the compression info of an audio stream.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 | |
info | Returns the compression info |
int(* bg_input_plugin_s::get_video_compression_info)(void *priv, int stream, gavl_compression_info_t *info) |
Get the compression info of a video stream.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 | |
info | Returns the compression info |
int(* bg_input_plugin_s::set_audio_stream)(void *priv, int stream, bg_stream_action_t action) |
Setup audio stream.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 | |
action | What to do with the stream |
int(* bg_input_plugin_s::set_video_stream)(void *priv, int stream, bg_stream_action_t action) |
Setup video stream.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 | |
action | What to do with the stream |
int(* bg_input_plugin_s::set_subtitle_stream)(void *priv, int stream, bg_stream_action_t action) |
Setup subtitle stream.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 | |
action | What to do with the stream |
int(* bg_input_plugin_s::start)(void *priv) |
Start decoding.
priv | The handle returned by the create() method |
From the plugins point of view, this is the last chance to return 0 if something fails
gavl_frame_table_t*(* bg_input_plugin_s::get_frame_table)(void *priv, int stream) |
Get frame table.
priv | The handle returned by the create() method | |
stream | Stream index (starting with 0) |
Read audio samples.
priv | The handle returned by the create() method | |
frame | The frame, where the samples will be copied | |
stream | Stream index starting with 0 | |
num_samples | Number of samples |
int(* bg_input_plugin_s::has_still)(void *priv, int stream) |
Check is a still image is available.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 |
Read a video frame.
priv | The handle returned by the create() method | |
frame | The frame, where the image will be copied | |
stream | Stream index starting with 0 |
int(* bg_input_plugin_s::read_audio_packet)(void *priv, int stream, gavl_packet_t *p) |
Read compressed audio packet.
priv | The handle returned by the create() method | |
stream | Stream index (starting with 0) | |
p | Returns the packet |
int(* bg_input_plugin_s::read_video_packet)(void *priv, int stream, gavl_packet_t *p) |
Read compressed video packet.
priv | The handle returned by the create() method | |
stream | Stream index (starting with 0) | |
p | Returns the packet |
void(* bg_input_plugin_s::skip_video)(void *priv, int stream, int64_t *time, int scale, int exact) |
Skip frames in a video stream.
stream | Stream index (starting with 0) | |
time | The time to skip to (will be changed to the true time) | |
scale | Scale by which the time is scaled | |
exact | 1 if an exact skip should be done, 0 for faster approximate skip |
int(* bg_input_plugin_s::has_subtitle)(void *priv, int stream) |
Query if a new subtitle is available.
priv | The handle returned by the create() method | |
stream | Stream index starting with 0 |
int(* bg_input_plugin_s::read_subtitle_overlay)(void *priv, gavl_overlay_t *ovl, int stream) |
Read one pixmap subtitle.
priv | The handle returned by the create() method | |
ovl | Where the overlay will be copied | |
stream | Stream index starting with 0 |
int(* bg_input_plugin_s::read_subtitle_text)(void *priv, char **text, int *text_alloc, int64_t *start_time, int64_t *duration, int stream) |
Read one text subtitle.
priv | The handle returned by the create() method | |
text | Where the text will be copied, the buffer will be realloc()ed. | |
text_alloc | Allocated bytes for text. Will be updated by the function. | |
start_time | Returns the start time of the subtitle | |
duration | Returns the duration of the subtitle | |
stream | Stream index starting with 0 |
This function automatically handles the text buffer (and text_alloc). Just set both to zero before the first call and free() the text buffer after the last call (if non-NULL).
void(* bg_input_plugin_s::seek)(void *priv, int64_t *time, int scale) |
Seek within a media track.
priv | The handle returned by the create() method | |
time | Time to seek to | |
scale | Timescale |
void(* bg_input_plugin_s::stop)(void *priv) |
Stop playback.
priv | The handle returned by the create() method |
void(* bg_input_plugin_s::close)(void *priv) |
Close plugin.
priv | The handle returned by the create() method |