#8376 closed defect (invalid)
hevc_vaapi loses aspect ratio during encoding
Reported by: | Evren Yurtesen | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avcodec |
Version: | git-master | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
I am using ffmpeg version 4.1.4-1build2 with Radeon RX570 which supports HEVC encoding through VAAPI. I can test a more recent build if required.
When VAAPI is used the aspect ratio setting is lost. 720x576 (AR 16:9) video enters and output is only 720x576. So the players show it with wrong aspect ratio.
Using --aspect option does not seem to have any effect output file.
libva info: VA-API version 1.5.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_1_5 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.5 (libva 2.5.0) vainfo: Driver version: Mesa Gallium driver 19.2.1 for Radeon RX 570 Series (POLARIS10, DRM 3.33.0, 5.3.0-19-generic, LLVM 9.0.0) vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice VAProfileHEVCMain10 : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc
Here is a 6MB test file (720x576 (AR 16:9)) (~6mb)
https://drive.google.com/file/d/1-IDAYhfj93aPJPizWKttpfGV-KVPKKSx/view
The output file ends up as (720x576) only without AR setting. (~1mb)
https://drive.google.com/file/d/1mHbzcrAbN2zHVCgEkUTlqTDyCyC6yvPw/view
How to reproduce:
/usr/bin/ffmpeg -vaapi_device /dev/dri/renderD128 -i yks.ts -vf 'yadif,format=nv12,hwupload' -c:v h264_vaapi -c:a copy out.ts ffmpeg version 4.1.4-1build2 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 9 (Ubuntu 9.2.1-4ubuntu1) configuration: --prefix=/usr --extra-version=1build2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 [mpegts @ 0x560df48a61c0] PES packet size mismatch Input #0, mpegts, from 'yks.ts': Duration: 00:00:10.85, start: 31818.542544, bitrate: 5027 kb/s Program 1 Metadata: service_name : Liv service_provider: Nelonen Stream #0:0[0x204]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt470bg, top first), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc Stream #0:1[0x2b2](fin): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 192 kb/s File 'out.ts' already exists. Overwrite ? [y/N] y Stream mapping: Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (h264_vaapi)) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help [h264_vaapi @ 0x560df48adc80] Driver does not support some wanted packed headers (wanted 0xd, found 0). Output #0, mpegts, to 'out.ts': Metadata: encoder : Lavf58.20.100 Stream #0:0: Video: h264 (h264_vaapi) (High), vaapi_vld, 720x576 [SAR 64:45 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc Metadata: encoder : Lavc58.35.100 h264_vaapi Stream #0:1(fin): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 192 kb/s [mpegts @ 0x560df48a61c0] PES packet size mismatch:00:10.52 bitrate=2790.9kbits/s speed=6.98x frame= 261 fps=168 q=-0.0 Lsize= 3942kB time=00:00:10.80 bitrate=2990.2kbits/s speed=6.95x video:3372kB audio:248kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 8.896013%
Attachments (2)
Change History (11)
by , 5 years ago
comment:1 by , 5 years ago
Looks like I put wrong output to original post. Here is the output with files attached to the bugreport
$ /usr/bin/ffmpeg -vaapi_device /dev/dri/renderD128 -i yks.ts -vf 'format=nv12,hwupload' -c:v hevc_vaapi -qp 30 -c:a copy out.ts ffmpeg version 4.1.4-1build2 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 9 (Ubuntu 9.2.1-4ubuntu1) configuration: --prefix=/usr --extra-version=1build2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Input #0, mpegts, from 'yks.ts': Duration: 00:00:10.84, start: 1.400000, bitrate: 776 kb/s Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: hevc (Main) ([36][0][0][0] / 0x0024), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 25 tbc Stream #0:1[0x101](fin): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s Stream mapping: Stream #0:0 -> #0:0 (hevc (native) -> hevc (hevc_vaapi)) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help [hevc_vaapi @ 0x561daf05c740] Driver does not support some wanted packed headers (wanted 0xd, found 0). Output #0, mpegts, to 'out.ts': Metadata: encoder : Lavf58.20.100 Stream #0:0: Video: hevc (hevc_vaapi) (Main), vaapi_vld, 720x576 [SAR 64:45 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc Metadata: encoder : Lavc58.35.100 hevc_vaapi Stream #0:1(fin): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s frame= 261 fps=0.0 q=-0.0 Lsize= 985kB time=00:00:10.80 bitrate= 747.1kbits/s speed=17.4x video:634kB audio:248kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 11.766870%
comment:2 by , 5 years ago
Version: | 4.1.4 → git-master |
---|
Tested with git-master and same problem exists (using same test file):
./ffmpeg -vaapi_device /dev/dri/renderD128 -i yks.ts -vf 'format=nv12,hwupload' -c:v hevc_vaapi -qp 30 -c:a copy out.ts ffmpeg version N-95710-gb25b6432a7 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8 (Ubuntu 8.3.0-23ubuntu2) configuration: --enable-vaapi libavutil 56. 35.101 / 56. 35.101 libavcodec 58. 61.100 / 58. 61.100 libavformat 58. 34.101 / 58. 34.101 libavdevice 58. 9.100 / 58. 9.100 libavfilter 7. 66.100 / 7. 66.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 Input #0, mpegts, from 'yks.ts': Duration: 00:00:10.84, start: 1.400000, bitrate: 776 kb/s Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: hevc (Main) ([36][0][0][0] / 0x0024), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 25 tbc Stream #0:1[0x101](fin): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s Stream mapping: Stream #0:0 -> #0:0 (hevc (native) -> hevc (hevc_vaapi)) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help [hevc_vaapi @ 0x55980faa94c0] Driver does not support some wanted packed headers (wanted 0xd, found 0). Output #0, mpegts, to 'out.ts': Metadata: encoder : Lavf58.34.101 Stream #0:0: Video: hevc (hevc_vaapi) (Main), vaapi_vld, 720x576 [SAR 64:45 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc Metadata: encoder : Lavc58.61.100 hevc_vaapi Stream #0:1(fin): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s frame= 261 fps=0.0 q=-0.0 Lsize= 969kB time=00:00:10.80 bitrate= 735.3kbits/s speed=16.2x video:634kB audio:248kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 9.996099%
follow-up: 4 comment:3 by , 5 years ago
Keywords: | amd hevc mesa radeon removed |
---|
How is this ticket different than #6276?
comment:4 by , 5 years ago
Replying to cehoyos:
How is this ticket different than #6276?
Simply because the issues look similar but could be different because I am running ffmpeg with AMD hardware and the owner of ticket #6276 was using Nvidia hardware.
This issue happened on AMD hardware only with VAAPI and it has nothing to do with nvenc
As AMD's implementation may have differences, fixing this issue may or may not effect the issue on Nvidia hardware.
In addition, I have tested this issue on latest master. That ticket was on 3.x version and not tested since then. It may even be possible that ticket #6276 is fixed. We do not know.
follow-ups: 6 7 comment:5 by , 5 years ago
Keywords: | vaapi aspect removed |
---|---|
Resolution: | → duplicate |
Status: | new → closed |
comment:6 by , 5 years ago
Replying to cehoyos:
Why is this ticket duplicate? Can you explain it? Isn't it a valid assumption that VAAPI on AMD Platform may be having different quirks?
I am here right now, I provided smaller test files. As a matter of fact, the test file in ticket #6276 is not even reachable right now. So there is not even possibility of testing the issue in exact same environment.
That ticket was opened against a very old version of FFMPEG and it should be closed at least due to that reason. Also the owner of the ticket does not seem to respond anymore.
comment:7 by , 5 years ago
Replying to cehoyos:
Linked duplicated bug is for variable ratio video files, where ratio changes during. This bug is for constant radio video.
I have same bug but ended posting in the "duplicate" one
comment:8 by , 5 years ago
Isn't the problem here the lack of packed headers in the Mesa driver?
The message
[hevc_vaapi @ 0x55980faa94c0] Driver does not support some wanted packed headers (wanted 0xd, found 0).
is basically telling you that libavcodec not going to be able to write any header metadata, and that means you don't get any VUI aspect ratio information (among other things).
comment:9 by , 5 years ago
Resolution: | duplicate → invalid |
---|
Original file