Opened 12 years ago
Closed 12 years ago
#2386 closed defect (fixed)
ffmpeg creates non-PS3 compatible DivX
Reported by: | someuser | Owned by: | |
---|---|---|---|
Priority: | important | Component: | avcodec |
Version: | git-master | Keywords: | libxvid regression |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
Using the static win32 builds from zeranoe.com the DivX files created by the latest ffmpeg git version fail to play on PS3.
After testing old builds from zeranoe.com (see http://ffmpeg.zeranoe.com/builds/win32/static/) I have bisected the failure so that the build ffmpeg-git-b6ff81d-win32-static works ok (=PS3 can play the DivX) but ffmpeg-git-a4c22e3-win32-static and every build after that fail (=PS3 complains that the format is not supported).
Below are the commands I used with these two builds and as said only the former is playable with PS3. The notable change between the builds is libavutil update from 40.100 to 41.100.
How to reproduce:
> ./ffmpeg-git-b6ff81d-win32-static.exe -i test.avi -acodec libmp3lame -vcodec libxvid -level 5 -bf 2 -vtag XVID -map_metadata -1 out1.avi ffmpeg version N-38148-gb6ff81d Copyright (c) 2000-2012 the FFmpeg developers built on Feb 23 2012 12:26:05 with gcc 4.6.2 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 51. 40.100 / 51. 40.100 libavcodec 54. 4.100 / 54. 4.100 libavformat 54. 1.100 / 54. 1.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 62.101 / 2. 62.101 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 7.100 / 0. 7.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, avi, from 'test.avi': Metadata: encoder : Lavf54.59.106 Duration: 00:00:10.03, start: 0.000000, bitrate: 1227 kb/s Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (DIVX / 0x58564944), yuv420p, 576x324 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 23.98 tbn, 2997 tbc Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16, 128 kb/s [buffer @ 022EDAA0] w:576 h:324 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param: Output #0, avi, to 'out1.avi': Metadata: ISFT : Lavf54.1.100 Stream #0:0: Video: mpeg4 (XVID / 0x44495658), yuv420p, 576x324 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 23.98 tbn, 23.98 tbc Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16 Stream mapping: Stream #0:0 -> #0:0 (mpeg4 -> libxvid) Stream #0:1 -> #0:1 (mp3 -> libmp3lame) Press [q] to stop, [?] for help frame= 22 fps= 0 q=4.0 size= 30kB time=00:00:00.91 bitrate= 268.5kbits/sframe= 37 fps= 0 q=9.0 size= 72kB time=00:00:01.54 bitrate= 379.8kbits/sframe= 47 fps= 31 q=17.0 size= 105kB time=00:00:01.94 bitrate= 443.9kbits/frame= 56 fps= 27 q=22.0 size= 125kB time=00:00:02.32 bitrate= 439.9kbits/frame= 65 fps= 25 q=19.0 size= 142kB time=00:00:02.68 bitrate= 433.5kbits/frame= 73 fps= 23 q=13.0 size= 158kB time=00:00:03.04 bitrate= 424.8kbits/frame= 80 fps= 22 q=19.0 size= 184kB time=00:00:03.33 bitrate= 451.2kbits/frame= 90 fps= 22 q=26.0 size= 227kB time=00:00:03.74 bitrate= 495.6kbits/frame= 100 fps= 21 q=29.0 size= 263kB time=00:00:04.15 bitrate= 518.9kbits/frame= 110 fps= 21 q=31.0 size= 297kB time=00:00:04.58 bitrate= 529.9kbits/frame= 121 fps= 21 q=31.0 size= 331kB time=00:00:05.04 bitrate= 537.3kbits/frame= 131 fps= 21 q=31.0 size= 356kB time=00:00:05.44 bitrate= 535.1kbits/frame= 141 fps= 21 q=31.0 size= 381kB time=00:00:05.88 bitrate= 530.4kbits/frame= 151 fps= 21 q=31.0 size= 404kB time=00:00:06.28 bitrate= 526.6kbits/frame= 160 fps= 21 q=31.0 size= 430kB time=00:00:06.67 bitrate= 528.4kbits/frame= 168 fps= 20 q=31.0 size= 444kB time=00:00:06.98 bitrate= 520.7kbits/frame= 178 fps= 20 q=31.0 size= 467kB time=00:00:07.41 bitrate= 515.6kbits/frame= 187 fps= 20 q=31.0 size= 485kB time=00:00:07.79 bitrate= 509.5kbits/frame= 196 fps= 20 q=31.0 size= 504kB time=00:00:08.16 bitrate= 506.5kbits/frame= 206 fps= 20 q=31.0 size= 517kB time=00:00:08.56 bitrate= 494.8kbits/frame= 216 fps= 20 q=31.0 size= 536kB time=00:00:09.00 bitrate= 487.5kbits/frame= 226 fps= 20 q=31.0 size= 550kB time=00:00:09.40 bitrate= 479.3kbits/frame= 238 fps= 20 q=31.0 size= 568kB time=00:00:09.91 bitrate= 469.7kbits/frame= 240 fps= 20 q=31.0 Lsize= 582kB time=00:00:10.01 bitrate= 476.4kbits/s video:400kB audio:157kB global headers:0kB muxing overhead 4.555188% > ./ffmpeg-git-a4c22e3-win32-static.exe -i test.avi -acodec libmp3lame -vcodec libxvid -level 5 -bf 2 -vtag XVID -map_metadata -1 out2.avi ffmpeg version N-38292-ga4c22e3 Copyright (c) 2000-2012 the FFmpeg developers built on Feb 27 2012 14:50:39 with gcc 4.6.2 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 51. 41.100 / 51. 41.100 libavcodec 54. 4.100 / 54. 4.100 libavformat 54. 1.100 / 54. 1.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 62.101 / 2. 62.101 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 7.100 / 0. 7.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, avi, from 'test.avi': Metadata: encoder : Lavf54.59.106 Duration: 00:00:10.03, start: 0.000000, bitrate: 1227 kb/s Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (DIVX / 0x58564944), yuv420p, 576x324 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 23.98 tbn, 2997 tbc Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16, 128 kb/s [buffer @ 022FDAA0] w:576 h:324 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param: Output #0, avi, to 'out2.avi': Metadata: ISFT : Lavf54.1.100 Stream #0:0: Video: mpeg4 (XVID / 0x44495658), yuv420p, 576x324 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 23.98 tbn, 23.98 tbc Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16 Stream mapping: Stream #0:0 -> #0:0 (mpeg4 -> libxvid) Stream #0:1 -> #0:1 (mp3 -> libmp3lame) Press [q] to stop, [?] for help frame= 31 fps= 0 q=3.0 size= 39kB time=00:00:01.27 bitrate= 250.3kbits/sframe= 41 fps= 39 q=14.0 size= 84kB time=00:00:01.70 bitrate= 403.2kbits/frame= 50 fps= 31 q=23.0 size= 112kB time=00:00:02.06 bitrate= 442.6kbits/frame= 59 fps= 28 q=17.0 size= 127kB time=00:00:02.42 bitrate= 429.0kbits/frame= 67 fps= 26 q=18.0 size= 144kB time=00:00:02.78 bitrate= 424.8kbits/frame= 76 fps= 24 q=18.0 size= 167kB time=00:00:03.16 bitrate= 431.9kbits/frame= 85 fps= 23 q=20.0 size= 199kB time=00:00:03.52 bitrate= 461.5kbits/frame= 95 fps= 22 q=28.0 size= 244kB time=00:00:03.96 bitrate= 504.2kbits/frame= 105 fps= 22 q=30.0 size= 280kB time=00:00:04.36 bitrate= 524.9kbits/frame= 116 fps= 22 q=31.0 size= 315kB time=00:00:04.82 bitrate= 534.1kbits/frame= 127 fps= 21 q=31.0 size= 346kB time=00:00:05.28 bitrate= 536.3kbits/frame= 139 fps= 22 q=31.0 size= 374kB time=00:00:05.78 bitrate= 529.2kbits/frame= 148 fps= 21 q=31.0 size= 396kB time=00:00:06.16 bitrate= 526.6kbits/frame= 159 fps= 21 q=31.0 size= 423kB time=00:00:06.62 bitrate= 523.1kbits/frame= 166 fps= 21 q=31.0 size= 440kB time=00:00:06.91 bitrate= 521.6kbits/frame= 176 fps= 20 q=31.0 size= 461kB time=00:00:07.32 bitrate= 516.0kbits/frame= 186 fps= 20 q=31.0 size= 483kB time=00:00:07.75 bitrate= 509.9kbits/frame= 196 fps= 20 q=31.0 size= 503kB time=00:00:08.16 bitrate= 505.3kbits/frame= 206 fps= 20 q=31.0 size= 517kB time=00:00:08.56 bitrate= 494.8kbits/frame= 216 fps= 20 q=31.0 size= 535kB time=00:00:09.00 bitrate= 486.7kbits/frame= 226 fps= 20 q=31.0 size= 550kB time=00:00:09.40 bitrate= 479.3kbits/frame= 238 fps= 20 q=31.0 size= 568kB time=00:00:09.91 bitrate= 469.3kbits/frame= 240 fps= 20 q=31.0 Lsize= 582kB time=00:00:10.05 bitrate= 474.5kbits/s video:400kB audio:157kB global headers:0kB muxing overhead 4.559397% >
It should be noted that the following still works with current git (=the output file is playable with PS3):
./ffmpeg-git-17c1881-win32-static.exe -i test.avi -acodec libmp3lame -vcodec mpeg4 -level 5 -bf 2 -vtag XVID -map_metadata -1 out3.avi
Attachments (4)
Change History (14)
comment:1 by , 12 years ago
follow-up: 3 comment:2 by , 12 years ago
If you can provide the input video, I will try to find out which change broke ps3 encoding.
comment:3 by , 12 years ago
Replying to cehoyos:
If you can provide the input video, I will try to find out which change broke ps3 encoding.
Seems that it happens with more or less with any input video - but the one I just used to reproduce is attached to ticket 2385:
https://ffmpeg.org/trac/ffmpeg/attachment/ticket/2385/testxsub-ok.avi
Thanks!
by , 12 years ago
Attachment: | 32e7439.avi added |
---|
by , 12 years ago
Attachment: | e2cc39b.avi added |
---|
follow-up: 5 comment:4 by , 12 years ago
Component: | undetermined → avcodec |
---|---|
Keywords: | libxvid regression added |
Priority: | normal → important |
Could you confirm that 32e7439.avi plays fine while e2cc39b.avi fails?
(Sorry, I cannot test.)
Apparently a regression since e2cc39b / 4da6d19 (?).
comment:5 by , 12 years ago
Replying to cehoyos:
Could you confirm that 32e7439.avi plays fine while e2cc39b.avi fails?
(Sorry, I cannot test.)
Apparently a regression since e2cc39b / 4da6d19 (?).
Yes, 32e7439.avi plays fine, e2cc39b.avi failing.
Thanks.
comment:6 by , 12 years ago
Status: | new → open |
---|
comment:7 by , 12 years ago
Does the patch below fix the issue ?
diff --git a/libavformat/avienc.c b/libavformat/avienc.c index f2fa9dc..3511c81 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -523,7 +523,7 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) int size= pkt->size; av_dlog(s, "dts:%s packet_count:%d stream_index:%d\n", av_ts2str(pkt->dts), avist->packet_count, stream_index); - while(enc->block_align==0 && pkt->dts != AV_NOPTS_VALUE && pkt->dts > avist->packet_count && enc->codec_id != AV_CODEC_ID_XSUB){ + while(enc->block_align==0 && pkt->dts != AV_NOPTS_VALUE && pkt->dts > avist->packet_count && enc->codec_id != AV_CODEC_ID_XSUB && avist->packet_count){ AVPacket empty_packet; if(pkt->dts - avist->packet_count > 60000){
by , 12 years ago
Attachment: | e2cc39b-patched.avi added |
---|
by , 12 years ago
Attachment: | 5a65fea-patched.avi added |
---|
comment:8 by , 12 years ago
I attached two files to simplify testing (both made with the patch applied).
comment:9 by , 12 years ago
Great news, the patch helps - both of the files e2cc39b-patched.avi and 5a65fea-patched.avi play nicely!
Thanks!
comment:10 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Fixed by Michael, thank you for the report!
There are 144 commits between b6ff81d and a4c22e3. Can you find out which exact commit causes the regression ?