Opened 6 years ago
Closed 2 years ago
#7526 closed defect (wontfix)
VAAPI HEVC Encoder Bitrate parameter no longer works in Master compared to 4.0.x
Reported by: | Jose Santiago | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | git-master | Keywords: | vaapi regression |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
In FFMPEG v4.0.2 you could use the -b:v parameter to set the target bitrate. And the Video output would reflect the bitrate specified on the commandline. That no longer works in git-master. You get rougly the same output no matter what you set for the bitrate.
How to reproduce:
ffmpeg -vaapi_device /dev/dri/renderD128 -i /mnt/share/content/yuv/lp/SVT_Park_joy_FR6001_7000_1920x1080p50.avi.yuv.y4m -vf 'format=nv12,hwupload' -c:v hevc_vaapi -b:v 2M -g 30 -bf 2 test-vaapi-2m.hevc ffmpeg -vaapi_device /dev/dri/renderD128 -i /mnt/share/content/yuv/lp/SVT_Park_joy_FR6001_7000_1920x1080p50.avi.yuv.y4m -vf 'format=nv12,hwupload' -c:v hevc_vaapi -b:v 4M -g 30 -bf 2 test-vaapi-4m.hevc ffmpeg version N-92314-g323c2cfd38 Manjaro Linux.
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.
Change History (5)
comment:2 by , 6 years ago
Using git-Master with the same parameters. The file sizes are roughly the same:
[jsantiago@jlsserver2 ~/tt55/tt4]$ /home/jsantiago/tt55/ffmpeg/build/stage/bin/ffmpeg \ > -vaapi_device /dev/dri/renderD128 \ > -i /mnt/share/content/yuv/lp/SVT_Park_joy_FR6001_7000_1920x1080p50.avi.yuv.y4m \ > -vf 'format=nv12,hwupload' -c:v hevc_vaapi -b:v 2M -g 30 -bf 2 test-vaapi-2m.hevc ffmpeg version N-92314-g323c2cfd38 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 8.2.1 (GCC) 20180831 configuration: --prefix=/home/jsantiago/tt55/ffmpeg/build/stage libavutil 56. 21.100 / 56. 21.100 libavcodec 58. 34.100 / 58. 34.100 libavformat 58. 19.102 / 58. 19.102 libavdevice 58. 4.106 / 58. 4.106 libavfilter 7. 39.100 / 7. 39.100 libswscale 5. 2.100 / 5. 2.100 libswresample 3. 2.100 / 3. 2.100 Input #0, yuv4mpegpipe, from '/mnt/share/content/yuv/lp/SVT_Park_joy_FR6001_7000_1920x1080p50.avi.yuv.y4m': Duration: 00:00:20.00, start: 0.000000, bitrate: 1244162 kb/s Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p(progressive), 1920x1080, 50 fps, 50 tbr, 50 tbn, 50 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> hevc (hevc_vaapi)) Press [q] to stop, [?] for help Output #0, hevc, to 'test-vaapi-2m.hevc': Metadata: encoder : Lavf58.19.102 Stream #0:0: Video: hevc (hevc_vaapi) (Main), vaapi_vld, 1920x1080, q=-1--1, 2000 kb/s, 50 fps, 50 tbn, 50 tbc Metadata: encoder : Lavc58.34.100 hevc_vaapi frame= 32 fps=0.0 q=-0.0 size= 82kB time=00:00:00.58 bitrate=1153.2kbits frame= 65 fps= 64 q=-0.0 size= 183kB time=00:00:01.24 bitrate=1207.1kbits frame= 98 fps= 63 q=-0.0 size= 256kB time=00:00:01.90 bitrate=1103.8kbits frame= 130 fps= 63 q=-0.0 size= 256kB time=00:00:02.54 bitrate= 825.7kbits frame= 161 fps= 63 q=-0.0 size= 256kB time=00:00:03.16 bitrate= 663.7kbits frame= 194 fps= 63 q=-0.0 size= 256kB time=00:00:03.82 bitrate= 549.0kbits frame= 226 fps= 63 q=-0.0 size= 512kB time=00:00:04.46 bitrate= 940.4kbits frame= 257 fps= 62 q=-0.0 size= 512kB time=00:00:05.08 bitrate= 825.7kbits frame= 290 fps= 62 q=-0.0 size= 512kB time=00:00:05.74 bitrate= 730.7kbits frame= 320 fps= 62 q=-0.0 size= 768kB time=00:00:06.34 bitrate= 992.3kbits frame= 353 fps= 62 q=-0.0 size= 768kB time=00:00:07.00 bitrate= 898.8kbits frame= 386 fps= 62 q=-0.0 size= 1024kB time=00:00:07.66 bitrate=1095.1kbits frame= 416 fps= 62 q=-0.0 size= 1024kB time=00:00:08.26 bitrate=1015.6kbits frame= 449 fps= 62 q=-0.0 size= 1280kB time=00:00:08.92 bitrate=1175.5kbits frame= 481 fps= 62 q=-0.0 size= 1280kB time=00:00:09.56 bitrate=1096.8kbits frame= 511 fps= 62 q=-0.0 size= 1536kB time=00:00:10.16 bitrate=1238.5kbits frame= 542 fps= 62 q=-0.0 size= 1536kB time=00:00:10.78 bitrate=1167.2kbits frame= 575 fps= 62 q=-0.0 size= 1792kB time=00:00:11.44 bitrate=1283.2kbits frame= 608 fps= 62 q=-0.0 size= 1792kB time=00:00:12.10 bitrate=1213.2kbits frame= 641 fps= 62 q=-0.0 size= 2048kB time=00:00:12.76 bitrate=1314.8kbits frame= 674 fps= 62 q=-0.0 size= 2048kB time=00:00:13.42 bitrate=1250.2kbits frame= 706 fps= 62 q=-0.0 size= 2048kB time=00:00:14.06 bitrate=1193.3kbits frame= 737 fps= 62 q=-0.0 size= 2048kB time=00:00:14.68 bitrate=1142.9kbits frame= 770 fps= 62 q=-0.0 size= 2304kB time=00:00:15.34 bitrate=1230.4kbits frame= 803 fps= 62 q=-0.0 size= 2304kB time=00:00:16.00 bitrate=1179.6kbits frame= 836 fps= 62 q=-0.0 size= 2304kB time=00:00:16.66 bitrate=1132.9kbits frame= 869 fps= 62 q=-0.0 size= 2560kB time=00:00:17.32 bitrate=1210.8kbits frame= 901 fps= 62 q=-0.0 size= 2560kB time=00:00:17.96 bitrate=1167.7kbits frame= 935 fps= 62 q=-0.0 size= 2560kB time=00:00:18.64 bitrate=1125.1kbits frame= 970 fps= 62 q=-0.0 size= 2816kB time=00:00:19.34 bitrate=1192.8kbits frame= 1000 fps= 62 q=-0.0 size= 2816kB time=00:00:19.94 bitrate=1156.9kbits frame= 1000 fps= 62 q=-0.0 Lsize= 2859kB time=00:00:19.98 bitrate=1172.2kbits/s speed=1.24x video:2859kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% [jsantiago@jlsserver2 ~/tt55/tt4]$ /home/jsantiago/tt55/ffmpeg/build/stage/bin/ffmpeg \ > -vaapi_device /dev/dri/renderD128 \ > -i /mnt/share/content/yuv/lp/SVT_Park_joy_FR6001_7000_1920x1080p50.avi.yuv.y4m \ > -vf 'format=nv12,hwupload' -c:v hevc_vaapi -b:v 4M -g 30 -bf 2 test-vaapi-4m.hevc ffmpeg version N-92314-g323c2cfd38 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 8.2.1 (GCC) 20180831 configuration: --prefix=/home/jsantiago/tt55/ffmpeg/build/stage libavutil 56. 21.100 / 56. 21.100 libavcodec 58. 34.100 / 58. 34.100 libavformat 58. 19.102 / 58. 19.102 libavdevice 58. 4.106 / 58. 4.106 libavfilter 7. 39.100 / 7. 39.100 libswscale 5. 2.100 / 5. 2.100 libswresample 3. 2.100 / 3. 2.100 Input #0, yuv4mpegpipe, from '/mnt/share/content/yuv/lp/SVT_Park_joy_FR6001_7000_1920x1080p50.avi.yuv.y4m': Duration: 00:00:20.00, start: 0.000000, bitrate: 1244162 kb/s Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p(progressive), 1920x1080, 50 fps, 50 tbr, 50 tbn, 50 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> hevc (hevc_vaapi)) Press [q] to stop, [?] for help Output #0, hevc, to 'test-vaapi-4m.hevc': Metadata: encoder : Lavf58.19.102 Stream #0:0: Video: hevc (hevc_vaapi) (Main), vaapi_vld, 1920x1080, q=-1--1, 4000 kb/s, 50 fps, 50 tbn, 50 tbc Metadata: encoder : Lavc58.34.100 hevc_vaapi frame= 31 fps=0.0 q=-0.0 size= 80kB time=00:00:00.56 bitrate=1171.7kbits frame= 64 fps= 64 q=-0.0 size= 187kB time=00:00:01.22 bitrate=1257.3kbits frame= 95 fps= 62 q=-0.0 size= 256kB time=00:00:01.84 bitrate=1139.8kbits frame= 128 fps= 62 q=-0.0 size= 256kB time=00:00:02.50 bitrate= 838.9kbits frame= 161 fps= 63 q=-0.0 size= 256kB time=00:00:03.16 bitrate= 663.7kbits frame= 194 fps= 63 q=-0.0 size= 256kB time=00:00:03.82 bitrate= 549.0kbits frame= 224 fps= 62 q=-0.0 size= 512kB time=00:00:04.42 bitrate= 948.9kbits frame= 257 fps= 62 q=-0.0 size= 512kB time=00:00:05.08 bitrate= 825.7kbits frame= 290 fps= 62 q=-0.0 size= 512kB time=00:00:05.74 bitrate= 730.7kbits frame= 320 fps= 62 q=-0.0 size= 768kB time=00:00:06.34 bitrate= 992.3kbits frame= 353 fps= 62 q=-0.0 size= 768kB time=00:00:07.00 bitrate= 898.8kbits frame= 386 fps= 62 q=-0.0 size= 1024kB time=00:00:07.66 bitrate=1095.1kbits frame= 416 fps= 62 q=-0.0 size= 1024kB time=00:00:08.26 bitrate=1015.6kbits frame= 449 fps= 62 q=-0.0 size= 1280kB time=00:00:08.92 bitrate=1175.5kbits frame= 481 fps= 62 q=-0.0 size= 1280kB time=00:00:09.56 bitrate=1096.8kbits frame= 512 fps= 62 q=-0.0 size= 1536kB time=00:00:10.18 bitrate=1236.0kbits frame= 545 fps= 62 q=-0.0 size= 1536kB time=00:00:10.84 bitrate=1160.8kbits frame= 578 fps= 62 q=-0.0 size= 1792kB time=00:00:11.50 bitrate=1276.5kbits frame= 608 fps= 62 q=-0.0 size= 1792kB time=00:00:12.10 bitrate=1213.2kbits frame= 641 fps= 62 q=-0.0 size= 2048kB time=00:00:12.76 bitrate=1314.8kbits frame= 674 fps= 62 q=-0.0 size= 2048kB time=00:00:13.42 bitrate=1250.2kbits frame= 707 fps= 62 q=-0.0 size= 2048kB time=00:00:14.08 bitrate=1191.6kbits frame= 740 fps= 62 q=-0.0 size= 2304kB time=00:00:14.74 bitrate=1280.5kbits frame= 773 fps= 62 q=-0.0 size= 2304kB time=00:00:15.40 bitrate=1225.6kbits frame= 805 fps= 62 q=-0.0 size= 2304kB time=00:00:16.04 bitrate=1176.7kbits frame= 837 fps= 62 q=-0.0 size= 2304kB time=00:00:16.68 bitrate=1131.6kbits frame= 869 fps= 62 q=-0.0 size= 2560kB time=00:00:17.32 bitrate=1210.8kbits frame= 901 fps= 62 q=-0.0 size= 2560kB time=00:00:17.96 bitrate=1167.7kbits frame= 935 fps= 62 q=-0.0 size= 2560kB time=00:00:18.64 bitrate=1125.1kbits frame= 970 fps= 62 q=-0.0 size= 2816kB time=00:00:19.34 bitrate=1192.8kbits frame= 1000 fps= 62 q=-0.0 Lsize= 2867kB time=00:00:19.98 bitrate=1175.4kbits/s speed=1.24x video:2867kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% [jsantiago@jlsserver2 ~/tt55/tt4]$ ls -la total 5736 drwxr-xr-x 2 jsantiago users 4096 Oct 31 15:47 . drwxr-xr-x 7 jsantiago users 4096 Oct 31 15:46 .. -rw-r--r-- 1 jsantiago users 2927503 Oct 31 15:47 test-vaapi-2m.hevc -rw-r--r-- 1 jsantiago users 2935539 Oct 31 15:47 test-vaapi-4m.hevc
comment:3 by , 6 years ago
Keywords: | regression added; hevc encode rate control removed |
---|
Please find the change introducing the regression.
comment:4 by , 5 years ago
This issue can't be reproduced on git-master with the latest code:
root@tangfw-WHL:/home/tangfw/workspace/video/build/temp# ffmpeg -vaapi_device /dev/dri/renderD128 -s:v 1920x1080 -i /root/media/encoderbitstreams/1080p_blue_sky.yuv -vf 'format=nv12,hwupload' -c:v hevc_vaapi -b:v 2M -g 30 -bf 2 -y test-vaapi-2m.hevc ffmpeg version N-92558-ge695b0beba Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04) configuration: --enable-vaapi --prefix=/opt/X11R7/iHD/ffmpeg_mainline --enable-nonfree --enable-shared --enable-libmfx --enable-gpl --enable-libx264 --enable-libx265 libavutil 56. 24.101 / 56. 24.101 libavcodec 58. 40.100 / 58. 40.100 libavformat 58. 23.101 / 58. 23.101 libavdevice 58. 6.100 / 58. 6.100 libavfilter 7. 46.101 / 7. 46.101 libswscale 5. 4.100 / 5. 4.100 libswresample 3. 4.100 / 3. 4.100 libpostproc 55. 4.100 / 55. 4.100 [rawvideo @ 0x5612f61490c0] Estimating duration from bitrate, this may be inaccurate Input #0, rawvideo, from '/root/media/encoderbitstreams/1080p_blue_sky.yuv': Duration: 00:00:08.68, start: 0.000000, bitrate: 622080 kb/s Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x1080, 622080 kb/s, 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> hevc (hevc_vaapi)) Press [q] to stop, [?] for help Output #0, hevc, to 'test-vaapi-2m.hevc': Metadata: encoder : Lavf58.23.101 Stream #0:0: Video: hevc (hevc_vaapi) (Main), vaapi_vld, 1920x1080, q=-1--1, 2000 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc58.40.100 hevc_vaapi frame= 217 fps= 81 q=-0.0 Lsize= 2190kB time=00:00:08.64 bitrate=2076.1kbits/s speed=3.24x video:2190kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% root@tangfw-WHL:/home/tangfw/workspace/video/build/temp# ffmpeg -vaapi_device /dev/dri/renderD128 -s:v 1920x1080 -i /root/media/encoderbitstreams/1080p_blue_sky.yuv -vf 'format=nv12,hwupload' -c:v hevc_vaapi -b:v 4M -g 30 -bf 2 -y test-vaapi-4m.hevc ffmpeg version N-92558-ge695b0beba Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04) configuration: --enable-vaapi --prefix=/opt/X11R7/iHD/ffmpeg_mainline --enable-nonfree --enable-shared --enable-libmfx --enable-gpl --enable-libx264 --enable-libx265 libavutil 56. 24.101 / 56. 24.101 libavcodec 58. 40.100 / 58. 40.100 libavformat 58. 23.101 / 58. 23.101 libavdevice 58. 6.100 / 58. 6.100 libavfilter 7. 46.101 / 7. 46.101 libswscale 5. 4.100 / 5. 4.100 libswresample 3. 4.100 / 3. 4.100 libpostproc 55. 4.100 / 55. 4.100 [rawvideo @ 0x55fb3d0760c0] Estimating duration from bitrate, this may be inaccurate Input #0, rawvideo, from '/root/media/encoderbitstreams/1080p_blue_sky.yuv': Duration: 00:00:08.68, start: 0.000000, bitrate: 622080 kb/s Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x1080, 622080 kb/s, 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> hevc (hevc_vaapi)) Press [q] to stop, [?] for help Output #0, hevc, to 'test-vaapi-4m.hevc': Metadata: encoder : Lavf58.23.101 Stream #0:0: Video: hevc (hevc_vaapi) (Main), vaapi_vld, 1920x1080, q=-1--1, 4000 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc58.40.100 hevc_vaapi frame= 217 fps= 79 q=-0.0 Lsize= 4390kB time=00:00:08.64 bitrate=4162.4kbits/s speed=3.14x video:4390kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% root@tangfw-WHL:/home/tangfw/workspace/video/build/temp# ls -al total 6592 drwxr-xr-x 2 root root 4096 11月 30 13:10 . drwxr-xr-x 39 tangfw tangfw 4096 11月 30 13:08 .. -rw-r--r-- 1 root root 2242181 11月 30 13:10 test-vaapi-2m.hevc -rw-r--r-- 1 root root 4495439 11月 30 13:10 test-vaapi-4m.hevc
comment:5 by , 2 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Notice that with 4.0.2 release build you can configure the bitrate and get different bitrate in the output. Granted the bitrate is higher than requested. Asking for 2Mbps achieves approx 3.2Mbps and asking for 4Mbps achieves approx 6.5Mbps