Projects
Multimedia
ffhevc
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 274
View file
ffhevc.changes
Changed
@@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Sun Nov 16 15:52:00 UTC 2025 - microchip8@proton.me + +- Update to version 4.6.10 + * Increase QP adaptation range for the built-in script + preset to 1.3 + * Reworked a bit the HDR code + +------------------------------------------------------------------- Sat Nov 15 06:48:00 UTC 2025 - microchip8@proton.me - Update to version 4.6.9
View file
ffhevc.spec
Changed
@@ -17,7 +17,7 @@ Name: ffhevc -Version: 4.6.9 +Version: 4.6.10 Release: %mkrel 1 Summary: A small shell script for encoding to H.265/HEVC with FFmpeg License: GPL-2.0+
View file
ffhevc-4.6.9.tar.gz/ChangeLog -> ffhevc-4.6.10.tar.gz/ChangeLog
Changed
@@ -1,4 +1,9 @@ -2025-11-15- ffhevc 4.6.9 +2025-11-16 - ffhevc 4.6.10 + * Increase QP adaptation range for the built-in script + preset to 1.3 + * Reworked a bit the HDR code + +2025-11-15 - ffhevc 4.6.9 * For SDR encodings, use blue/red chroma qp offsets of -2 * For HDR encodings, lower blue/red chroma qp offsets to -4 * Some minor optimizations in the HDR code
View file
ffhevc-4.6.9.tar.gz/ffhevc -> ffhevc-4.6.10.tar.gz/ffhevc
Changed
@@ -4,8 +4,8 @@ # encoding to H.265/HEVC video using FFmpeg and libx265. # # Author: Grozdan "microchip" Nikolov <microchip8@proton.me> -# Version: 4.6.9 -# Date: 2025-11-15 +# Version: 4.6.10 +# Date: 2025-11-16 # # ffhevc is free software ; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,10 +26,10 @@ brown() { echo -e "\e0;33m$1\e0;39;49m"; } error() { echo -e "\e1;31m$1\e0;39;49m"; } -version="4.6.9" +version="4.6.10" CFG="$HOME/.ffhevc" -cfgversion="94" +cfgversion="96" genconfig_func() { cat<<EOF>>"$CFG" @@ -137,7 +137,7 @@ # libx265 parameters for the 'script' preset # merange is calculated as: ctu size - 4(luma) - 2(chroma) (- 1 if me=hex is used) -X265PARAMS="ref=4:me=umh:merange=52:subme=5:bframes=6:rd=4:rd-refine=0:qcomp=0.63:fades=1:strong-intra-smoothing=0:ctu=32:qg-size=32:sao=0:selective-sao=0:cu-lossless=1:cutree=1:tu-inter-depth=4:tu-intra-depth=4:max-merge=4:rskip=2:rskip-edge-threshold=1:qp-adaptation-range=1.2:rc-lookahead=60:aq-mode=1:aq-strength=1.1:rdoq-level=1:psy-rd=4.0:psy-rdoq=15.0:limit-modes=1:limit-refs=1:limit-tu=0:deblock=-3,-3:weightb=1:weightp=1:rect=1:amp=1:wpp=1:b-intra=1:b-adapt=2:b-pyramid=1:tskip=0:tskip-fast=0:fast-intra=0:early-skip=0:splitrd-skip=0:refine-mv=3:refine-intra=4:refine-inter=1" +X265PARAMS="ref=4:me=umh:merange=52:subme=5:bframes=6:rd=4:rd-refine=0:qcomp=0.63:fades=1:strong-intra-smoothing=0:ctu=32:qg-size=32:sao=0:selective-sao=0:cu-lossless=1:cutree=1:tu-inter-depth=4:tu-intra-depth=4:max-merge=4:rskip=2:rskip-edge-threshold=1:rc-lookahead=60:aq-mode=1:aq-strength=1.1:qp-adaptation-range=1.3:rdoq-level=1:psy-rd=4.0:psy-rdoq=15.0:limit-modes=1:limit-refs=1:limit-tu=0:deblock=-3,-3:weightb=1:weightp=1:rect=1:amp=1:wpp=1:b-intra=1:b-adapt=2:b-pyramid=1:tskip=0:tskip-fast=0:fast-intra=0:early-skip=0:splitrd-skip=0:refine-mv=3:refine-intra=4:refine-inter=1" # Leave empty to auto-detect ffmpeg/ffprobe/mplayer # or set your custom ones (eg, /path/to/bin/ffmpeg) @@ -1366,7 +1366,7 @@ fi test ! -z "$zscale" && tonemap="zscale=transfer=linear,tonemap=$tm_algo$tm_param$tm_desat,$zscale,sidedata=delete," test ! -z "$colorspace" && colorspace="$colorspace$wpadapt," - cbcrqpoffs=":cbqpoffs=-2:crqpoffs=-2" + cbcrqpoffs=":cbqpoffs=-1:crqpoffs=-1" fi fi } @@ -1637,27 +1637,25 @@ 8.1|"") doviprof="8.1" ;; 8.2) doviprof="8.2" ;; *) - doviprof="0" - nodovi="1" echo - error "-> Disabling Dolby Vision HDR due to unsupported profile!" + error "-> Unsupported Dolby Vision profile. Encoding will fail!" + error "-> Exiting..." echo + exit 1 ;; esac - if "$nodovi" != "1" ; then - dolby_vision=":dolby-vision-profile=$doviprof" - - printf "Provide the Dolby Vision RPU File press 'Enter' to skip: " - read dvrpu - if ! -z "$dvrpu" ; then - if ! -f "$dvrpu" ; then - echo - error "-> No such file! Skipping" - echo - else - dolby_vision_rpu=":dolby-vision-rpu=\"$(realpath "$dvrpu")\"" - fi + dolby_vision=":dolby-vision-profile=$doviprof" + + printf "Provide the Dolby Vision RPU File press 'Enter' to skip: " + read dvrpu + if ! -z "$dvrpu" ; then + if ! -f "$dvrpu" ; then + echo + error "-> No such file! Skipping" + echo + else + dolby_vision_rpu=":dolby-vision-rpu=\"$(realpath "$dvrpu")\"" fi fi fi @@ -1682,23 +1680,19 @@ case "$1" in md) if ! -z "$(echo "$master_display" | grep 'NOT_AVAIL')" ; then - master_display="" - nohdr="1" echo - error "-> Disabling HDR10 due to missing value(s)!" + error "-> master-display contains unavailable values. Encoding will fail!" + error "-> Exiting..." echo + exit 1 fi ;; cll) if ! -z "$(echo "$max_cll" | grep 'NOT_AVAIL')" ; then - if "$nohdr" != "1" ; then - max_cll=":max-cll=\"0,0\"" - echo - error "-> Setting max-cll to 0,0 due to missing value(s)!" - echo - else - max_cll="" - fi + max_cll=":max-cll=\"0,0\"" + echo + error "-> Setting max-cll to 0,0 due to missing values!" + echo fi ;; esac @@ -1723,37 +1717,32 @@ else max_cll=":max-cll=\"$maxcll\"" fi - if "$nohdr" != "1" ; then - printf "Flag the file as HLG (Hybrid Log Gamma)? y/N: " - read fhlg - if "$fhlg" = "y" -o "$fhlg" = "Y" ; then - hlg=":pic-struct=0:atc-sei=18" - fi + printf "Flag the file as HLG (Hybrid Log Gamma)? y/N: " + read fhlg + if "$fhlg" = "y" -o "$fhlg" = "Y" ; then + hlg=":pic-struct=0:atc-sei=18" fi - if "$nohdr" != "1" ; then - printf "Use Dynamic HDR10+ JSON file? y/N: " - read dhdr - if "$dhdr" = "y" -o "$dhdr" = "Y" ; then - printf "Provide the JSON file press 'Enter' to skip: " - read -e json - if ! -z "$json" ; then - if ! -f "$json" ; then - echo - error "-> No such file. Skipping!" - echo - else - dhdr10=":dhdr10-info=\"$(realpath "$json")\"" - fi + + printf "Use Dynamic HDR10+ JSON file? y/N: " + read dhdr + if "$dhdr" = "y" -o "$dhdr" = "Y" ; then + printf "Provide the JSON file press 'Enter' to skip: " + read -e json + if ! -z "$json" ; then + if ! -f "$json" ; then + echo + error "-> No such file. Skipping!" + echo + else + dhdr10=":dhdr10-info=\"$(realpath "$json")\"" fi fi fi - test "$nohdr" != "1" && hdr10=":hdr10=1" || hdr10=":hdr10=0" fi fi if "$dovi" = "y" -o "$dovi" = "Y" -o "$hdr" = "y" -o "$hdr" = "Y" ; then - hdr_encopts=":hdr10-opt=1:open-gop=0:repeat-headers=1:cbqpoffs=-4:crqpoffs=-4:qg-size=16$hlg$dhdr10$hdr10$dolby_vision$dolby_vision_rpu" - hdr_enable="1" + hdr_encopts=":hdr10=1:hdr10-opt=1:open-gop=0:repeat-headers=1:cbqpoffs=-4:crqpoffs=-4:qg-size=16$hlg$dhdr10$dolby_vision$dolby_vision_rpu" fi if ! -z "$batchmode" ; then @@ -1771,11 +1760,11 @@ echo " hdrsdsd=\"\$(grep \"^\${sdarraysd}\" \"\$HDRFILE\" | tail -1 | awk -F= '{print \$2}' | awk -F/ '{print \$1}')\"" echo " done" echo " rm -f \"\$HDRFILE\"" - echo " hdr_encopts=\":hdr10-opt=1:open-gop=0:repeat-headers=1:cbqpoffs=-4:crqpoffs=-4:qg-size=16:hdr10=1\"" + echo " hdr_encopts=\":hdr10=1:hdr10-opt=1:open-gop=0:repeat-headers=1:cbqpoffs=-4:crqpoffs=-4:qg-size=16\"" echo " mast_disp=\"G(\${hdrsd0},\${hdrsd1})B(\${hdrsd2},\${hdrsd3})R(\${hdrsd4},\${hdrsd5})WP(\${hdrsd6},\${hdrsd7})L(\${hdrsd9},\${hdrsd8})\"" echo " max_cll=\":max-cll=\${hdrsd10},\${hdrsd11}\"" } - hdr_encopts=":hdr10-opt=1\$hdr_encopts" + hdr_encopts="\$hdr_encopts" master_display=":master-display=\"\$mast_disp\"" max_cll="\$max_cll" fi @@ -1784,12 +1773,9 @@ fi # For SDR encodings -if -z "$tonemap" -a "$hdr_enable" != "1" ; then - cbcrqpoffs=":cbqpoffs=-2:crqpoffs=-2" +if -z "$tonemap" -a -z "$hdr_encopts" ; then + cbcrqpoffs=":cbqpoffs=-1:crqpoffs=-1" fi -# Can't hurt for SDR encodings -test "$hdr_enable" != "1" && sidedata="sidedata=delete," - # Used by cropping and bitrate # calc for target file size @@ -3953,7 +3939,7 @@ test ! -z "$(echo "$vtune" | grep 'grain')" && rc_grain=":rc_grain=1" -vidfilters="$(echo "$deinterlace$detelecine$tonemap$colorspace$crop$deblock$denoise$scale$noise$unsharp$eq$rotate$pixformat$setpts$fps$framestep$subtitles$sidedata" | sed 's|,$||')" +vidfilters="$(echo "$deinterlace$detelecine$tonemap$colorspace$crop$deblock$denoise$scale$noise$unsharp$eq$rotate$pixformat$setpts$fps$framestep$subtitles" | sed 's|,$||')" test ! -z "$vidfilters" && vfilters="-vf $vidfilters"
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.