I have idea about ffmpeg's internals but it has potential to
either fix it or broke it :)
I'll try to make patch tomorrow
On Sun, Nov 17, 2024 at 5:13 PM Terje J. Hanssen via Cin
<[email protected]> wrote:
Den 17.11.2024 19:53, skrev Andrew Randrianasulu:
вс, 17 нояб. 2024 г., 20:50 Terje J. Hanssen
<[email protected]>:
Den 17.11.2024 11:53, skrev Andrew Randrianasulu:
вс, 17 нояб. 2024 г., 13:24 Terje J. Hanssen
<[email protected]>:
Den 16.11.2024 23:24, skrev Terje J. Hanssen:
Den 16.11.2024 22:20, skrev Andrew Randrianasulu:
вс, 17 нояб. 2024 г., 00:02 Terje J. Hanssen
<[email protected]>:
Den 16.11.2024 20:36, skrev Terje J.
Hanssen:
Den 16.11.2024 19:00, skrev Andrew
Randrianasulu:
сб, 16 нояб. 2024 г., 20:56 Terje J.
Hanssen via Cin
<[email protected]>:
Now when 10bit hevc_qsv and
hevc_vaapi accelerated encoding
looks to be in box, I wonder if
something prohibits us to get
accelerated encoding for av1 and h264?
I think av1 was complaining about
invalid picture structure?
feel free to experiment. You can also
try vp9 ....
According to ffmpeg help the
following support should be available:
av1_qsv
Supported pixel formats: nv12
p010le qsv
-profile <int> E..V.......
(from 0 to INT_MAX) (default unknown)
unknown 0 E..V.......
main 1 E..V.......
av1_vaapi
Supported pixel formats: vaapi
-profile <int> E..V.......
Set profile (seq_profile) (from
-99 to 255) (default -99)
main 0 E..V.......
high 1 E..V.......
professional 2 E..V.......
..........h264 snip
=============================
Starting tests with
/Cin # bin/cin
Cinelerra Infinity - built: Nov 15 2024
20:29:14
1) AV1_QSV
-----------
av1_qsv.mp4
mp4 av1_qsv
# only usable with ext. ffmpeg
cin_pix_fmt=nv12
DV input renders ok to yuv420p
** rendered 2832 frames in 5.475 secs,
517.260 fps
HDV input fails:
[av1_qsv @ 0x7ff7cca8b9c0] Current
picture structure is unsupported
[av1_qsv @ 0x7ff7cca8b9c0] some
encoding parameters are not supported
by the QSV runtime. Please double check
the input parameters.
FFMPEG::open_encoder err: Function not
implemented
int FFMPEG::open_encoder(const char*,
const char*):
open failed
av1_qsv:/Videoklipp/QSV/hdv09_04_av1_qsv.mp4
FHD input fails
[av1_qsv @ 0x7ff7918e82c0] Current
picture structure is unsupported
[av1_qsv @ 0x7ff7918e82c0] some
encoding parameters are not supported
by the QSV runtime. Please double check
the input parameters.
FFMPEG::open_encoder err: Function not
implemented
int FFMPEG::open_encoder(const char*,
const char*):
open failed
av1_qsv:/Videoklipp/QSV/hd01_av1_qsv.mp4
After this overview:
I modified ffmpeg/encode.opts to
loglevel=debug and tried to render HDV (and
FHD) again:
[AVHWDeviceContext @ 0x7f99881fee40] Trying to
use DRM render node for device 0.
[AVHWDeviceContext @ 0x7f99881fee40] libva:
VA-API version 1.22.0
[AVHWDeviceContext @ 0x7f99881fee40] libva:
User requested driver 'iHD'
[AVHWDeviceContext @ 0x7f99881fee40] libva:
Trying to open /usr/lib64/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x7f99881fee40] libva:
Found init function __vaDriverInit_1_22
[AVHWDeviceContext @ 0x7f99881fee40] libva:
va_openDriver() returns 0
[AVHWDeviceContext @ 0x7f99881fee40]
Initialised VAAPI connection: version 1.22
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x41524742 -> bgra.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x41424752 -> rgba.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x58524742 -> bgr0.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x58424752 -> rgb0.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30335241 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30334241 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30335258 -> x2rgb10le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30334258 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x36314752 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x56555941 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x56555958 -> vuyx.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30303859 -> gray.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x3231564e -> nv12.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x3132564e -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x32595559 -> yuyv422.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x59565955 -> uyvy422.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x32315659 -> yuv420p.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30323449 -> yuv420p.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x50313134 -> yuv411p.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x48323234 -> yuv422p.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x56323234 -> yuv440p.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x50343434 -> yuv444p.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x33434d49 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30313050 -> p010le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x32313050 -> p012le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x36313050 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30313259 -> y210le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x32313259 -> y212le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x36313259 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x30313459 -> xv30le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x32313459 -> xv36le.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x36313459 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x50424752 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] Format
0x50524742 -> unknown.
[AVHWDeviceContext @ 0x7f99881fee40] VAAPI
driver: Intel iHD driver for Intel(R) Gen
Graphics - 24.4.0 ().
[AVHWDeviceContext @ 0x7f99881fee40] Driver
not found in known nonstandard list, using
standard behaviour.
[av1_qsv @ 0x7f99880565c0] Initialized an
internal MFX session using hardware
accelerated implementation
[av1_qsv @ 0x7f99880565c0] Using the constant
quantization parameter (CQP) by default.
Please use the global_quality option and other
options for a quality-based mode or the b
option and other options for a bitrate-based
mode if the default is not the desired choice.
[av1_qsv @ 0x7f99880565c0] Using the constant
quantization parameter (CQP) ratecontrol method
[av1_qsv @ 0x7f99880565c0] Current picture
structure is unsupported
[av1_qsv @ 0x7f99880565c0] some encoding
parameters are not supported by the QSV
runtime. Please double check the input parameters.
FFMPEG::open_encoder err: Function not
implemented
int FFMPEG::open_encoder(const char*, const
char*):
open failed
av1_qsv:/Videoklipp/QSV/hdv09_04_av1_qsv.mp4
Render::render_single: Session finished.
Sorry, but even with additional msgs root case of
this problem is not clearer at all for me.
You tried with progressive/deinterlaced source,
with everything set to progressive?
Isn't point of this thread to get 10bit, 10bit +
yuv422 encoder presets working? I suggest to put
aside obviously failing ones for now.
I think AV1-10bit yuv422 is only supported by
librav1e software encoding yet.
But av1_qsv encoding 8bit (nv12) and 10bit 420
(p010) is supported by ffmpeg.
The following command works for me for me with HDV
and FHD interlaced input:
HDV --> av1_qsv -global_quality 25
-----------------------------------
ffmpeg -hide_banner -qsv_device /dev/dri/renderD128
-i hdv09_04.m2t -pix_fmt nv12 -c:v av1_qsv
-global_quality 25
hdv09_04_av1_qsv_format_nv12_gq25.mp4
ffprobe -hide_banner
hdv09_04_av1_qsv_format_nv12_gq25.mp4
Stream #0:0[0x1](und): Video: av1 (libdav1d)
(Main) (av01 / 0x31307661), yuv420p(tv, bt709, top
coded first (swapped)), 1440x1080, 7902 kb/s, SAR
4:3 DAR 16:9, 24.99 fps, 25 tbr, 12800 tbn (default)
FHD --> av1_qsv -global_quality 25
-----------------------------------
ffmpeg -hide_banner -qsv_device /dev/dri/renderD128
-i cfhd01.mkv -pix_fmt p010 -c:v av1_qsv
-global_quality 25 cfhd01_av1_qsv_format_p010_gq25.mp4
ffprobe -hide_banner
cfhd01_av1_qsv_format_p010_gq25.mp4
Stream #0:0[0x1](eng): Video: av1 (libdav1d)
(Main) (av01 / 0x31307661), yuv420p10le(tv, bt709,
progressive), 1920x1080, 5761 kb/s, SAR 1:1 DAR
16:9, 25 fps, 25 tbr, 12800 tbn (default)
ffmpeg output some mpeg warnings in the HDV file,
but renders it seemingly ok
[mpegts @ 0x560dbed1b800] PES packet size
mismatch0:03:56.16 bitrate=8036.6kbits/s speed=22.5x
[mpegts @ 0x560dbed1b800] Packet corrupt (stream =
1, dts = 258142320).
[mpeg2video @ 0x560dbec663c0] ac-tex damaged at 10 61
[mpeg2video @ 0x560dbec663c0] Warning MVs not available
[mpeg2video @ 0x560dbec663c0] concealing 630 DC,
630 AC, 630 MV errors in P frame
[vist#0:0/mpeg2video @ 0x560dbedd2f40]
[dec:mpeg2video @ 0x560dbecb4140] corrupt decoded frame
[out#0/mp4 @ 0x560dbec67440] video:230191KiB
audio:3787KiB subtitle:0KiB other streams:0KiB
global headers:0KiB muxing overhead: 0.051687%
frame= 5963 fps=561 q=-0.0 Lsize= 234099KiB
time=00:03:58.77 bitrate=8031.5kbits/s speed=22.5x
I tried to adapt my hevc_qsv preset for av1_qsv as
follows
av1_qsv_8b420.mp4
mp4 av1_qsv
# av1_qsv_8b420
# usable with Pixels: nv12
profile=main
global_quality=25
but attempt to render the same HDV file fails with
the following output
[av1_qsv @ 0x7fd604299600] Encoder: input is system
memory surface
[av1_qsv @ 0x7fd604299600] Use Intel(R) oneVPL to
create MFX session, the required implementation
version is 1.1
libva info: VA-API version 1.22.0
libva info: Trying to open
/usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
libva info: VA-API version 1.22.0
libva info: Trying to open
/usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
[AVHWDeviceContext @ 0x7fd60408bd40] Trying to use
DRM render node for device 0.
[AVHWDeviceContext @ 0x7fd60408bd40] libva: VA-API
version 1.22.0
[AVHWDeviceContext @ 0x7fd60408bd40] libva: User
requested driver 'iHD'
[AVHWDeviceContext @ 0x7fd60408bd40] libva: Trying
to open /usr/lib64/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x7fd60408bd40] libva: Found
init function __vaDriverInit_1_22
[AVHWDeviceContext @ 0x7fd60408bd40] libva:
va_openDriver() returns 0
[AVHWDeviceContext @ 0x7fd60408bd40] Initialised
VAAPI connection: version 1.22
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x41524742 -> bgra.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x41424752 -> rgba.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x58524742 -> bgr0.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x58424752 -> rgb0.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30335241 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30334241 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30335258 -> x2rgb10le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30334258 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x36314752 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x56555941 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x56555958 -> vuyx.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30303859 -> gray.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x3231564e -> nv12.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x3132564e -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x32595559 -> yuyv422.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x59565955 -> uyvy422.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x32315659 -> yuv420p.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30323449 -> yuv420p.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x50313134 -> yuv411p.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x48323234 -> yuv422p.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x56323234 -> yuv440p.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x50343434 -> yuv444p.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x33434d49 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30313050 -> p010le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x32313050 -> p012le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x36313050 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30313259 -> y210le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x32313259 -> y212le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x36313259 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x30313459 -> xv30le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x32313459 -> xv36le.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x36313459 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x50424752 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] Format
0x50524742 -> unknown.
[AVHWDeviceContext @ 0x7fd60408bd40] VAAPI driver:
Intel iHD driver for Intel(R) Gen Graphics - 24.4.0 ().
[AVHWDeviceContext @ 0x7fd60408bd40] Driver not
found in known nonstandard list, using standard
behaviour.
[av1_qsv @ 0x7fd604299600] Initialized an internal
MFX session using hardware accelerated implementation
[av1_qsv @ 0x7fd604299600] Using the intelligent
constant quality (ICQ) ratecontrol method
[av1_qsv @ 0x7fd604299600] Current picture
structure is unsupported
I think this error comes from
http://git.ffmpeg.org/gitweb/ffmpeg.git/blob/refs/heads/release/7.0:/libavcodec/qsvenc.c
if (UNMATCH(FrameInfo.PicStruct))
689 av_log(avctx, AV_LOG_ERROR, "Current picture
structure is unsupported\n");
if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
850 // it is important that PicStruct be setup
correctly from the
851 // start--otherwise, encoding doesn't work and
results in a bunch
852 // of incompatible video parameter errors
853 q->param.mfx.FrameInfo.PicStruct =
MFX_PICSTRUCT_FIELD_TFF;
854 // height alignment always must be 32 for
interlaced video
855 q->height_align = 32;
856 } else {
857 q->param.mfx.FrameInfo.PicStruct =
MFX_PICSTRUCT_PROGRESSIVE;
858 // for progressive video, the height should be
aligned to 16 for
859 // H.264. For HEVC, depending on the version of
MFX, it should be
860 // either 32 or 16. The lower number is better
if possible.
861 // For AV1, it is 32
862 q->height_align = (avctx->codec_id ==
AV_CODEC_ID_HEVC ||
863 avctx->codec_id == AV_CODEC_ID_AV1) ? 32 : 16;
864 }
865 q->param.mfx.FrameInfo.Height =
FFALIGN(avctx->height, q->height_align);
2030
2031 qf->surface.Info.PicStruct =
2032 !(frame->flags & AV_FRAME_FLAG_INTERLACED)
? MFX_PICSTRUCT_PROGRESSIVE :
2033 (frame->flags &
AV_FRAME_FLAG_TOP_FIELD_FIRST) ? MFX_PICSTRUCT_FIELD_TFF :
2034 MFX_PICSTRUCT_FIELD_BFF;
i.e. common code for all qsv encoders?
so *I think* it only test for either bff or tff and
fails if +ildct flag actually set.
you can try to add it ffmpeg line and see if it starts
to fail
BUT
can you test progressive or bff source in cingg ??
i do not ask just for lulz, I want to understand
*where* it fails, and does this mean we need to ask
ffmpeg guys todo something or alter ourselves.
So, *PLEASE* do progressive/bff test!
Yeah, thank you for all help and tip to solve this.
I had just to finish my std interlaced HDV and FHD input
testing with various preset parameters 😉
And my first bff interlaced test already worked without
those problems
1) SD-DV --> AV1_QSV
mediainfo dv01_07.dv | grep -i scan
Scan type : Interlaced
Scan order : Bottom Field First
av1_qsv_8b420.mp4
mp4 av1_qsv
# av1_qsv_8b420
# usable with Pixels: nv12
profile=main
# global_quality=25
BC_DisplayInfo::gl_fb_config failed
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
Render::render_single: Session finished.
** rendered 2832 frames in 3.645 secs, 776.955 fps
-----------------------
while the std HDV and FHD input files were tff interlaced:
mediainfo hdv09_04.m2t | grep -i scan
Scan type : Interlaced
Scan order : Top Field First
mediainfo cfhd01.mkv | grep -i scan
Scan type : Interlaced
Scan type, store method : Interleaved
fields
Scan order : Top Field First
So I deinterlaced them to-night with ffmpeg and yadif
and bitrate to keep quality.
And it was no "lul" for cfhd (FHD) with very high
bitrate (fps=0.8, speed=0.03) 🙁
ffmpeg -hide_banner -i hdv09_04.m2t -vf
yadif=parity=auto -vb 30M hdv09_04_progr.m2t
ffmpeg -hide_banner -i cfhd01.mkv -vf yadif=parity=auto
-vb 400M cfhd01_progr.mkv
And the good thing to report back is rendering now
worked for the progressive input files 🙂
-----------
2) HDV progressive --> av1_qsv (8bit yuv420p, nv12)
av1_qsv_8b420.mp4
mp4 av1_qsv
# av1_qsv_8b420
# usable with Pixels: nv12
profile=main
# global_quality=25
BC_DisplayInfo::gl_fb_config failed
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
Render::render_single: Session finished.
** rendered 2832 frames in 3.645 secs, 776.955 fps
ffprobe -hide_banner hdv09_04_progr_av1_qsv.mp4
Stream #0:0[0x1](und): Video: av1 (libdav1d) (Main)
(av01 / 0x31307661), yuv420p(tv, bt709/unknown/unknown,
progressive), 1440x1080, 927 kb/s, SAR 4:3 DAR 16:9, 25
fps, 25 tbr, 12800 tbn (default)
----------
3) FHD (cfhd) progressive --> av1_qsv (10bit yuv420p,
p010le)
av1_qsv_10b420.mp4
mp4 av1_qsv
# av1_qsv_10b420
# usabel with Pixels: p010le
profile=main
# global_quality=25
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
FFMPEG::open_decoder: some stream times estimated:
/Videoklipp/QSV/cfhd01_progr.mkv
Render::render_single: Session finished.
** rendered 1780 frames in 28.383 secs, 62.714 fps
FFMPEG::open_decoder: some stream times estimated:
/Videoklipp/QSV/cfhd01_progr.mkv
ffprobe -hide_banner hdv09_04_progr_av1_qsv.mp4
Stream #0:0[0x1](und): Video: av1 (libdav1d) (Main)
(av01 / 0x31307661), yuv420p10le(tv,
bt709/unknown/unknown, progressive), 1440x1080, 926
kb/s, SAR 4:3 DAR 16:9, 25 fps, 25 tbr, 12800 tbn
-------
I tested also that HDV could be rendered correctly using
both 8bit and 10 presets as attached
av1_qsv_10b420.mp4
av1_qsv_8b420.mp4
--
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin