summaryrefslogtreecommitdiffstats
path: root/gtk/src
Commit message (Collapse)AuthorAgeFilesLines
* VAAPI: Initial Patch (WIP)vaapi-encoderSven Gothel2018-01-122-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Enabling VAAPI for GNU/Linux (SYS_LINUX) only, adding libraries 'X11 va-drm va-x11 va' and USE_VAAPI define. - hb.c: - Adding global static 'vaapi_device_ctx0' default device initialized via hb_avcodec_init() and released via hb_avcodec_free() - hb_avcodec_vaapi_set_hwframe_ctx() attaches the new AVHWFramesContext to the AVCodecContext - hb_avcodec_test_encoder(..) adds VAAPI branch, needs refinement - encavcodec.c - adding VAAPI branches, enabling available, needs refinement Discussion: First of all, only on Intel hardware I was able to produce a correct encoded result. On AMD we seemingly have YUV420 / NV12 artifacts. Therefor I need to learn more details on the pix_fmt handling as described below. While adding the VAAPI ffmpeg support the following might be an issue. Usually HB seems to operate with AV_PIX_FMT_YUV420P in general being set in the AVCodecContext's pix_fmt. VAAPI performs as follows: - It uses hardware frames on the target device, which are being transported from the software device. Both format should be allowed to differ?? - 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(..) hardcodes the source frame's to AV_PIX_FMT_YUV420P in VAAPI case, usually the AVCodecContext's pix_fmt is being used. I need to identify how HB uses AVCodecContext's pix_fmt, i.e. respects the desired pix_fmt. Then a hw_frame gets allocated and the source frame is being transported to this target. Probably it happens here in VAAPI AMD case, that the YUV420 data is not being transformed to NV12. Now the hw_frame is being sent 'avcodec_send_frame' and the code-path re-aligns with non VAAPI. Further fixes to do: Naming of VAAPI's profile and level .. figuring out which settings are generally accepted. Now the bf (b-frames) is set to zero, since it produces a failure otherwise. The latter should only happen in certain profiles, but .. it does even in 100=high
* Merge branch 'ffmpeg' into nvenc-encoderSven Gothel2018-01-1241-43/+43
|\
| * Update copyright dates to 2018.Bradley Sepos2018-01-0141-42/+42
| |
| * LinGui: fix display of volume name in queueJohn Stebbins2017-12-291-1/+1
| | | | | | | | Fixes https://github.com/HandBrake/HandBrake/issues/1086
* | Merge branch 'ffmpeg' into nvenc-encoderSven Gothel2017-12-2811-991/+0
|\|
| * LinGui: remove unused icon filesJohn Stebbins2017-12-2611-991/+0
| |
* | NVENC: Fix HB_VCODEC_FFMPEG_H264 -> HB_VCODEC_FFMPEG_H264_{NVENC,VAAPI}Sven Gothel2017-12-281-2/+2
| | | | | | | | | | | | Adding the specific FFMPEG encoder suffix allows support for more encoders like VAAPI. Cleaned up overall HB_VCODED_* to 32bit signed integer space within 0x7FFFFFFF.
* | NVENC: Remaining fixes for 1st GNU/Linux GTK working draftSven Gothel2017-12-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix HB_VCODEC_FFMPEG_MASK covered values to lie within mask - Fix HB_VCODEC_FFMPEG_H264 usage (gtk version missed a rename) - Fix FFMPEG hwaccel build is required for Nvenc Basically working: - h264_nvenc - hevc_nvenc Possible optimization: - Even in constant quality mode, a user ceiling bit_rate might be desirable, currently only the maximum is used like in VP8/9: w x h x fps Remaining issues: 1) Muxer issue with h264_nvenc + MKV, ffprobe shows: [h264 @ 0x55ae4dedacc0] sps_id 32 out of range [h264 @ 0x55ae4dedacc0] Invalid nal size 1677734572 [h264 @ 0x55ae4dedacc0] missing picture in access unit with size 40644 Notable: This does not happen with hevc_nvenc Tested: - GNU/Linux Debian 9 - GeForce GTX 950 - BD 1080p source, cropped: Around 70fps h264 + hevc
* | Initial nvenc h264/hevc encoder patchMatthew Lazarow2017-12-262-2/+4
|/
* LinGui: fix margins around destination file settingsJohn Stebbins2017-12-231-2/+2
|
* LinGui: remove preset options menuJohn Stebbins2017-12-231-88/+0
|
* LinGui: add support for alternate iconsJohn Stebbins2017-12-2332-25/+39903
| | | | GTK will use lower res icons if available for lower res screens.
* LinGui: update additional iconsJohn Stebbins2017-12-233-385/+52
|
* LinGui: add option to make new preset default in "Save As"John Stebbins2017-12-232-5/+34
|
* LinGui: fix window size queries on waylandJohn Stebbins2017-12-231-8/+10
|
* LinGui: update activity and add-queue iconsJohn Stebbins2017-12-232-250/+40
|
* LinGui: allow chaning description in preset renameJohn Stebbins2017-12-232-16/+97
|
* LinGui: don't abbreviate PAR and DAR in summaryJohn Stebbins2017-12-221-1/+2
|
* LinGui: improve display aspect formattingJohn Stebbins2017-12-221-4/+4
|
* LinGui: don't mark preset modified on angle changeJohn Stebbins2017-12-221-1/+0
| | | | The angle setting is not part of a preset
* LinGui: add some space to reduce clutterJohn Stebbins2017-12-221-1/+1
|
* LinGui: append source info to source nameJohn Stebbins2017-12-222-4/+5
| | | | Instead of right justification
* LinGui: remove bold attribut from some labelsJohn Stebbins2017-12-221-5/+5
|
* LinGui: make all the preset menus consistentJohn Stebbins2017-12-222-12/+40
|
* LinGui: rename "Dimensions:" to "Size:" and move...John Stebbins2017-12-222-84/+43
| | | | Move under Filters
* LinGui: add preset options inline menuJohn Stebbins2017-12-223-24/+317
|
* LinGui: add preset "Save As" optionJohn Stebbins2017-12-223-11/+69
| | | | | | Adds "Save As" menu option and "Save New Preset" button. Preset "Save" menu option behaviour changes to to only allow updating the current preset.
* LinGui: Add "To:" before destination directory chooserJohn Stebbins2017-12-221-1/+18
|
* LinGui: Some GUI consistency changesJohn Stebbins2017-12-228-253/+309
| | | | | | Bold "Title:", "Angle:", "Duration:" Add "Range:" Change "through" to "-"
* LinGui: Don't show presets window by defaultJohn Stebbins2017-12-201-1/+1
|
* LinGui: fix a main window resizing issueJohn Stebbins2017-12-201-1/+1
|
* LinGui: remove "Reset All Titles" buttonJohn Stebbins2017-12-206-33/+50
| | | | | | | Replace with a preference option that synchronizes all title settings by default. This makes the linux gui behaviour consistant with the other guis by default. Titles can have independent settings by unchecking the preference option.
* build: Additional hashbang compatibility for BSD-like systems.Bradley Sepos2017-12-031-1/+1
| | | | Fixes #1040.
* LinGui: handle command line the GApplication wayJohn Stebbins2017-11-121-23/+25
| | | | Fixes https://github.com/HandBrake/HandBrake/issues/995
* LinGui: don't free uninitialized things on exitJohn Stebbins2017-11-122-6/+12
|
* LinGui: fix build with glib older than 2.44John Stebbins2017-11-073-2/+25
|
* LinGui: fix small memory leaksJohn Stebbins2017-11-061-0/+2
|
* LinGui: fix scan progress displayJohn Stebbins2017-11-062-17/+55
| | | | Lost the text during one of the UI shuffles
* LinGui: enforce preset heirarchy in presets listJohn Stebbins2017-11-061-145/+156
| | | | Make drag-n-drop respect the single folder level heirchary
* LinGui: Add "Category" dropdown to preset save dialogJohn Stebbins2017-11-068-236/+373
| | | | | | | | | | | This replaces the "New Folder" option in the presets menu. It enforces the folder structure we have agreed to and hopefully helps the user keep things organized. Note that users are allowed to save a custom preset to the same "Category" as an official preset. When they do this, a new custom category is created with the same name and the preset is saved in that folder.
* LinGui: allow angles when dvdnav is disabledJohn Stebbins2017-11-062-3/+0
| | | | Other source types can also have multiples angles
* LinGui: clean up UI xml a bitJohn Stebbins2017-11-061-135/+25
| | | | and remove some cruft.
* LinGui: add preset description tooltip to preset menu buttonJohn Stebbins2017-11-062-1/+7
|
* LinGui: preset "Reset" -> "Reload"John Stebbins2017-11-063-10/+11
|
* LinGui: allow preset delete when list selection is not highlightedJohn Stebbins2017-11-061-64/+63
| | | | | | Previously, you could only delete the currently highlighted item. Now you can delete the current item in the presets menu button, even if settings have been modified and the list item is not highlighted.
* LinGui: add preset "modified" indicator and reset buttonJohn Stebbins2017-11-063-32/+100
| | | | | When a setting is modified, the word "Modified" appears next to the preset selection menu button and the "Reset" button is enabled.
* LinGui: reinitialize presets menu when list changesJohn Stebbins2017-11-061-8/+30
|
* LinGui: open preset selection menu to right of buttonJohn Stebbins2017-11-061-2/+2
|
* LinGui: Add preset selection menuJohn Stebbins2017-11-0616-801/+1058
| | | | | | | And convert appliction to a GtkApplication. This allows the use of GActions for menu and other control actions. It's a cleaner simpler interface that automatically tracks when multiple widgets perform the same action and keeps their state in sync.
* LinGui: Split presets list out into separate windowJohn Stebbins2017-11-064-63/+256
|