<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<br>
<br>
<div class="moz-cite-prefix">Den 28.09.2024 17:42, skrev Andrew
Randrianasulu:<br>
</div>
<blockquote type="cite"
cite="mid:CA+rFky5erORCJs=rQbwhekZ_kuL0VdqOk+jW3o35iTsrufgxow@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<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"
moz-do-not-send="true" class="moz-txt-link-freetext">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 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"
moz-do-not-send="true"
class="moz-txt-link-freetext">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"
moz-do-not-send="true"
class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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"
moz-do-not-send="true"
class="moz-txt-link-freetext">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"
moz-do-not-send="true"
class="moz-txt-link-freetext">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"
moz-do-not-send="true">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 <br>
</div>
</div>
</blockquote>
<br>
To verify if my patch procedure was right (?) here is my procedure
and output:<br>
<br>
# git am
0001-Add-nv12-as-def.-pixformat-for-qsv-profiles-clarify-.patch<br>
Applying: Add nv12 as def. pixformat for qsv profiles, clarify when
it work<br>
.git/rebase-apply/patch:18: new blank line at EOF.<br>
+<br>
warning: 1 line adds whitespace errors.<br>
localhost:/home/cinelerra/cinelerra-5.1 <br>
<br>
# git am
0002-Modify-remaining-_qsv-orofiles-to-use-nv12-fix-typo-.patch<br>
Applying: Modify remaining _qsv orofiles to use nv12, fix typo in
hevc_qsv<br>
<br>
# make install > make_install.log 2>&1<br>
<br>
Attach make_install.log by email<br>
<br>
<blockquote type="cite"
cite="mid:CA+rFky5erORCJs=rQbwhekZ_kuL0VdqOk+jW3o35iTsrufgxow@mail.gmail.com">
<div dir="auto">
<div dir="auto"><br>
</div>
<div dir="auto">does "git reset --hard
git-hash-before-you-added-patches" && make install
restore 1) ?</div>
</div>
</blockquote>
<br>
Could you explain or detqail this a bit more?<br>
<br>
<blockquote type="cite"
cite="mid:CA+rFky5erORCJs=rQbwhekZ_kuL0VdqOk+jW3o35iTsrufgxow@mail.gmail.com">
<div dir="auto">
<div dir="auto"><br>
</div>
<div dir="auto">normal ffmpeg renders all three input files with
qsv encoders, right?</div>
</div>
</blockquote>
<br>
I think so, but can try afterwards.<br>
<br>
<blockquote type="cite"
cite="mid:CA+rFky5erORCJs=rQbwhekZ_kuL0VdqOk+jW3o35iTsrufgxow@mail.gmail.com">
<div dir="auto">
<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>
</blockquote>
<br>
</body>
</html>