| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
w/ AMD NAVI10), untested: h265, vp8 and vp9
Tested using lates mesa master branch patched with
- contrib/mesa/A00-gallium_vaapi_encpackedheader01-commit-5e10db6.patch
to enable Matroska and correct packed header in general using ffmpeg.
Test hardware and configuration:
- Mesa Gallium driver 20.2.0-devel for AMD Radeon RX 5700 XT (NAVI10, DRM 3.37.0, 5.7.0-1-amd64, LLVM 9.0.1)
Codev h264_vaapi, avcodec_open options: rc_mode=CQP,qp=24,b_depth=2,profile=100,level=40 (profile high, level 4.0)
HD1080 source ~45min with 212fps
PSNR and SSIM difference to x264 below 1%,
having x264 using profile high, level 4.0, preset fast, rc 23.
Both using constant-quality w/ variable bitrate.
++++
If FEATURE vaapi is enable (autodetected),
the following libraries are linked: X11 va va-drm va-x11.
- hb.c:
- Adding global static 'vaapi_device_ctx0' default device
initialized via hb_avcodec_init() and released via hb_avcodec_free().
The 'vaapi_device_ctx0' is used in vaa_common hb_avcodec_vaapi_set_hwframe_ctx(..).
- hb_avcodec_vaapi_set_hwframe_ctx() attaches the new AVHWFramesContext
to the AVCodecContext at initializing the encoder.
This is the final sink for the vaapi hw-encoder
and Encode(..) performs the frame conversion into it.
- hb_avcodec_test_encoder(..) adds VAAPI branch,
needs refinement
- encavcodec.c
- adding VAAPI branches, enabling available, needs refinement.
Currently profile and level are set to the user preferences,
additionally 'b_depth=2' is being passed.
- added hb_avcodec_test_encoder*(..) functions, currently only
used to check vaapi-*codec*-availability.
We used this codefragment regularly in an earlier HB version.
+++
Discussion:
Previous version of this patch of mine worked well on Intel hardware,
as described above - AMD NAVI10 also performs quite well.
VAAPI Workflow:
- It uses hardware frames on the target device, which are being transported
from the software device. The frame transport implicitly converts the pix_fmt.
- AVCodecContext's pix_fmt uses AV_PIX_FMT_VAAPI
- AVHWFramesContext: format uses AV_PIX_FMT_VAAPI and sw_format AV_PIX_FMT_NV12,
the latter hinting on the actual hw-frame's target format.
- AV_PIX_FMT_NV12 uses interleaved UV data, where AV_PIX_FMT_YUV420P uses
seperated planes. Both use a separated Y plane upfront.
Therefor both formats are not picture compatible, memory requirements are same.
- Encode(..) allocates a hw_frame and the source frame is being transported
to the hw-frame target using the pic_fmt conversion to NV12.
Finally the hw_frame is being sent 'avcodec_send_frame' and the code-path re-aligns
with non VAAPI.
Further fixes to do:
Validate whether 'b_depth=2' (b-frames) works for all vaapi implementations,
add custom extra-video-encoder field!
|
|
|
|
| |
get some decode support (not yet)
|
| |
|
| |
|
|
|
|
| |
Windows (mingw-w64) only for now.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
encoding mode when available.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Numerous bug fixes.
|
|
|
|
| |
Fixes https://github.com/HandBrake/HandBrake/issues/2809
|
|
|
|
|
|
|
| |
This patch (with a minor modification) has been merged upstream
in http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=08b1d1d8122517d07f2335437cde0aeedc50143f,
which was part of the 4.1 release - and we currently build
4.2.2.
|
|
|
|
|
| |
Produced by security cameras, see:
https://forum.handbrake.fr/viewtopic.php?f=11&t=39824
|
| |
|
|
|
|
| |
Simplifies code, removes encvobsub.c (was never used) and decvobsub.c.
|
|
|
|
| |
simplifies code, eliminates deccc608sub.c
|
| |
|
|
|
|
| |
should be global and more reliable than our own server.
|
| |
|
|
|
|
|
|
| |
--optimize=size-aggressive.
Closes #2571.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
maybe fixes https://github.com/HandBrake/HandBrake/issues/2248
|
|
|
|
| |
Closes #2237.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apple will not show a track name if it doesn't match the current locale
or it's language is not "und". This patch results in the language being
set to "und".
writes 3gpp track names for all language variations in metadata.
when the language is not specified, uses "und" as default.
HandBrake doesn't actually allow multiple track name languages, but one
of the side effects of this patch is to use "und" when the track name
language is unspecified. Before this patch, language specific variants
of metadata were ignored and "eng" was always set as the language.
|
| |
|
| |
|
|
|
|
|
| |
gcc 9 is quite a lot chattier and clutters the build log with useless
information :\
|
|
|
|
| |
Pick up external libraries from LOCALBASE.
|
| |
|
| |
|
|
|
|
|
| |
It is autodetected and results in link failure if ffmpeg finds it
bacause we do not add it to final link flags
|
|
|
|
|
|
| |
Assuming you built HandBrake with 'configure --enable-qsv' and you have
built and installed Intel MediaSDK in a directory that is in your LD search
path, the QSV encoders now work. HW decode is not supported.
|
|
|
|
| |
Mistakenly removed in 66a362ee92331fa1393fbdb0c1e1b26d8f39de6a.
|