On Mon, Nov 11, 2024 at 8:43 PM Terje J. Hanssen <[email protected]> wrote:
Den 09.11.2024 17:16, skrev Andrew Randrianasulu:
сб, 9 нояб. 2024 г., 19:10 Terje J. Hanssen <[email protected]>:
Den 09.11.2024 10:48, skrev Terje J. Hanssen:
Den 09.11.2024 00:10, skrev Andrew Randrianasulu:
сб, 9 нояб. 2024 г., 01:58 Terje J. Hanssen <[email protected]>:
Den 07.11.2024 22:53, skrev Terje J. Hanssen:
Den 07.11.2024 20:41, skrev Andrew Randrianasulu:
sorry I mean set like this export CIN_10BIT_ENC=1
Now hevc_vaapi was able to render to yuv420p10le, that is 10-bit 420p, by selecting pixels p010le. Also rendering with pixels y210 resulted in yuv420p10le, that is not 10-bit 422p as for hevc_qsv below.
I would assume this is caused due to the incomplete hevc_vapi.mp4 preset as shown below?
More like incomplete code that does not yet know how to get custom format ... so far as name says it only adds 10bit 4:2:0 encoding, not 4:2:2 subsampling.
can you test other vaapi/qsv profiles too?
also with test picture actually containing more than 8bit values? ;)
To the latter; the input file cfhd01.mkv was 10bit 422: yuv422p10le
Maybe have a look at and compare with the hevc_qsv code that managed 10bit 422: yuv422p10le?
Summary ----------------
hevc_vaapi.mp4 and av1_vaapi.mp4 Pixels: vaapi (default and only option) works and results in yuv420p p010 or p010le written works and result in yuv420p10le y210 or all variants y210le/Y210/le render (with fallback) to yuv420p10le
h264_vaapi.mp4 didn't render (error message)
yeah, no 10bit h264 here (while possible by spec)
av1_qsv.mp4 is for external ffmpeg
if you still have my onevpl patch applied (and enabled it earlier with configure switch) too - qsv should work ...
try it too just in case?
av1_qsv.mp4 Would not render at all
[av1_qsv @ 0x7fe19826f240] Current picture structure is unsupported [av1_qsv @ 0x7fe19826f240] 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/Cineform/cfhd01_av1_qsv_pix_nv12.mp4 Render::render_single: Session finished.
hevc_qsv.mp4 Does render, but only to yuv420p now. For one or another reason pixel formats p010le and y210le results in yuv420p. That is I am not able to reconstruct the previous 10bit results below. I do another attempt next day.
hevc_qsv.mp4 revised: pixel formats p010le and y210le render again to yuv420p10le and .yuv422p10le respectively Woops; only when these window lines are commented out as written in my previous post !
# profile=main # cin_pix_fmt=nv12
Works both with and without export CIN_10BIT_ENC=1 before cin/bin
we most likely will need new profiles for 10bit everything anyway ...
thanks for continued (and very exhaustive!) testing
Also the preset's combination of pixel formats and the right (ffmpeg) codec profiles would need an overhaul.
As mentioned already above:
hevc_qsv.mp4 revised: pixel formats p010le and y210le render again to yuv420p10le and .yuv422p10le respectively Woops; only when these window lines are commented out as written in my previous post !
# profile=main # cin_pix_fmt=nv12
I experimented additional and got
y210/profile=1 ==> yuv422p10le
y210/ profile=main10/ profile=2/ profile=3 ==> yuv420p10le
I got similar results with my own dynamic Cingg built with ffmpeg 7.1.
--------------------------
So a question beside:
Yesterday I did a new (monthly) upgrade of Tumbleweed-Slowroll, which replaced Packman package libs and ffmpeg 7.1
After that, the static Cingg with onevpl and 10bit patch would not render hevc_qsv.
Today's upgrade with new Packman packages up-to-date with the new Slowroll version, and now Cingg worked as before:
ffmpeg-7 ffmpeg-7-libavcodec-devel ffmpeg-7-libavdevice-devel ffmpeg-7-libavfilter-devel ffmpeg-7-libavformat-devel ffmpeg-7-libavutil-devel ffmpeg-7-libpostproc-devel ffmpeg-7-libswresample-devel ffmpeg-7-libswscale-devel libavcodec61 libavdevice61 libavfilter10 libavformat61 libavutil59 libpostproc58 libswresample5 libswscale8
So even Cingg with onevpl is static built, it looks like it is dependent of one or more system packages/libs beside? Any idea what packages it can be ?
onevpl/vaapi/vdpau - they all linked dynamically (not sure if static version of them even possible)
(probably made up something in GIMP 2.10, save as tiff/EXR, import in cingg, set format to rgba-float, rendrer ..... hm, may be use YUView to see pixel values independently of cinelerra's decoding abilities? a bit of adventure, but should provide some proof about encoding)
ffprobe -hide_banner cfhd01_hevc_vaapi_pix_p010le.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cfhd01_hevc_vaapi_pix_p010le.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf61.1.100 Duration: 00:01:11.20, start: 0.000000, bitrate: 11082 kb/s Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv, bt709/unknown/unknown, top coded first (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 11080 kb/s, 25 fps, 25 tbr, 12800 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0]
ffprobe -hide_banner cfhd01_hevc_vaapi_pix_y210.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cfhd01_hevc_vaapi_pix_y210.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf61.1.100 Duration: 00:01:11.20, start: 0.000000, bitrate: 11082 kb/s Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv, bt709/unknown/unknown, top coded first (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 11080 kb/s, 25 fps, 25 tbr, 12800 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0]
-----
No hevc_vaapi 10bit worked:
localhost:/Cin/ffmpeg/video # cat hevc_vaapi.mp4 mp4 hevc_vaapi # cin_hw_dev=vaapi
I tested hevc_vaapi.m4 and tried to write p010 both in the pixels field and as format=p010 in the widget, but only 8bit 420p each time.
-------------------------------
hevc_qsv 10 bit worked with p010 and with y210
localhost:/Cin/ffmpeg/video # cat hevc_qsv.mp4 # only usable with ext. ffmpeg, another pixfmt is yuyv422 mp4 hevc_qsv # profile=main # cin_pix_fmt=nv12
ffprobe -hide_banner cfhd01_hevc_qsv_pix_p010le.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cfhd01_hevc_qsv_pix_p010le.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf61.1.100 Duration: 00:01:11.20, start: 0.000000, bitrate: 28276 kb/s Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv, bt709/unknown/unknown, top coded first (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 28273 kb/s, 25 fps, 25 tbr, 12800 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0]
ffprobe -hide_banner cfhd01_hevc_qsv_pix_y210le.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cfhd01_hevc_qsv_pix_y210le.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 encoder : Lavf61.1.100 Duration: 00:01:11.20, start: 0.000000, bitrate: 32074 kb/s Stream #0:0[0x1](und): Video: hevc (Rext) (hev1 / 0x31766568), yuv422p10le(tv, bt709/unknown/unknown, top coded first (swapped)), 1920x1080 [SAR 1:1 DAR 16:9], 32071 kb/s, 25 fps, 25 tbr, 12800 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0]
you also can set bin/ffmpeg/encode.opts loglevel to debug, but render exactly one frame so log will be smaller.
How to render render exactly one frame ?
In render dialog window there is selection of render range with 4 choices ... 1 frame mp4/webm should be perfectly legal :)
> > > > > >> >> "git log" where? >> > > > in cinelerra-5.1 directory, or some down the hierarchy ... > > this is command, part of git suite of commands. > > displays log of commits in git repo. (for me it uses l"less" as > pager, so you can scroll around and search) > > > >> >> >> >> >> >> >>> >>> >>> >>> >>> >>> >>> >> >