<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">сб, 28 сент. 2024 г., 18:35 Terje J. Hanssen <<a href="mailto:terjejhanssen@gmail.com">terjejhanssen@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>
<div>
<br>
<br>
<div>Den 28.09.2024 01:22, skrev Andrew
Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="auto">
<div><br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">пт, 27 сент. 2024 г.,
23:27 Terje J. Hanssen <<a href="mailto:terjejhanssen@gmail.com" target="_blank" rel="noreferrer">terjejhanssen@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> <br>
<br>
<div>Den 27.09.2024 19:45, skrev Andrew Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="auto">
<div><br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">пт, 27 сент.
2024 г., 18:55 Terje J. Hanssen <<a href="mailto:terjejhanssen@gmail.com" rel="noreferrer noreferrer" target="_blank">terjejhanssen@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> <br>
<br>
<div>Den 27.09.2024 12:44, skrev Andrew
Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="auto">
<div><br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">пт,
27 сент. 2024 г., 12:40 Terje J.
Hanssen <<a href="mailto:terjejhanssen@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">terjejhanssen@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> <br>
<br>
<div>Den 26.09.2024 01:18, skrev
Andrew Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr"><br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On
Thu, Sep 26, 2024 at
2:06 AM Terje J. Hanssen
<<a href="mailto:terjejhanssen@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">terjejhanssen@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> <br>
<br>
<div>Den 25.09.2024
23:22, skrev Andrew
Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="auto">
<div><br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">чт, 26 сент. 2024 г., 00:16 Terje J. Hanssen <<a href="mailto:terjejhanssen@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">terjejhanssen@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> <br>
<br>
<div>Den
25.09.2024
21:33, skrev
Andrew
Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="auto">
<div><br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">ср, 25 сент. 2024 г., 18:25 Terje J. Hanssen <<a href="mailto:terjejhanssen@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">terjejhanssen@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> <br>
<br>
<div>Den
25.09.2024
00:27, skrev
Andrew
Randrianasulu:<br>
</div>
<blockquote type="cite">
<div dir="auto">try
this git
patch, do not
forgot to make
install again,
or put
profiles in
bin/ffmpeg/video
folder
manually.</div>
</blockquote>
<br>
# cd
/home/cinelerra/cinelerra-5.1<br>
# mv
/home/terje/0001-Qsv-encoders-for-testing.patch
.<br>
<br>
# git am
0001-Qsv-encoders-for-testing.patch<br>
Applying: Qsv
encoders for
testing<br>
<br>
<br>
make install
>
make_install.log
2&1<br>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">make
install >
make_install.log
2>&1 ?</div>
<br>
</div>
</blockquote>
Sorry. I
should cleanup
all ">"
with Find
& Replace
in my note,
and oversaw
here should be
two of them in
this command
;(<br>
<br>
Now make
install went
through
without faults
as I could
see, but
attach it by
email again.<br>
<br>
But unhappily,
no success
with testing
Cingg Qsv
Rendering.<br>
All attempts
so far breaks
with the
output below:<br>
<blockquote>FFMPEG::open_encoder
err: Internal
bug, should
not have
happened<br>
int
FFMPEG::open_encoder(const
char*, const
char*):<br>
</blockquote>
----------<br>
localhost:/home/cinelerra/cinelerra-5.1 # bin/cin<br>
Cinelerra
Infinity -
built: Sep 23
2024 10:31:07<br>
----------<br>
1)<br>
Loaded
hdv09_04.m2t<br>
Render: <br>
Output to
file:
/Videoklipp/QSV/hdv09_04_h264_qsv.mp4<br>
File format:
FFMPEG-mp4<br>
Compression:
h264_qsv.mp4<br>
Pixels: qsv<br>
<br>
libva info:
VA-API version
1.22.0<br>
libva info:
Trying to open
/usr/lib64/dri/iHD_drv_video.so<br>
libva info:
Found init
function
__vaDriverInit_1_21<br>
libva info:
va_openDriver()
returns 0<br>
libva info:
VA-API version
1.22.0<br>
libva info:
Trying to open
/usr/lib64/dri/iHD_drv_video.so<br>
libva info:
Found init
function
__vaDriverInit_1_21<br>
libva info:
va_openDriver()
returns 0<br>
<br>
FFMPEG::open_encoder err: Internal bug, should not have happened<br>
int
FFMPEG::open_encoder(const
char*, const
char*):<br>
open failed
h264_qsv:/Videoklipp/QSV/hdv09_04_h264_qsv.mp4<br>
Render::render_single: Session finished.<br>
--------------<br>
2a)<br>
Loaded
hdv09_04.m2t<br>
Render: <br>
Output to
file:
/Videoklipp/QSV/hdv09_04_h265_qsv.mp4<br>
File format:
FFMPEG-mp4<br>
<br>
Compression:
h265_qsv.mp4<br>
Pixels: qsv<br>
<br>
[hevc_qsv
encoder @
0x7f44e0d0bd80]
[Eval @
0x7f44e57eb6f0]
Undefined
constant or
missing '(' in
'high'<br>
[hevc_qsv
encoder @
0x7f44e0d0bd80]
Unable to
parse option
value "high"<br>
[hevc_qsv
encoder @
0x7f44e0d0bd80]
Error setting
option profile
to value high.<br>
FFMPEG::open_encoder err: Invalid argument<br>
int
FFMPEG::open_encoder(const
char*, const
char*):<br>
open failed
hevc_qsv:/Videoklipp/QSV/hdv09_04_h265_qsv.mp4<br>
Render::render_single: Session finished.<br>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
<br>
# profile=high<br>
Pixels: qsv (yuv420
isn't available)<br>
<br>
Didn't render:<br>
FFMPEG::open_encoder
err: Internal bug,
should not have
happened<br>
int
FFMPEG::open_encoder(const
char*, const char*):<br>
open failed
hevc_qsv:/Videoklipp/QSV/hdv09_04_h265_qsv.mp4<br>
Render::render_single:
Session finished.<br>
<br>
<br>
<br>
<blockquote type="cite">
<div dir="auto">
<div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
----------------<br>
2b)<br>
Compression:
h265_qsv.mp4<br>
Pixels: p010le<br>
<br>
[hevc_qsv
encoder @
0x7f93dcdb3c00]
[Eval @
0x7f93cbff06f0]
Undefined
constant or
missing '(' in
'high'<br>
[hevc_qsv
encoder @
0x7f93dcdb3c00]
Unable to
parse option
value "high"<br>
[hevc_qsv
encoder @
0x7f93dcdb3c00]
Error setting
option profile
to value high.<br>
FFMPEG::open_encoder err: Invalid argument<br>
int
FFMPEG::open_encoder(const
char*, const
char*):<br>
open failed
hevc_qsv:/Videoklipp/QSV/hdv09_04_h265_qsv.mp4<br>
Render::render_single: Session finished.<br>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
<br>
Some progress:<br>
<br>
# profile=high<br>
Pixels: yuvy422
(yuv420 isn't
available)<br>
Settings>Appearance: BT.709/MPEG2<br>
<br>
Rendered:<br>
Render::render_single:
Session finished.<br>
** rendered 5972
frames in 33.999 secs,
175.652 fps<br>
audio0 pad 64 0 (64)<br>
<br>
VLC playback OK<br>
<br>
ffprobe -hide_banner
hdv09_04_h265_qsv.mp4<br>
Input #0,
mov,mp4,m4a,3gp,3g2,mj2,
from
'hdv09_04_h265_qsv.mp4':<br>
Metadata:<br>
major_brand :
isom<br>
minor_version :
512<br>
compatible_brands:
isomiso2mp41<br>
encoder :
Lavf61.1.100<br>
Duration:
00:03:58.88, start:
0.000000, bitrate:
3359 kb/s<br>
Stream
#0:0[0x1](und): Video:
hevc (Rext) (hev1 /
0x31766568),
yuv422p(tv,
bt709/unknown/unknown,
top coded first
(swapped)), 1440x1080
[SAR 4:3 DAR 16:9],
3223 kb/s, 25 fps, 25
tbr, 12800 tbn
(default)<br>
Metadata:<br>
handler_name :
VideoHandler<br>
vendor_id :
[0][0][0][0]<br>
Stream
#0:1[0x2](und): Audio:
aac (LC) (mp4a /
0x6134706D), 48000 Hz,
stereo, fltp, 129 kb/s
(default)<br>
Metadata:<br>
handler_name :
SoundHandler<br>
vendor_id :
[0][0][0][0]<br>
<br>
</div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>ah, so it need tv
range .. try also with
Pixels nv12 (worked for
me on mediacodec)<br>
</div>
</div>
</div>
</blockquote>
<br>
Not really.,<br>
Also the default at first
startup, appearance
BT.601-PAL/MJPEG, worked, and
then ffprobe output<br>
Stream #0:0[0x1](und): Video:
hevc (Rext) (hev1 / 0x31766568),
yuv422p(pc,
bt470bg/unknown/unknown, top
coded first (swapped)),
1440x1080 [SAR 4:3 DAR 16:9],
3248 kb/s, 25 fps, 25 tbr, 12800
tbn (default)<br>
<br>
I just changed it to BT.701/MPEG
which is for HD video, and I
also remembed you also suggested
this in a previous thread.<br>
<br>
Both yuv422 and nv12 work.<br>
<br>
But why isn't also the usual
yuv420p available for h264 and
h265?<br>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">not sure, may be qsv
library does not support this?</div>
<div dir="auto"><br>
</div>
<div dir="auto">at least I can't see it
in source</div>
<div dir="auto"><br>
</div>
<div dir="auto"><a href="https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavcodec/qsvenc_hevc.c#l399" rel="noreferrer noreferrer noreferrer" target="_blank">https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavcodec/qsvenc_hevc.c#l399</a><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> <br>
Possibly also rename h265 to
hevc as ffmpeg use?<br>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">ok, I'll rename it and
add nv12 as default pix format.</div>
<div dir="auto"><br>
</div>
<div dir="auto">can you also see if h264
works with nv12?</div>
</div>
</blockquote>
<br>
No, h264 doesn't work with nv12, neither
with # profile=high<br>
<br>
I've extracted three ffmpeg QSV code lines
below with qsv and yuv420p used from<br>
<a href="https://trac.ffmpeg.org/wiki/Hardware/QuickSync#FullExamples" rel="noreferrer noreferrer noreferrer" target="_blank">https://trac.ffmpeg.org/wiki/Hardware/QuickSync#FullExamples</a><br>
<br>
<font face="Courier New, Courier, monospace">ffmpeg
-hwaccel qsv -c:v h264_qsv -i input.mp4
-vf hwdownload,format=nv12 -pix_fmt
yuv420p output.yuv<br>
ffmpeg -hwaccel qsv -c:v h264_qsv -i
input.mp4 -vf hwdownload,format=nv12
-pix_fmt yuv420p -f sdl -<br>
ffmpeg -init_hw_device qsv=hw
-filter_hw_device hw -f rawvideo -pix_fmt
yuv420p -s:v 1920x1080 -i input.yuv -vf
hwupload=extra_hw_frames=64,format=qsv
-c:v h264_qsv -b:v 5M output.mp4<br>
</font><br>
<br>
On the other hand the following VAAPI
section and code lines from<br>
'The encoders only accept input as VAAPI
surfaces. If the input is in normal memory,
it will need to be uploaded before giving
the frames to the encoder - in the ffmpeg
utility, the <code>hwupload</code> filter
can be used for this. It will upload to a
surface with the same layout as the software
frame, so it may be necessary to add a <code>format</code>
filter immediately before to get the input
into the right format (hardware generally
wants the <code>nv12</code> layout, but
most software functions use the <code>yuv420p</code>
layout). The <code>hwupload</code> filter
also requires a device to upload to, which
needs to be defined before the filter graph
is created.' <br>
<br>
<font face="Courier New, Courier, monospace">ffmpeg
-vaapi_device /dev/dri/renderD128 -i
input.mp4 -vf 'format=nv12,hwupload' -c:v
h264_vaapi output.mp4<br>
<br>
</font><br>
and from my own ffmpeg test<br>
<br>
<font face="Courier New, Courier, monospace">ffmpeg
-hide_banner -hwaccel_output_format qsv -i
hdv09_04.m2t hdv09_04_h264_qsv.mp4<br>
</font></div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">note that this line uses *software*
x264 encoder, not qsv.</div>
</div>
</blockquote>
<br>
Yeah, I was confused by <font face="Courier New, Courier, monospace">the
"-hwaccel_output_format qsv"<br>
See below for another attempt<br>
<br>
</font>
<blockquote type="cite">
<div dir="auto">
<div dir="auto"><br>
</div>
<div dir="auto">Does av1_qsv/vp9_qsv works? Can you
also try with progressive (not interlaced) video?</div>
<br>
</div>
</blockquote>
Sorry, none of av1_qsv nor vp9_qsv pixel formats work
(interlaced hdv input)<br>
I was looking for a progressive video to download?<br>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">you can try to add deinterlacing filter in
cingg? Do not forgot to set format- > interlacing to
progressive.</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> <br>
But I tested "h284_qsv/nv12/profile high" rendering wiht
SD-DV file (interlaced) and it worked<br>
<br>
<font face="Courier New, Courier, monospace">FFStream::encode_frame:
encode failed.<br>
file: /Videoklipp/QSV/dv01_07_h264_qsv.mp4<br>
err: Resource temporarily unavailable<br>
FFStream::flush failed<br>
:<a rel="noreferrer noreferrer">file:/Videoklipp/QSV/dv01_07_h264_qsv.mp4</a><br>
err: Operation not permitted<br>
Render::render_single: Session finished.<br>
** rendered 2832 frames in 5.592 secs, 506.438 fps<br>
audio0 pad 32 0 (32)</font><br>
<br>
---------------------<br>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">so, h264/5 qsv in cingg works, but vp9/av1 not?</div>
<div dir="auto"><br>
</div>
<div dir="auto">I'll add two more silly patches as attachment,
they hopefully correct hevc/h264 profiles and add remark about
how they only usable with ext. ffmpeg (for now).</div>
<div dir="auto"><br>
</div>
<div dir="auto">Sorry about such extended debugging. Thanks for
patience (over the years!)</div>
<div dir="auto"><br>
</div>
</div>
</blockquote>
<br>
I did a summary testing today with results before patching:<br>
<br>
1)<br>
dv_movie.mpg (progressive)<br>
dv01_07.dv (interlaced)<br>
<br>
av1_qsv/vp9_qsv rendering works with nv12 and p010le<br>
h264_qsv rendering works with nv12<br>
<br>
2)<br>
hdv09_04.m2t (interlaced)<br>
<br>
av1_qsv/vp9_qsv nv12/p010le error ...<br>
h264_qsv nv12 error ...<br>
hevc_qsv nv12/p010le does render #high profile<br>
<br>
hdv_movie_0.mpg (progressive)<br>
av1_qsv/vp9_qsv nv12/p010le error ...<br>
h264_qsv nv12 error ...<br>
hevc_qsv nv12/p010le does render #high profile<br>
<br>
3)<br>
hd01.mov (interlaced)<br>
<br>
av1_qsv/vp9_qsv nv12/p010le error ...<br>
h264_qsv nv12 error ...<br>
hevc_qsv nv12/p010le does render #high profile<br>
<br>
---------------------------<br>
<br>
After adding the latest two patches and make install, 1) above
doesn't work anymore.<br>
Tried also to comment out each of the two new options.<br>
Any idea why?<br></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">no idea o.O </div><div dir="auto"><br></div><div dir="auto">does "git reset --hard git-hash-before-you-added-patches" && make install restore 1) ?</div><div dir="auto"><br></div><div dir="auto">normal ffmpeg renders all three input files with qsv encoders, right?</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<br>
I have not continued with 2) and 3) above so far.<br>
<br>
<br>
</div>
</blockquote></div></div></div>