diff options
author | Paul B Mahol <onemda@gmail.com> | 2020-09-10 22:36:48 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2020-09-13 16:05:01 +0200 |
commit | cd67bf2a280fb3d2038756e523666b0bd1d1d6fc (patch) | |
tree | 785d3859bd4ebfac74ee13ee2e3a6dc11349b9cf /libavformat/moflex.c | |
parent | bd7d832e84598fbcce06cebb1d730dad5d3db1ce (diff) | |
download | ffmpeg-cd67bf2a280fb3d2038756e523666b0bd1d1d6fc.tar.gz |
avformat/moflex: make seeking more useful
Diffstat (limited to 'libavformat/moflex.c')
-rw-r--r-- | libavformat/moflex.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/libavformat/moflex.c b/libavformat/moflex.c index 747e32f079..2111157408 100644 --- a/libavformat/moflex.c +++ b/libavformat/moflex.c @@ -327,7 +327,13 @@ static int moflex_read_packet(AVFormatContext *s, AVPacket *pkt) av_packet_move_ref(pkt, packet); pkt->pos = m->pos; pkt->stream_index = stream_index; - pkt->flags |= AV_PKT_FLAG_KEY; + if (s->streams[stream_index]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { + pkt->duration = 1; + if (pkt->data[0] & 0x80) + pkt->flags |= AV_PKT_FLAG_KEY; + } else { + pkt->flags |= AV_PKT_FLAG_KEY; + } return ret; } } @@ -341,6 +347,16 @@ static int moflex_read_packet(AVFormatContext *s, AVPacket *pkt) return AVERROR_EOF; } +static int moflex_read_seek(AVFormatContext *s, int stream_index, + int64_t pts, int flags) +{ + MOFLEXDemuxContext *m = s->priv_data; + + m->in_block = 0; + + return -1; +} + static int moflex_read_close(AVFormatContext *s) { for (int i = 0; i < s->nb_streams; i++) { @@ -360,6 +376,7 @@ AVInputFormat ff_moflex_demuxer = { .read_probe = moflex_probe, .read_header = moflex_read_header, .read_packet = moflex_read_packet, + .read_seek = moflex_read_seek, .read_close = moflex_read_close, .extensions = "moflex", .flags = AVFMT_GENERIC_INDEX, |