[FFmpeg-devel] [PATCH 09/15] lavf/brstm: add support for seeking
Paul B Mahol
onemda at gmail.com
Sat Jun 20 19:16:23 CEST 2015
Dana 20. 6. 2015. 12:02 osoba "Rodger Combs" <rodger.combs at gmail.com>
napisala je:
>
> ---
> libavformat/brstm.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/libavformat/brstm.c b/libavformat/brstm.c
> index e3c6142..0014b48 100644
> --- a/libavformat/brstm.c
> +++ b/libavformat/brstm.c
> @@ -32,6 +32,7 @@ typedef struct BRSTMDemuxContext {
> uint32_t last_block_used_bytes;
> uint32_t last_block_size;
> uint32_t last_block_samples;
> + uint32_t data_start;
> uint8_t *table;
> uint8_t *adpc;
> int little_endian;
> @@ -312,6 +313,8 @@ static int read_header(AVFormatContext *s)
> codec == AV_CODEC_ID_ADPCM_THP_LE))
> avio_skip(s->pb, 24);
>
> + b->data_start = avio_tell(s->pb);
> +
> if ((major != 1 || minor) && !bfstm)
> avpriv_request_sample(s, "Version %d.%d", major, minor);
>
> @@ -391,6 +394,24 @@ static int read_packet(AVFormatContext *s, AVPacket
*pkt)
> return ret;
> }
>
> +static int read_seek(AVFormatContext *s, int stream_index,
> + int64_t timestamp, int flags)
> +{
> + AVStream *st = s->streams[stream_index];
> + BRSTMDemuxContext *b = s->priv_data;
> + int64_t ret = 0;
> +
> + timestamp /= b->samples_per_block;
> + ret = avio_seek(s->pb, b->data_start + timestamp * b->block_size *
> + st->codec->channels, SEEK_SET);
> + if (ret < 0)
> + return ret;
> +
> + b->current_block = timestamp;
> + ff_update_cur_dts(s, st, timestamp * b->samples_per_block);
> + return 0;
> +}
> +
> AVInputFormat ff_brstm_demuxer = {
> .name = "brstm",
> .long_name = NULL_IF_CONFIG_SMALL("BRSTM (Binary Revolution
Stream)"),
> @@ -399,6 +420,7 @@ AVInputFormat ff_brstm_demuxer = {
> .read_header = read_header,
> .read_packet = read_packet,
> .read_close = read_close,
> + .read_seek = read_seek,
> .extensions = "brstm",
> };
>
> @@ -410,5 +432,6 @@ AVInputFormat ff_bfstm_demuxer = {
> .read_header = read_header,
> .read_packet = read_packet,
> .read_close = read_close,
> + .read_seek = read_seek,
> .extensions = "bfstm,bcstm",
> };
> --
> 2.4.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
LGTM
More information about the ffmpeg-devel
mailing list