[FFmpeg-cvslog] r13643 - in trunk: libavcodec/mpegvideo_parser.c tests/seek.regression.ref
michael
subversion
Tue Jun 3 04:43:17 CEST 2008
Author: michael
Date: Tue Jun 3 04:43:17 2008
New Revision: 13643
Log:
In mpeg1/2 timestamps (against all logic) are associated with
picture start codes and not with access units. Fix the parser to
handle that properly. This was a very long standing bug ...
The change to the seek regressions is because the mpeg ts muxer
stores too many invalid and randomized timestamps which overflow
the 4 entry buffer we use in the parser.
Modified:
trunk/libavcodec/mpegvideo_parser.c
trunk/tests/seek.regression.ref
Modified: trunk/libavcodec/mpegvideo_parser.c
==============================================================================
--- trunk/libavcodec/mpegvideo_parser.c (original)
+++ trunk/libavcodec/mpegvideo_parser.c Tue Jun 3 04:43:17 2008
@@ -29,6 +29,7 @@ static void mpegvideo_extract_headers(AV
{
ParseContext1 *pc = s->priv_data;
const uint8_t *buf_end;
+ const uint8_t *buf_start= buf;
uint32_t start_code;
int frame_rate_index, ext_type, bytes_left;
int frame_rate_ext_n, frame_rate_ext_d;
@@ -43,6 +44,8 @@ static void mpegvideo_extract_headers(AV
bytes_left = buf_end - buf;
switch(start_code) {
case PICTURE_START_CODE:
+ ff_fetch_timestamp(s, buf-buf_start-4, 1);
+
if (bytes_left >= 2) {
s->pict_type = (buf[1] >> 3) & 7;
}
Modified: trunk/tests/seek.regression.ref
==============================================================================
--- trunk/tests/seek.regression.ref (original)
+++ trunk/tests/seek.regression.ref Tue Jun 3 04:43:17 2008
@@ -3481,7 +3481,7 @@ ret:-1 st:-1 ts:0.460008 flags:0
ret:-1 st:-1 ts:-0.645825 flags:1
----------------
tests/data/b-libav.ts
-ret: 0 st: 0 dts:-0.040000 pts:0.000000 pos:-1 size:24921 flags:1
+ret: 0 st: 0 dts:0.000000 pts:-102481911520608.625000 pos:-1 size:24921 flags:1
ret: 0 st:-1 ts:-1.000000 flags:0
ret: 0 st: 0 dts:0.000000 pts:-102481911520608.625000 pos:-1 size:22036 flags:1
ret: 0 st:-1 ts:1.894167 flags:1
More information about the ffmpeg-cvslog
mailing list