gmerlin-avdecoder
|
Macros | |
#define | BGAV_TIMESTAMP_UNDEFINED GAVL_TIME_UNDEFINED |
Time value indicating an invalid time. More... | |
Functions | |
BGAV_PUBLIC int | bgav_can_seek_sample (bgav_t *bgav) |
Check if a track is seekabkle with sample accuracy. More... | |
BGAV_PUBLIC int64_t | bgav_audio_duration (bgav_t *bgav, int stream) |
Get the audio duration. More... | |
BGAV_PUBLIC int64_t | bgav_audio_start_time (bgav_t *bgav, int stream) |
Get the audio start time. More... | |
BGAV_PUBLIC int64_t | bgav_video_duration (bgav_t *bgav, int stream) |
Get the video duration. More... | |
BGAV_PUBLIC int64_t | bgav_video_start_time (bgav_t *bgav, int stream) |
Get the video start time. More... | |
BGAV_PUBLIC int64_t | bgav_subtitle_duration (bgav_t *bgav, int stream) |
Get the subtitle duration. More... | |
BGAV_PUBLIC void | bgav_seek_audio (bgav_t *bgav, int stream, int64_t sample) |
Seek to a specific audio sample. More... | |
BGAV_PUBLIC void | bgav_seek_video (bgav_t *bgav, int stream, int64_t time) |
Seek to a specific video time. More... | |
BGAV_PUBLIC int64_t | bgav_video_keyframe_before (bgav_t *bgav, int stream, int64_t time) |
Get the time of the closest keyframe before a given time. More... | |
BGAV_PUBLIC int64_t | bgav_video_keyframe_after (bgav_t *bgav, int stream, int64_t time) |
Get the time of the closest keyframe after a given time. More... | |
BGAV_PUBLIC void | bgav_seek_subtitle (bgav_t *bgav, int stream, int64_t time) |
Seek to a specific subtitle position. More... | |
This mode is optimized for sample accurate access. To use this API, you must call bgav_options_set_sample_accurate before opening the file. After you opened the file and selected the track, you must verify, that sample accurate access is available by checking the return value of bgav_can_seek_sample.
Sample accurate mode has a little more overhead on the demultiplexer side. Therefore you should not enable it when not needed. Some formats don't allow sample accurate access, other formats are only seekable in sample accurate mode. For formats, which need to be parsed completely, index files are written to $HOME/.gmerlin-avdecoder/indices. Filenames of the indices are the MD5 sums of the filename passed to bgav_open.
Sample accurate mode also implies, that all streams can be positioned independently.
#define BGAV_TIMESTAMP_UNDEFINED GAVL_TIME_UNDEFINED |
Time value indicating an invalid time.
BGAV_PUBLIC int bgav_can_seek_sample | ( | bgav_t * | bgav | ) |
Check if a track is seekabkle with sample accuracy.
bgav | A decoder handle |
If this function returns zero, applications, which rely on bgav_seek_audio bgav_seek_video and bgav_seek_subtitle should consider the file as unsupported.
The ability of sample accurate seeking also implies, that streams can be positioned indepentently.
If bgav_options_set_sample_accurate was not called, this function will return zero for any file.
BGAV_PUBLIC int64_t bgav_audio_duration | ( | bgav_t * | bgav, |
int | stream | ||
) |
Get the audio duration.
bgav | A decoder handle |
stream | Audio stream index (starting with 0) |
Use this only after bgav_can_seek_sample returned 1. The duration is calculated from the total number or decodable samples in the file. The start time (as returned by bgav_audio_start_time) is not included in the duration.
BGAV_PUBLIC int64_t bgav_audio_start_time | ( | bgav_t * | bgav, |
int | stream | ||
) |
Get the audio start time.
bgav | A decoder handle |
stream | Audio stream index (starting with 0) |
Use this only after bgav_can_seek_sample returned 1. The returned value is equal to the timestamp of the first decoded audio frame.
BGAV_PUBLIC int64_t bgav_video_duration | ( | bgav_t * | bgav, |
int | stream | ||
) |
Get the video duration.
bgav | A decoder handle |
stream | Video stream index (starting with 0) |
Use this only after bgav_can_seek_sample returned 1. The duration is calculated from the total number or decodable frames in the file. The start time (as returned by bgav_video_start_time) is not included in the duration.
BGAV_PUBLIC int64_t bgav_video_start_time | ( | bgav_t * | bgav, |
int | stream | ||
) |
Get the video start time.
bgav | A decoder handle |
stream | Video stream index (starting with 0) |
Use this only after bgav_can_seek_sample returned 1. The returned value is equal to the timestamp of the first decoded video frame.
BGAV_PUBLIC int64_t bgav_subtitle_duration | ( | bgav_t * | bgav, |
int | stream | ||
) |
Get the subtitle duration.
bgav | A decoder handle |
stream | Subtitle stream index (starting with 0) |
Use this only after bgav_can_seek_sample returned 1.
BGAV_PUBLIC void bgav_seek_audio | ( | bgav_t * | bgav, |
int | stream, | ||
int64_t | sample | ||
) |
Seek to a specific audio sample.
bgav | A decoder handle |
stream | Audio stream index (starting with 0) |
sample | The sample to seek to |
Use this only after bgav_can_seek_sample returned 1. The time is relative to the first decodable sample (always starting with 0), the offset returned by bgav_audio_start_time is not included here.
BGAV_PUBLIC void bgav_seek_video | ( | bgav_t * | bgav, |
int | stream, | ||
int64_t | time | ||
) |
Seek to a specific video time.
bgav | A decoder handle |
stream | Video stream index (starting with 0) |
time | Time |
Use this only after bgav_can_seek_sample returned 1. If time is between 2 frames, the earlier one will be chosen. The time is relative to the first decodable frame (always starting with 0), the offset returned by bgav_video_start_time is not included here.
BGAV_PUBLIC int64_t bgav_video_keyframe_before | ( | bgav_t * | bgav, |
int | stream, | ||
int64_t | time | ||
) |
Get the time of the closest keyframe before a given time.
bgav | A decoder handle |
stream | Video stream index (starting with 0) |
time | Time |
Use this only after bgav_can_seek_sample returned 1. The time argument and return value are relative to the first decodable frame of the file i.e. not including the offset returned by bgav_video_start_time . If there is no keyframe before the given time (i.e if time was 0), this function returns BGAV_TIMESTAMP_UNDEFINED.
BGAV_PUBLIC int64_t bgav_video_keyframe_after | ( | bgav_t * | bgav, |
int | stream, | ||
int64_t | time | ||
) |
Get the time of the closest keyframe after a given time.
bgav | A decoder handle |
stream | Video stream index (starting with 0) |
time | Time |
Use this only after bgav_can_seek_sample returned 1. The time argument and return value are relative to the first decodable frame of the file i.e. not including the offset returned by bgav_video_start_time . If there is no keyframe after the given time, this function returns BGAV_TIMESTAMP_UNDEFINED.
BGAV_PUBLIC void bgav_seek_subtitle | ( | bgav_t * | bgav, |
int | stream, | ||
int64_t | time | ||
) |
Seek to a specific subtitle position.
bgav | A decoder handle |
stream | Subtitle stream index (starting with 0) |
time | Time |
Use this only after bgav_can_seek_sample returned 1. If time is between 2 subtitles, the earlier one will be chosen.