[FFmpeg-trac] #8605(avformat:new): DV25 flagged as progressive in AVI vprp chunk
FFmpeg
trac at avcodec.org
Wed Apr 8 14:31:07 EEST 2020
#8605: DV25 flagged as progressive in AVI vprp chunk
----------------------------------+--------------------------------------
Reporter: Zenitram | Type: defect
Status: new | Priority: normal
Component: avformat | Version: git-master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+--------------------------------------
Summary of the bug:
DV25 is interlaced (the only progressive DV are "DVCPRO Progressive"
format at 50 Mbps, and DVCPRO HD), but is sometimes flagged as progressive
when muxed in AVI by FFmpeg.
DV --> MOV: OK (no "fiel" atom written)
DV --> AVI: NOK ("vprp" chunk written with FieldPerFrame set to 1)
DV in MOV with correct "fiel" atom -> AVI: OK ("vprp" chunk written with
FieldPerFrame set to 2)
DV in AVI with correct "vprp" chunk -> AVI: NOK ("vprp" chunk written with
FieldPerFrame set to 1)
First command is DV in AVI direct creation (wrong "vprp").
Second and third command are transwrapping from DV in MOV (edited for
injecting a "fiel" atom, attached) to AVI (this one is OK, correct
"vprp"), then AVI to AVI (this one is NOK, wrong "vprp").
How to reproduce:
{{{
ffmpeg -f lavfi -i testsrc=size=720x576 -vcodec dvvideo -r 25 -acodec
pcm_s16be -ac 2 -vframes 1 dvpp_direct.avi
ffmpeg version git-2020-04-03-52523b6 Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9.3.1 (GCC) 20200328
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
--enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
--enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-
amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-
libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-
cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2
--enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 42.102 / 56. 42.102
libavcodec 58. 77.101 / 58. 77.101
libavformat 58. 42.100 / 58. 42.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 77.101 / 7. 77.101
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, lavfi, from 'testsrc=size=720x576':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 720x576
[SAR 1:1 DAR 5:4], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> dvvideo (native))
Press [q] to stop, [?] for help
Output #0, avi, to 'dvpp_direct.avi':
Metadata:
ISFT : Lavf58.42.100
Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv420p, 720x576 [SAR
1:1 DAR 5:4], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.77.101 dvvideo
frame= 1 fps=0.0 q=-0.0 Lsize= 146kB time=00:00:00.04
bitrate=29957.2kbits/s speed=2.67x
video:141kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 4.018055%
If you check the content of "vprp" chunck with an AVI debug tool, you can
see e.g.:
010F4 Video properties (76 bytes)
010F4 Header (8 bytes)
010F4 Name: vprp
010F8 Size: 68 (0x00000044)
010FC VideoFormatToken: 0 (0x00000000)
01100 VideoStandard: 0 (0x00000000)
01104 VerticalRefreshRate: 25 (0x00000019)
01108 HTotalInT: 720 (0x000002D0)
0110C VTotalInLines: 576 (0x00000240)
01110 FrameAspectRatio Height: 4 (0x0004)
01112 FrameAspectRatio Width: 5 (0x0005)
01114 FrameWidthInPixels: 720 (0x000002D0)
01118 FrameHeightInLines: 576 (0x00000240)
0111C FieldPerFrame: 1 (0x00000001)
01120 Field (32 bytes)
01120 CompressedBMHeight: 576 (0x00000240)
01124 CompressedBMWidth: 720 (0x000002D0)
01128 ValidBMHeight: 576 (0x00000240)
0112C ValidBMWidth: 720 (0x000002D0)
01130 ValidBMXOffset: 0 (0x00000000)
01134 ValidBMYOffset: 0 (0x00000000)
01138 VideoXOffsetInT: 0 (0x00000000)
0113C VideoYValidStartLine: 0 (0x00000000)
***
ffmpeg -i dvpp_fiel.mov -c:v copy dvpp_fiel.avi
ffmpeg version git-2020-04-03-52523b6 Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9.3.1 (GCC) 20200328
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
--enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
--enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-
amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-
libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-
cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2
--enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 42.102 / 56. 42.102
libavcodec 58. 77.101 / 58. 77.101
libavformat 58. 42.100 / 58. 42.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 77.101 / 7. 77.101
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'dvpp_fiel.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Manual edited
Duration: 00:00:00.04, start: 0.000000, bitrate: 29085 kb/s
Stream #0:0: Video: dvvideo (dvcp / 0x70637664), yuv420p(bottom coded
first (swapped)), 720x576 [SAR 16:15 DAR 4:3], 28800 kb/s, 25 fps, 25 tbr,
12800 tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
timecode : 00:00:00:00
Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
Metadata:
handler_name : TimeCodeHandler
timecode : 00:00:00:00
Output #0, avi, to 'dvpp_fiel.avi':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
ISFT : Lavf58.42.100
Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv420p(bottom coded
first (swapped)), 720x576 [SAR 16:15 DAR 4:3], q=2-31, 28800 kb/s, 25 fps,
25 tbr, 50 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
timecode : 00:00:00:00
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=-1.0 Lsize= 146kB time=00:00:00.02
bitrate=59936.8kbits/s speed= 20x
video:141kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 4.056944%
If you check the content of "vprp" chunck with an AVI debug tool, you can
see e.g.:
010F4 Video properties (108 bytes)
010F4 Header (8 bytes)
010F4 Name: vprp
010F8 Size: 100 (0x00000064)
010FC VideoFormatToken: 0 (0x00000000)
01100 VideoStandard: 0 (0x00000000)
01104 VerticalRefreshRate: 50 (0x00000032)
01108 HTotalInT: 720 (0x000002D0)
0110C VTotalInLines: 576 (0x00000240)
01110 FrameAspectRatio Height: 3 (0x0003)
01112 FrameAspectRatio Width: 4 (0x0004)
01114 FrameWidthInPixels: 720 (0x000002D0)
01118 FrameHeightInLines: 576 (0x00000240)
0111C FieldPerFrame: 2 (0x00000002)
01120 Field (32 bytes)
01120 CompressedBMHeight: 288 (0x00000120)
01124 CompressedBMWidth: 720 (0x000002D0)
01128 ValidBMHeight: 288 (0x00000120)
0112C ValidBMWidth: 720 (0x000002D0)
01130 ValidBMXOffset: 0 (0x00000000)
01134 ValidBMYOffset: 0 (0x00000000)
01138 VideoXOffsetInT: 0 (0x00000000)
0113C VideoYValidStartLine: 1 (0x00000001)
01140 Field (32 bytes)
01140 CompressedBMHeight: 288 (0x00000120)
01144 CompressedBMWidth: 720 (0x000002D0)
01148 ValidBMHeight: 288 (0x00000120)
0114C ValidBMWidth: 720 (0x000002D0)
01150 ValidBMXOffset: 0 (0x00000000)
01154 ValidBMYOffset: 0 (0x00000000)
01158 VideoXOffsetInT: 0 (0x00000000)
0115C VideoYValidStartLine: 0 (0x00000000)
ffmpeg -i dvpp_fiel.avi -c:v copy dvpp_fiel2.avi
ffmpeg version git-2020-04-03-52523b6 Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 9.3.1 (GCC) 20200328
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
--enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
--enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-
amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-
libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-
cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2
--enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 42.102 / 56. 42.102
libavcodec 58. 77.101 / 58. 77.101
libavformat 58. 42.100 / 58. 42.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 77.101 / 7. 77.101
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, avi, from 'dvpp_fiel.avi':
Metadata:
encoder : Lavf58.42.100
Duration: 00:00:00.04, start: 0.000000, bitrate: 29968 kb/s
Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv420p, 720x576 [SAR
16:15 DAR 4:3], 50 fps, 25 tbr, 50 tbn, 25 tbc
Output #0, avi, to 'dvpp_fiel2.avi':
Metadata:
ISFT : Lavf58.42.100
Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv420p, 720x576 [SAR
16:15 DAR 4:3], q=2-31, 50 fps, 25 tbr, 50 tbn, 50 tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 2 fps=0.0 q=-1.0 Lsize= 146kB time=00:00:00.04
bitrate=29966.8kbits/s speed=N/A
video:141kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 4.051389%
If you check the content of "vprp" chunck with an AVI debug tool, you can
see e.g.:
010F4 Video properties (76 bytes)
010F4 Header (8 bytes)
010F4 Name: vprp
010F8 Size: 68 (0x00000044)
010FC VideoFormatToken: 0 (0x00000000)
01100 VideoStandard: 0 (0x00000000)
01104 VerticalRefreshRate: 50 (0x00000032)
01108 HTotalInT: 720 (0x000002D0)
0110C VTotalInLines: 576 (0x00000240)
01110 FrameAspectRatio Height: 3 (0x0003)
01112 FrameAspectRatio Width: 4 (0x0004)
01114 FrameWidthInPixels: 720 (0x000002D0)
01118 FrameHeightInLines: 576 (0x00000240)
0111C FieldPerFrame: 1 (0x00000001)
01120 Field (32 bytes)
01120 CompressedBMHeight: 576 (0x00000240)
01124 CompressedBMWidth: 720 (0x000002D0)
01128 ValidBMHeight: 576 (0x00000240)
0112C ValidBMWidth: 720 (0x000002D0)
01130 ValidBMXOffset: 0 (0x00000000)
01134 ValidBMYOffset: 0 (0x00000000)
01138 VideoXOffsetInT: 0 (0x00000000)
0113C VideoYValidStartLine: 0 (0x00000000)
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8605>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list