[FFmpeg-cvslog] avformat/rsd: implement seeking
Paul B Mahol
git at videolan.org
Fri Nov 20 20:52:52 CET 2015
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri Nov 20 20:51:22 2015 +0100| [b885d9ced59c878bc05da8304602cfcc2d69438e] | committer: Paul B Mahol
avformat/rsd: implement seeking
Signed-off-by: Paul B Mahol <onemda at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b885d9ced59c878bc05da8304602cfcc2d69438e
---
libavformat/rsd.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/libavformat/rsd.c b/libavformat/rsd.c
index a0bc8fc..dd1f372 100644
--- a/libavformat/rsd.c
+++ b/libavformat/rsd.c
@@ -171,10 +171,12 @@ static int rsd_read_packet(AVFormatContext *s, AVPacket *pkt)
{
AVCodecContext *codec = s->streams[0]->codec;
int ret, size = 1024;
+ int64_t pos;
if (avio_feof(s->pb))
return AVERROR_EOF;
+ pos = avio_tell(s->pb);
if (codec->codec_id == AV_CODEC_ID_ADPCM_IMA_RAD ||
codec->codec_id == AV_CODEC_ID_ADPCM_PSX ||
codec->codec_id == AV_CODEC_ID_ADPCM_IMA_WAV ||
@@ -198,6 +200,10 @@ static int rsd_read_packet(AVFormatContext *s, AVPacket *pkt)
ret = av_get_packet(s->pb, pkt, size);
}
+ if (codec->codec_id == AV_CODEC_ID_XMA2 && pkt->size >= 1)
+ pkt->duration = (pkt->data[0] >> 2) * 512;
+
+ pkt->pos = pos;
pkt->stream_index = 0;
return ret;
@@ -211,4 +217,5 @@ AVInputFormat ff_rsd_demuxer = {
.read_packet = rsd_read_packet,
.extensions = "rsd",
.codec_tag = (const AVCodecTag* const []){rsd_tags, 0},
+ .flags = AVFMT_GENERIC_INDEX,
};
More information about the ffmpeg-cvslog
mailing list