Add AVFMT_GENERIC_INDEX support also for formats that do not use a parser.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 14 Mar 2009 21:46:00 +0000 (21:46 +0000)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 14 Mar 2009 21:46:00 +0000 (21:46 +0000)
Originally committed as revision 17965 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/utils.c

index e371d5d..7419cc6 100644 (file)
@@ -954,6 +954,11 @@ static int av_read_frame_internal(AVFormatContext *s, AVPacket *pkt)
                 *pkt = st->cur_pkt; st->cur_pkt.data= NULL;
                 compute_pkt_fields(s, st, NULL, pkt);
                 s->cur_st = NULL;
+                if ((s->iformat->flags & AVFMT_GENERIC_INDEX) &&
+                    (pkt->flags & PKT_FLAG_KEY) && pkt->dts != AV_NOPTS_VALUE) {
+                    ff_reduce_index(s, st->index);
+                    av_add_index_entry(st, pkt->pos, pkt->dts, 0, 0, AVINDEX_KEYFRAME);
+                }
                 break;
             } else if (st->cur_len > 0 && st->discard < AVDISCARD_ALL) {
                 len = av_parser_parse2(st->parser, st->codec, &pkt->data, &pkt->size,