[FFmpeg-soc] [soc]: r4669 - concat/libavformat/utils.c.diff
gkovacs
subversion at mplayerhq.hu
Sun Jul 12 09:13:45 CEST 2009
Author: gkovacs
Date: Sun Jul 12 09:13:45 2009
New Revision: 4669
Log:
allow pkt->stream to survive av_read_frame_internal mangling
Modified:
concat/libavformat/utils.c.diff
Modified: concat/libavformat/utils.c.diff
==============================================================================
--- concat/libavformat/utils.c.diff Sun Jul 12 09:08:37 2009 (r4668)
+++ concat/libavformat/utils.c.diff Sun Jul 12 09:13:45 2009 (r4669)
@@ -1 +1,44 @@
-
+diff --git a/libavformat/utils.c b/libavformat/utils.c
+index cd18971..39279a4 100644
+--- a/libavformat/utils.c
++++ b/libavformat/utils.c
+@@ -908,6 +908,10 @@ static int av_read_frame_internal(AVFormatContext *s, AVPacket *pkt)
+ {
+ AVStream *st;
+ int len, ret, i;
++ int stream_index;
++ AVStream *stream;
++ stream_index = 0;
++ stream = 0;
+
+ av_init_packet(pkt);
+
+@@ -941,8 +945,14 @@ static int av_read_frame_internal(AVFormatContext *s, AVPacket *pkt)
+ /* return packet if any */
+ if (pkt->size) {
+ got_packet:
++ if (stream && stream->codec && stream->codec->codec) {
++ pkt->stream = stream;
++ pkt->stream_index = stream_index;
++ } else {
++ pkt->stream = st;
++ pkt->stream_index = st->index;
++ }
+ pkt->duration = 0;
+- pkt->stream_index = st->index;
+ pkt->pts = st->parser->pts;
+ pkt->dts = st->parser->dts;
+ pkt->pos = st->parser->pos;
+@@ -978,8 +988,11 @@ static int av_read_frame_internal(AVFormatContext *s, AVPacket *pkt)
+ NULL, 0,
+ AV_NOPTS_VALUE, AV_NOPTS_VALUE,
+ AV_NOPTS_VALUE);
+- if (pkt->size)
++ if (pkt->size) {
++ stream_index = cur_pkt.stream_index;
++ stream = cur_pkt.stream;
+ goto got_packet;
++ }
+ }
+ }
+ /* no more packets: really terminate parsing */
More information about the FFmpeg-soc
mailing list