Fixes sync in some samples (e.g. bugs 7581 and 8374 in VLC). Based on a commit by Matthieu Bouron <matthieu.bouron@gmail.com> Reported-by: Jean-Baptiste Kempf <jb@videolan.org> CC: libav-stable@libav.orgtags/n2.1
@@ -1528,8 +1528,16 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) | |||
st->codec->channels = descriptor->channels; | |||
st->codec->bits_per_coded_sample = descriptor->bits_per_sample; | |||
if (descriptor->sample_rate.den > 0) | |||
if (descriptor->sample_rate.den > 0) { | |||
st->codec->sample_rate = descriptor->sample_rate.num / descriptor->sample_rate.den; | |||
avpriv_set_pts_info(st, 64, descriptor->sample_rate.den, descriptor->sample_rate.num); | |||
} else { | |||
av_log(mxf->fc, AV_LOG_WARNING, "invalid sample rate (%d/%d) " | |||
"found for stream #%, time base forced to 1/48000\n", | |||
descriptor->sample_rate.num, descriptor->sample_rate.den, | |||
st->index); | |||
avpriv_set_pts_info(st, 64, 1, 48000); | |||
} | |||
/* TODO: implement AV_CODEC_ID_RAWAUDIO */ | |||
if (st->codec->codec_id == AV_CODEC_ID_PCM_S16LE) { | |||
@@ -1,7 +1,7 @@ | |||
#tb 0: 1/25 | |||
#tb 1: 1/25 | |||
#tb 1: 1/8000 | |||
0, 0, -9223372036854775808, 1, 8468, 0xc0855553 | |||
1, 0, 0, 50, 32000, 0x479155e6 | |||
1, 0, 0, 16000, 32000, 0x479155e6 | |||
0, 1, -9223372036854775808, 1, 3814, 0xa10783b4 | |||
0, 2, -9223372036854775808, 1, 3747, 0xb7bf6973 | |||
0, 3, -9223372036854775808, 1, 3705, 0x5462a600 | |||
@@ -52,7 +52,7 @@ | |||
0, 48, -9223372036854775808, 1, 3688, 0x1db45852 | |||
0, 49, -9223372036854775808, 1, 38412, 0x2ee26a63 | |||
0, 50, -9223372036854775808, 1, 8385, 0x0bc20a27 | |||
1, 50, 50, 50, 32000, 0x8f7e5009 | |||
1, 16000, 16000, 16000, 32000, 0x8f7e5009 | |||
0, 51, -9223372036854775808, 1, 3733, 0xa3e2a9a0 | |||
0, 52, -9223372036854775808, 1, 3773, 0x27769caa | |||
0, 53, -9223372036854775808, 1, 3670, 0xc8335e98 | |||
@@ -7,8 +7,8 @@ ret: 0 st: 0 flags:0 ts: 0.800000 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret: 0 st: 0 flags:1 ts:-0.320000 | |||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret:-1 st: 1 flags:0 ts: 2.560000 | |||
ret: 0 st: 1 flags:1 ts: 1.480000 | |||
ret:-1 st: 1 flags:0 ts: 2.576667 | |||
ret: 0 st: 1 flags:1 ts: 1.470833 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret: 0 st:-1 flags:0 ts: 0.365002 | |||
ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24787 | |||
@@ -17,9 +17,9 @@ ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret:-1 st: 0 flags:0 ts: 2.160000 | |||
ret: 0 st: 0 flags:1 ts: 1.040000 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret: 0 st: 1 flags:0 ts:-0.040000 | |||
ret: 0 st: 1 flags:0 ts:-0.058333 | |||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret: 0 st: 1 flags:1 ts: 2.840000 | |||
ret: 0 st: 1 flags:1 ts: 2.835833 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret:-1 st:-1 flags:0 ts: 1.730004 | |||
ret: 0 st:-1 flags:1 ts: 0.624171 | |||
@@ -28,9 +28,9 @@ ret: 0 st: 0 flags:0 ts:-0.480000 | |||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret: 0 st: 0 flags:1 ts: 2.400000 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret:-1 st: 1 flags:0 ts: 1.320000 | |||
ret: 0 st: 1 flags:1 ts: 0.200000 | |||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret:-1 st: 1 flags:0 ts: 1.306667 | |||
ret: 0 st: 1 flags:1 ts: 0.200833 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret: 0 st:-1 flags:0 ts:-0.904994 | |||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret: 0 st:-1 flags:1 ts: 1.989173 | |||
@@ -39,8 +39,8 @@ ret: 0 st: 0 flags:0 ts: 0.880000 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret: 0 st: 0 flags:1 ts:-0.240000 | |||
ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 | |||
ret:-1 st: 1 flags:0 ts: 2.680000 | |||
ret: 0 st: 1 flags:1 ts: 1.560000 | |||
ret:-1 st: 1 flags:0 ts: 2.671667 | |||
ret: 0 st: 1 flags:1 ts: 1.565833 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
ret: 0 st:-1 flags:0 ts: 0.460008 | |||
ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24712 | |||
@@ -7,10 +7,10 @@ ret: 0 st: 0 flags:0 ts: 0.800000 | |||
ret: 0 st: 0 flags:1 dts: 0.800000 pts: 0.800000 pos:4265984 size:150000 | |||
ret: 0 st: 0 flags:1 ts:-0.320000 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 6144 size:150000 | |||
ret: 0 st: 1 flags:0 ts: 2.560000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 1.480000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:0 ts: 2.576667 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 1.470833 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st:-1 flags:0 ts: 0.365002 | |||
ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos:1923072 size:150000 | |||
ret: 0 st:-1 flags:1 ts:-0.740831 | |||
@@ -19,10 +19,10 @@ ret: 0 st: 0 flags:0 ts: 2.160000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 0 flags:1 ts: 1.040000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:0 ts:-0.040000 | |||
ret: 0 st: 1 flags:0 ts:-0.058333 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 6144 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 2.840000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 2.835833 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st:-1 flags:0 ts: 1.730004 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st:-1 flags:1 ts: 0.624171 | |||
@@ -31,10 +31,10 @@ ret: 0 st: 0 flags:0 ts:-0.480000 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 6144 size:150000 | |||
ret: 0 st: 0 flags:1 ts: 2.400000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:0 ts: 1.320000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 0.200000 | |||
ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos:1071104 size:150000 | |||
ret: 0 st: 1 flags:0 ts: 1.306667 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 0.200833 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st:-1 flags:0 ts:-0.904994 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 6144 size:150000 | |||
ret: 0 st:-1 flags:1 ts: 1.989173 | |||
@@ -43,10 +43,10 @@ ret: 0 st: 0 flags:0 ts: 0.880000 | |||
ret: 0 st: 0 flags:1 dts: 0.880000 pts: 0.880000 pos:4691968 size:150000 | |||
ret: 0 st: 0 flags:1 ts:-0.240000 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 6144 size:150000 | |||
ret: 0 st: 1 flags:0 ts: 2.680000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 1.560000 | |||
ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:0 ts: 2.671667 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st: 1 flags:1 ts: 1.565833 | |||
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:5117952 size:150000 | |||
ret: 0 st:-1 flags:0 ts: 0.460008 | |||
ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos:2562048 size:150000 | |||
ret: 0 st:-1 flags:1 ts:-0.645825 | |||