[FFmpeg-cvslog] fix flv new stream handling after head already parsed
Roman Arutyunyan
git at videolan.org
Sat Sep 1 17:58:34 CEST 2012
ffmpeg | branch: master | Roman Arutyunyan <arutyunyan.roman at gmail.com> | Sat Sep 1 13:04:57 2012 +0400| [c0daa73a0f8dcc695c27ed1029d8aa69f2968686] | committer: Michael Niedermayer
fix flv new stream handling after head already parsed
This fixes stream lookup in flv demuxer. When used with librtmp
protocol streams are sometimes added after head arrived. If the
first stream added in flv header reader is Audio stream then it
is messed with Video stream added later in the code patched.
The result is I have 2 Audio streams (first of them is said to have
a video codec like h264) instead of Audio/Video pair.
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c0daa73a0f8dcc695c27ed1029d8aa69f2968686
---
libavformat/flvdec.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 43a3723..822f381 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -709,13 +709,15 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
/* now find stream */
for(i=0;i<s->nb_streams;i++) {
st = s->streams[i];
- if (stream_type == FLV_STREAM_TYPE_AUDIO && st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
- if (flv_same_audio_codec(st->codec, flags)) {
+ if (stream_type == FLV_STREAM_TYPE_AUDIO) {
+ if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO &&
+ flv_same_audio_codec(st->codec, flags)) {
break;
}
} else
- if (stream_type == FLV_STREAM_TYPE_VIDEO && st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
- if (flv_same_video_codec(st->codec, flags)) {
+ if (stream_type == FLV_STREAM_TYPE_VIDEO) {
+ if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
+ flv_same_video_codec(st->codec, flags)) {
break;
}
} else if (st->id == stream_type) {
More information about the ffmpeg-cvslog
mailing list