On 01/08/14 13:30, wm4 wrote: > On Fri, 1 Aug 2014 03:05:43 +0200 > Luca Barbato <[email protected]> wrote: > >> And leverage the video index if the video is just disabled as wm4 >> did in an initial patch. >> --- >> libavformat/flvdec.c | 11 +++++++++-- >> 1 file changed, 9 insertions(+), 2 deletions(-) >> >> diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c >> index 8e4cc5e..d74741d 100644 >> --- a/libavformat/flvdec.c >> +++ b/libavformat/flvdec.c >> @@ -57,6 +57,7 @@ typedef struct { >> } validate_index[2]; >> int validate_next; >> int validate_count; >> + int has_video; >> } FLVContext; >> >> static int flv_probe(AVProbeData *p) >> @@ -76,11 +77,14 @@ static int flv_probe(AVProbeData *p) >> >> static AVStream *create_stream(AVFormatContext *s, int codec_type) >> { >> + FLVContext *flv = s->priv_data; >> AVStream *st = avformat_new_stream(s, NULL); >> if (!st) >> return NULL; >> st->codec->codec_type = codec_type; >> avpriv_set_pts_info(st, 32, 1, 1000); /* 32 bit pts in ms */ >> + if (codec_type == AVMEDIA_TYPE_VIDEO) >> + flv->has_video = 1; >> return st; >> } >> >> @@ -818,6 +822,11 @@ skip: >> st = create_stream(s, is_audio ? AVMEDIA_TYPE_AUDIO >> : AVMEDIA_TYPE_VIDEO); >> av_dlog(s, "%d %X %d \n", is_audio, flags, st->discard); >> + >> + if ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY || >> + !flv->has_video) >> + av_add_index_entry(st, pos, dts, size, 0, AVINDEX_KEYFRAME); >> + > > Why not "if ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY || is_audio" > instead? Maybe it's actually more correct, because it will increase the > seeking accuracy if video is disabled. Then it could jump to any audio > packet, instead only to audio packets close to a video keyframe. >
I was thinking about it, that would unbreak the samples provided by jb as well. lu _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
