Den 23.11.2024 13:24, skrev Andrew Randrianasulu:


сб, 23 нояб. 2024 г., 15:15 Terje Hanssen <terjejhanssen@gmail.com>:



On 11/22/24 18:54, Andrew Randrianasulu wrote:


пт, 22 нояб. 2024 г., 20:37 Terje Hanssen <terjejhanssen@gmail.com>:



On 11/22/24 18:12, Andrew Randrianasulu wrote:


пт, 22 нояб. 2024 г., 20:07 Terje Hanssen <terjejhanssen@gmail.com>:



On 11/22/24 17:58, Andrew Randrianasulu wrote:


пт, 22 нояб. 2024 г., 19:55 Terje Hanssen <terjejhanssen@gmail.com>:



On 11/22/24 18:41, Andrew Randrianasulu wrote:
On Fri, Nov 22, 2024 at 2:52 PM Terje Hanssen <terjejhanssen@gmail.com> wrote:
On 11/22/24 08:45, Andrew Randrianasulu wrote:



---------- Forwarded message ---------
От: Wang, Fei W <fei.w.wang-at-intel.com@ffmpeg.org>
Date: пт, 22 нояб. 2024 г., 09:10
Subject: Re: [FFmpeg-devel] qsvenc.c & AV_CODEC_FLAG_INTERLACED_DCT
To: ffmpeg-devel@ffmpeg.org <ffmpeg-devel@ffmpeg.org>


On Thu, 2024-11-21 at 11:50 +0300, Andrew Randrianasulu wrote:
Hello.


Recently I teached cinelerra-gg to use qsv encoders in ffmpeg
(libavcodec)
and some test were working but some not.

We nailed it down to top-field first  material, like HDV files. bff
files
like consumer version of DV and progressive worked fine.

I looked at source and ... I thought condition at

http://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavcodec/qsvenc.c#l852


must contain case for bff, but I tried this and it was reportedly not
helping?


We currently set flags = ildct+ilme on interlaced streams, I hope to
avoid
special-casing qsv encoders, but may be we have no other choice?

I asked user (Terje) to add +ildct flag to his normal system ffmpeg
line
and it started to fail too:

https://lists.cinelerra-gg.org/pipermail/cin/2024-November/009123.html
AV1 doesn't support interlaced frame.
Tried also the cmd as suggested from Fei Wang:

ffmpeg -hide_banner -qsv_device /dev/dri/renderD128 -hwaccel_output_format qsv -i hdv09_04.m2t -pix_fmt nv12 -vf vpp_qsv=deinterlace=advanced -c:v av1_qsv -f null -
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
[mpeg2video @ 0x55908d205300] Invalid frame dimensions 0x0.
    Last message repeated 3 times
[mpegts @ 0x55908d1aa480] PES packet size mismatch
[mpegts @ 0x55908d1aa480] Packet corrupt (stream = 1, dts = 258142320).
[mpegts @ 0x55908d1aa480] Could not find codec parameters for stream 2 (Unknown: none ([160][0][0][0] / 0x00A0)): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
[mpegts @ 0x55908d1aa480] Could not find codec parameters for stream 3 (Unknown: none ([161][0][0][0] / 0x00A1)): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, mpegts, from 'hdv09_04.m2t':
  Duration: 00:03:59.06, start: 2629.496000, bitrate: 26110 kb/s
  Program 100
  Stream #0:0[0x810]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 25000 kb/s, 25 fps, 25 tbr, 90k tbn
      Side data:
        cpb: bitrate max/min/avg: 25000000/0/0 buffer size: 7340032 vbv_delay: N/A
  Stream #0:1[0x814]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s
  Stream #0:2[0x815]: Unknown: none ([160][0][0][0] / 0x00A0)
  Stream #0:3[0x811]: Unknown: none ([161][0][0][0] / 0x00A1)
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video (native) -> av1 (av1_qsv))
  Stream #0:1 -> #0:1 (mp2 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[av1_qsv @ 0x55908d2dd280] 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.
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf61.7.100
  Stream #0:0: Video: av1, nv12(tv, bt709, top coded first (swapped)), 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 25 fps, 25 tbn
      Metadata:
        encoder         : Lavc61.19.100 av1_qsv
  Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
      Metadata:
        encoder         : Lavc61.19.100 pcm_s16le
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 167 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 183 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 194 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 196 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 198 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 199 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 208 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 199 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 207 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 220 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 199 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 207 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 202 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 207 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 205 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 182 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 202 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 183 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 194 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 208 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 202 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 191 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 187 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 190 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 212 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 220 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 200 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 197 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 204 times
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 125 times
[mpegts @ 0x55908d1aa480] PES packet size mismatch
[mpegts @ 0x55908d1aa480] Packet corrupt (stream = 1, dts = 258142320).
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 8 times
[mpeg2video @ 0x55908d232400] ac-tex damaged at 10 61
[mpeg2video @ 0x55908d232400] Warning MVs not available
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
[mpeg2video @ 0x55908d232400] concealing 630 DC, 630 AC, 630 MV errors in P frame
[vist#0:0/mpeg2video @ 0x55908d354b40] [dec:mpeg2video @ 0x55908d320d00] corrupt decoded frame
[null @ 0x55908d355c00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: -140737488355328 >= -140737488355328
    Last message repeated 33 times
[out#0/null @ 0x55908d261140] video:45168KiB audio:44770KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
frame= 5963 fps=399 q=-0.0 Lsize=N/A time=-1563749870:36:53.12 bitrate=N/A speed=N/A


I wonder if AV1 generic doesn't support interlaced input video, then neither AV1 software encoders like av1_svt should be able to do it. Or may this mean interlaced output?


*i think* specification allow it, just current hw implementation via qsv  does not exist (yet?).


You better ask some intel engineers about that.

............snip


But unhappily, the HDV --> av1_qsv transcoding I previous did on i17-12700/DG2 WS
https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg08314.html
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)
is not possible on my legacy KBL i7-8550U Intel UHD Graphics 620

[av1_qsv @ 0x5641dd0f5440] This version of runtime doesn't support AV1 encoding

.........................snip

By the way, neither this attempt claims about unsupported or wrong image structure format !?


may be it not even come to this line and abort earlier? (in compiled languages functions can be executed out of order they appear in file)

HDV --> av1_qsv transcoded as referenced above on the newer i17-12700/DG2

??

you mean why default ffmpeg does not trip over this line?

it silently ignores interlace and makes something flagged as interlaced but actually not?

We can have a closer look at the av1_qsv output, possibly with loglevel verbose or debug on that WS, when I'm back again. I don't know what ffmpeg really does here, but as far it is accelerated (fps=561 for cfhd.mkv), viewable and playable, it will be good?


welll ..may be?

Tried my own tff 1080i50 HDV input with FFmpeg on i7-12700/DG2 again and got No av1_qsv errors:

HDV --> av1_qsv nv12 -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
   frame= 5963 fps=561 q=-0.0 Lsize=  234099KiB time=00:03:58.77 bitrate=8031.5kbits/s speed=22.5x  

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)

mediainfo hdv09_04_av1_qsv_format_nv12_gq25.mp4 | egrep -i "scan|bit|format"
Complete name                            : hdv09_04_av1_qsv_format_nv12_gq25.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Overall bit rate                         : 8 021 kb/s
Format                                   : AV1
Format/Info                              : AOMedia Video 1
Format profile                           : Main@L4.0
Bit rate                                 : 7 903 kb/s
Bit depth                                : 8 bits
Scan type                                : Interlaced
Scan type, store method                  : Interleaved fields
Scan order                               : Top Field First
Bits/(Pixel*Frame)                       : 0.203
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Bit rate mode                            : Constant
Bit rate                                 : 132 kb/s


Also FHD --> av1_qsv with p010le works



If it works good enough for  those goals may be you can just set cingg's  format to progressive even if autodetect says interlaced, and try to render.

I'll try that also.

I can't notice differences at playback with VLC and FFplay (other than 16:9 vs 4:3 format as usual). And both visually with good qualities in my eyes.

Cingg Set Format Interlace Mode: Not interlaced
did the trick and both hdv and hd could be rendered
FFprobe reported it is pgogressiv, while native FFmpeg transcoding still say interlaced.

HDV --> av1_qsv

av1_qsv_8b420.mp4
mp4 av1_qsv
# av1_qsv_8b420
cin_pix_fmt=nv12
profile=main
# global_quality=25

** rendered 5972 frames in 10.026 secs, 595.651 fps

----------

ffprobe -hide_banner hdv09_04_av1_qsv.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hdv09_04_av1_qsv.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomav01iso2mp41
    encoder         : Lavf61.1.100
  Duration: 00:03:58.88, start: 0.000000, bitrate: 1533 kb/s
  Stream #0:0[0x1](und): Video: av1 (libdav1d) (Main) (av01 / 0x31307661), yuv420p(tv, bt709/unknown/unknown, progressive), 1440x1080, 1532 kb/s, SAR 4:3 DAR 16:9, 25 fps, 25 tbr, 12800 tbn (default)
 
=====================

FHD --> av1_qsv

av1_qsv_10b420.mp4
mp4 av1_qsv
# av1_qsv_10b420
cin_pix_fmt=p010le
profile=main
# global_quality=25

** rendered 1780 frames in 42.035 secs, 42.346 fps

-------------------

ffprobe -hide_banner hd01_av1_qsv.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hd01_av1_qsv.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomav01iso2mp41
    encoder         : Lavf61.1.100
  Duration: 00:01:11.20, start: 0.000000, bitrate: 1070 kb/s
  Stream #0:0[0x1](und): Video: av1 (libdav1d) (Main) (av01 / 0x31307661), yuv420p10le(tv, bt709/unknown/unknown, progressive), 1920x1080, 1070 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 12800 tbn (default)