summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'hw-encoder-nvenc' into hw-encoder-jointhw-encoder-jointSven Gothel2021-04-201-10/+52
|\
| * nvenc-encoder2: Merging my CQ (VBR) settings of old 'nvenc-encoder' branch ↵hw-encoder-nvencSven Gothel2021-04-201-10/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w/ new master branch First of all, big KUDOS to the Handbreak team to pull-in and maintain the libav -> ffmpeg transition as well as the nvenc-encoder work load. This new nvenc-encoder branch uses my settings for CQ (VBR) on NVENC, while giving some references to the documentation. I like the new init_qp* settings, good job. What might be helpful here is to have 'bf' paramter for B frames to be set, as well as NVENC specific parameters like AQ and LOOKAHEAD? Here I use the recommended best values and 'bf=2', a compromise between low animation and sports. Since LOOKAHEAD does a dynamic b-frame adaptation, this should be OK - if not great. Below my comment section about my settings: // NVEnc Performance see Chapter 4 of Video_Codec_SDK_8.0.14/doc/NVENC_Application_Note.pdf // [email protected] usually uses the nvenc-h264 setting: // - constant quality (cq) of 26-24, which enforces variable bitrate (vbr), // - constant framerate (cfr) w/ framerate=source // - preset=hq (high quality), profile=high, level=auto // // Resulting to av_opts: // 'preset=hq,rc=vbr_hq,cq=26.00,init_qpP=26.00,init_qpB=28.00,init_qpI=24.00,bf=2,rc-lookahead=16,spatial-aq=1,forced-idr=1,profile=high' // // NVEnc: // - GeForce GTX 950, has Compute SM 5.2 // - AQ enabled // - Lookahead enabled: depth 16, scenecut enabled, B-adapt enabled. // // This achieves w/ HD 1080p source and even frame cropping in Handbreak around 160fps, // matching the net expected of around 270fps less consumption via decoding and cropping.
* | VAAPI: Remove merge conflict, duplicate --[enable|disable]-vaapi entry in ↵hw-encoder-vaapiSven Gothel2021-04-201-4/+0
| | | | | | | | configure.py
* | VAAPI: Add new HB_GID_VCODEC_*_VAAPI IDsSven Gothel2021-04-201-0/+4
| |
* | hw-encoder-vaapi: Build: Enable VAAPI only on linux and freebsd, i.e. this ↵Sven Gothel2021-04-201-0/+11
| | | | | | | | patch drops mingw.
* | hw-encoder-vaapi: Enables VAAPI if available and supported for h264 (tested ↵Sven Gothel2021-04-2017-20/+592
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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!
* encavcodecInit/encavcodecaInit: Enable libav verbosity and show codec ↵hw-encoder-baseSven Gothel2021-04-202-0/+32
| | | | options if global_verbosity_level >= 3
* nvenc-encoder2: ffmpeg/module.defs: Removed 'disable-hwaccels' as I hoped we ↵Sven Gothel2021-04-201-1/+0
| | | | get some decode support (not yet)
* preview: fix filter chain input pix_fmtHEADmasterJohn Stebbins2021-04-171-1/+1
| | | | some filters were producing psychedelic results
* IRC fix attempt 2Scott2021-04-161-2/+2
|
* Attempt to fix IRC notifications.Scott2021-04-161-0/+2
|
* Update README.markdownScott2021-04-161-1/+0
|
* Update README.markdownScott2021-04-161-2/+3
|
* Update README.markdownScott2021-04-161-1/+6
|
* contrib: backport zimg NEON alignment fix.Damiano Galassi2021-04-161-0/+26
|
* Updating THANKS file to add MacStadiumScott2021-04-161-0/+2
|
* Limit to 1 launch job for debugging the buildScott2021-04-131-1/+1
|
* WinGui: use new api hb_get_preview3 for previews.sr552021-04-1316-562/+417
|
* WinGui: Fix an issue where the queue buttons would not update correctly if ↵sr552021-04-131-1/+2
| | | | the jobs were started with the queue window closed.
* Testing a build fix for Github ActionsScott2021-04-131-6/+1
|
* MacGui: use new api hb_get_preview3 for previews.Damiano Galassi2021-04-136-53/+42
|
* libhb: store the color code points in hb_image_s. A UI can use this ↵Damiano Galassi2021-04-132-0/+6
| | | | information to display the image in the proper colorspace.
* preset: don't add rotate to job when "angle=0:hflip=0"John Stebbins2021-04-121-1/+3
|
* rotate: invert par when rotating by 90John Stebbins2021-04-121-9/+13
| | | | | How this was missed for so long, I don't know. I guess nobody ever used anamorphic settings with rotate.
* pad: prevent invalid settings reaching avfilterJohn Stebbins2021-04-121-2/+3
| | | | avfilter does not gracefully handle invalid pad width or height
* LinGui: use new api hb_get_preview3 for previewsJohn Stebbins2021-04-125-270/+78
| | | | Enables display of effects of filters on preview images
* Add ability to apply filters to previewsJohn Stebbins2021-04-128-100/+407
| | | | | | | | New APIs hb_get_preview3 and JSON version hb_get_preview3_json to retrieve a cached preview image and apply relevant filters from an hb_job_t to the image. Returned image also has PAR applied, i.e. PAR of image is 1:1
* muxavformat: fix compiler indentation warningJohn Stebbins2021-04-121-1/+1
|
* chroma_smooth: copy the color info to the newly created buffers.Damiano Galassi2021-04-081-0/+11
|
* Missed reference to 9.1Scott2021-04-031-1/+1
|
* Update Windows toolchain to 9.2.0Scott2021-04-031-6/+6
|
* Fixes a grammatical errorShakil-Shahadat2021-04-031-1/+1
|
* WinGui: Fix an issue that blocked preset imports. Fixes #3523sr552021-04-031-5/+0
|
* qsv: allow to use higher hardware version for new platformsagalin892021-04-021-1/+1
|
* qsv: improve encoder error handlingagalin892021-04-023-7/+24
|
* qsv: fix platform messageagalin892021-03-312-2/+1
|
* WinGui: When adding a new preset, select it rather than displaying the ↵sr552021-03-313-6/+19
| | | | current preset as modified.
* WinGui: Added padded marked to the summary tab.sr552021-03-314-3/+23
|
* WinGui: Implement the Pad filter in the UI. (For testing - Note, summary, ↵sr552021-03-2910-87/+267
| | | | preview and preset support is not implemented yet.)
* qsv: fix hevc/av1 10bit -> hevc 10bitagalin892021-03-291-3/+5
|
* Fixed issue where HandBrakeEncoderHelpers threw exceptions after falling ↵David Rickard2021-03-281-8/+21
| | | | | | | back to no hardware mode. It was checking initSuccess which had not been set to true. Changed initSuccess to a local variable and changed to check globalInitialized instead. Also properly set initNoHardware flag when we do auto fallback to no hardware mode.
* WinGui: Refactor the Worker HttpServer class and fix some issues caused by ↵sr552021-03-247-94/+159
| | | | the Caliburn Micro upgrade.
* qsv: fix adapter details info when multiple runsagalin892021-03-214-26/+57
|
* WinGui: Fixing typos on OldOperatingSystem stringPatriccollu2021-03-181-2/+2
|
* LinGui: Fix typo in messageAndrew Lewis2021-03-143-3/+3
|
* [WinGUI] Add Initial support for Persian (Iran) localeNomis1012021-03-143-0/+2938
| | | | Still not finished, but will soon, so add first initial support. I've confirmed with the localizer, that "Persian (Iran) (فارسی)" is correct.
* [Win] Update some localesNomis1012021-03-1422-409/+758
|
* WinGui: Correctly reload WebM container selection when loading presets. #3478sr552021-03-141-0/+3
|
* WinGui: Add a Soft warning about Windows 7 and 8 support being ceased. The ↵sr552021-03-146-12/+42
| | | | application will still run but certain features are unavailable or broken.
* qsv: redesigned adapter capabilities collection and reporingagalin892021-03-1215-483/+959
|