summaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-07-24 17:34:13 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-07-25 01:57:25 +0200
commit1c2beff04a661b398266a8655c6e55ab47791002 (patch)
treea04785ec976707172e12e11cfea8789149e72e44 /libavformat
parent72743aef03f7933f89ede398ca2c2a8a8ab90cd4 (diff)
downloadffmpeg-streaming-1c2beff04a661b398266a8655c6e55ab47791002.zip
ffmpeg-streaming-1c2beff04a661b398266a8655c6e55ab47791002.tar.gz
lavf: Set pos for all packets of AVSTREAM_PARSE_FULL_RAW files.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/avformat.h4
-rw-r--r--libavformat/utils.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 1837733..659bd64 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -578,7 +578,9 @@ enum AVStreamParseType {
AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */
AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */
AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */
- AVSTREAM_PARSE_FULL_RAW=MKTAG(0,'R','A','W'), /**< full parsing and repack with timestamp generation for raw */
+ AVSTREAM_PARSE_FULL_RAW=MKTAG(0,'R','A','W'), /**< full parsing and repack with timestamp and position generation by parser for raw
+ this assumes that each packet in the file contains no demuxer level headers and
+ just codec level data, otherwise position generaion would fail */
};
typedef struct AVIndexEntry {
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 4dde821..5759f94 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1216,6 +1216,9 @@ static int parse_packet(AVFormatContext *s, AVPacket *pkt, int stream_index)
out_pkt.dts = st->parser->dts;
out_pkt.pos = st->parser->pos;
+ if(st->need_parsing == AVSTREAM_PARSE_FULL_RAW)
+ out_pkt.pos = st->parser->frame_offset;
+
if (st->parser->key_frame == 1 ||
(st->parser->key_frame == -1 &&
st->parser->pict_type == AV_PICTURE_TYPE_I))
OpenPOWER on IntegriCloud