| 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!
|
|
|
|
| |
Enables display of effects of filters on preview images
|
| |
|
| |
|
|
|
|
|
|
|
| |
If fastdecode was set while encoder was x264, the value would be used
when the codec was changed to x265.
Fixes https://github.com/HandBrake/HandBrake/issues/3005
|
|
|
|
|
|
|
|
| |
This file is only supposed to be used by desktop managers to get info
about the app. On windows, the file is unused.
Since 368576dc9aa94c792a309e227c9a893776d8cdd1, the translation step
for this file requires gettext 0.20 or newer.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The --export-dynamic flag is a no-op when targeting mingw; when used,
binutils ld prints this warning:
warning: --export-dynamic is not supported for PE+ targets, did you mean --export-all-symbols?
The "--exclude-libs ALL" flag also is unnecessary; as this is an
exe, there's no symbols being exported automatically, so there's no
need to exclude anything.
LLD's COFF/mingw backend doesn't implement these flags, and this
fixes linking ghb.exe with it.
|
|
|
|
|
|
|
|
| |
Clicking on "Close" emits a "response" signal which was ignored. Make
the button work by calling gtk_dialog_run(), as it's done for similar
dialogs in callbacks.c.
Fixes https://github.com/HandBrake/HandBrake/issues/2405
|
| |
|
|
|
|
| |
Also, allow deleteion of categories from the presets window
|
| |
|
|
|
|
| |
oops, previous commit only handled start times correctly
|
| |
|
| |
|
| |
|
|
|
|
| |
they were all showing 0:00 start time :(
|
|
|
|
|
|
|
|
| |
When converting from using intltool to gnu gettext, the definition of
DATADIRNAME was lost and resulted in an incorrect base directory in the
call to bindtextdomain.
Fixes https://github.com/HandBrake/HandBrake/issues/2438
|
|
|
|
| |
fixes https://github.com/HandBrake/HandBrake/issues/2411
|
| |
|
| |
|
|
|
|
| |
Remove trailing whitespace in "*.c", "*.m", "*.h" and "*.cpp" files.
|
|
|
|
| |
Migrate all locales (also < 100% status) to github. Many many thanks to victorr2007.
|
| |
|
|
|
|
|
| |
gettext can do the whole translation parsing job now and intltool is
deprecated. it is not available in flatpak's gnome sdk
|
|
|
|
|
|
|
| |
Newest versions appear to have a "common.h" somewhere that is
interfering with libhb/common.h.
move headers into "handbrake" subdirectory
|
|
|
|
| |
Rename hb.h to handbrake.h
|
|
|
|
|
|
|
| |
Allows us to distinguish a selection of "any" which means match any
language from "und" which means the language is not known.
Fixes https://github.com/HandBrake/HandBrake/issues/731
|
| |
|
|
|
|
| |
Fixes https://github.com/HandBrake/HandBrake/issues/2244
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Works similar to audio track names.
If source has a subtitle track name, hb_subtitle_t.name is set.
To set output subtitle track name, set hb_subtitle_config_t.name.
Source track names are available in title returned by hb_title_to_dict
and hb_title_to_json in SubtitleList[].Name
In job dict it is also SubtitleList[].Name
hb_preset_job_init and hb_preset_job_init_json initialize output tracks
with the source track name.
Also adds subtitle name support to LinGui
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It gets stored in new hb_audio_config_t.in.name field.
It is available in the title dict read through hb_title_to_dict() or
hb_title_to_json() in AudioList[].Name.
When a job is initialized with hb_preset_job_init or
hb_preset_job_init_json(), output audio tracks are initialized with the
source track name.
Also adds output track name initialization to LinGui.
|
| |
|
| |
|
|
|
|
| |
I.e. do not highlight the entire row when clicked with the mouse
|
|
|
|
|
|
|
|
|
| |
GtkListBox is more flexible than GtkTreeView. It is possible now to
process key press events without creating a custom text cell renderer.
Also due to the way event handling changes in GTK4, it was no longer
even possible to create a custom cell renderer that can process key
events. So this GtkListBox implementation is compatible with GTK4.
|
| |
|
|
|
|
| |
Because we can :*p
|
|
|
|
|
| |
In GTK4, GtkSpinButton is no longer a subclass of GtkEntry. Must use
GtkEditable APIs in GTK4
|
|
|
|
|
|
|
| |
These are not supposed to be visible, but gtk4 is not respecting the
"draw" property of GtkSeparatorToolItem. When this is fixed, I can
restore proper spacing between "Open Source" and "Add To Queue" toolbar
buttons.
|
|
|
|
|
|
|
|
|
|
|
|
| |
GTK4 added a new widgit GtkPicture that is almost identical to GtkImage.
The main difference appears to be that GtkImage now scales down the size
of the given pixbuf using some undocumented algorithm. It's filling
some of the space available, but not all of it. But it isn't a hard
size limit because making the window bigger continues to make the image
bigger.
GtkPicture shows the pixbuf unscaled as expected. So use GtkPicture for
the preview image :*(
|
|
|
|
| |
language search requires key-press handling which changed in gtk4
|
|
|
|
|
|
|
|
|
| |
gtk4 makes it very difficult to handle key-press in a GtkCellRenderer
I will need to rewrite the capter list as a GtkListBox instead of a
GtkTreeView to re-enable this.
key-press handling is used here to automatically move to the next
chapter when finished editing the current
|
|
|
|
|
| |
Event handling in gtk4 is substantially different than gtk3. This
restores handling of delete key on queue rows in gtk4 port
|
|
|
|
| |
This is the modern gtk4 way...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Known issues and todo:
notebooks, use GtkNotebookPage semantics in ui file
fix keypress delete in queue_list
fix dest_file grab-focus? (highlight of filename for editing)
focus-in/out with GtkEventControllerKey
preview_state_cb how to handle icon-ified preview?
preview_configure_cb, saving preview window size?
accelerator alt-d grab-focus destination
key-press-event in chapter list, ghbcellrenderertext -> GtkEventControllerKey
Why doesn't summary preview image scale correctly?
"System" in about dialog? why is the tab there when "system" prop not set?
GtkSeparatorToolitem seems to ignore "draw" prop?
|
|
|
|
| |
Fixes https://github.com/HandBrake/HandBrake/issues/2207
|
| |
|
|
|
|
|
| |
move to "General" preferences pane
make text consistent
|
| |
|
|
|
|
|
| |
Make it consistent with other UIs
Fixes https://github.com/HandBrake/HandBrake/issues/1309
|