Den 09.11.2024 17:16, skrev Andrew Randrianasulu:


сб, 9 нояб. 2024 г., 19:10 Terje J. Hanssen <terjejhanssen@gmail.com>:



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 <terjejhanssen@gmail.com>:



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 ?













(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)