#PY <- Needed to identify # # Fisheye removal for GoPro 11+, 8:7 ratio, without hypersmooth # Copyright (C) 2025 Roz K # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . adm = Avidemux() adm.videoCodec( "x264", "useAdvancedConfiguration=False", "general.params=CBR=65536", "general.threads=0", "general.preset=slow", "general.tuning=film", "general.profile=high", "general.fast_decode=False", "general.zero_latency=True", "general.fast_first_pass=False", "general.blueray_compatibility=False", "general.fake_interlaced=False", "level=-1", "vui.sar_height=1", "vui.sar_width=1", "vui.overscan=0", "vui.vidformat=5", "vui.fullrange=False", "vui.colorprim=2", "vui.transfer=2", "vui.colmatrix=2", "vui.chroma_loc=0", "MaxRefFrames=3", "MinIdr=25", "MaxIdr=250", "i_scenecut_threshold=40", "intra_refresh=False", "MaxBFrame=3", "i_bframe_adaptive=1", "i_bframe_bias=0", "i_bframe_pyramid=2", "b_deblocking_filter=True", "i_deblocking_filter_alphac0=0", "i_deblocking_filter_beta=0", "cabac=True", "interlaced=False", "constrained_intra=False", "tff=True", "fake_interlaced=False", "analyze.b_8x8=True", "analyze.b_i4x4=True", "analyze.b_i8x8=True", "analyze.b_p8x8=True", "analyze.b_p16x16=False", "analyze.b_b16x16=False", "analyze.weighted_pred=2", "analyze.weighted_bipred=True", "analyze.direct_mv_pred=1", "analyze.chroma_offset=0", "analyze.me_method=1", "analyze.me_range=16", "analyze.mv_range=-1", "analyze.mv_range_thread=-1", "analyze.subpel_refine=7", "analyze.chroma_me=True", "analyze.mixed_references=True", "analyze.trellis=1", "analyze.psy_rd=1.000000", "analyze.psy_trellis=0.000000", "analyze.fast_pskip=True", "analyze.dct_decimate=True", "analyze.noise_reduction=0", "analyze.psy=True", "analyze.intra_luma=11", "analyze.inter_luma=21", "ratecontrol.rc_method=0", "ratecontrol.qp_constant=0", "ratecontrol.qp_min=10", "ratecontrol.qp_max=51", "ratecontrol.qp_step=4", "ratecontrol.bitrate=0", "ratecontrol.rate_tolerance=1.000000", "ratecontrol.vbv_max_bitrate=0", "ratecontrol.vbv_buffer_size=0", "ratecontrol.vbv_buffer_init=1", "ratecontrol.ip_factor=1.400000", "ratecontrol.pb_factor=1.300000", "ratecontrol.aq_mode=1", "ratecontrol.aq_strength=1.000000", "ratecontrol.mb_tree=True", "ratecontrol.lookahead=40") adm.addVideoFilter( "shaderLoader", "shaderFile=/opt/rk/avidemux/unfish_gopro_8:7.glsl") adm.addVideoFilter( "swscale", "width=2468", "height=2160", "algo=2", "sourceAR=0", "targetAR=0", "lockAR=False", "roundup=0") adm.audioClearTracks() if adm.audioTotalTracksCount() <= 0: raise("Cannot add audio track 0, total tracks: " + str(adm.audioTotalTracksCount())) adm.audioAddTrack(0) adm.audioCodec(0, "LavAAC", "bitrate=192") adm.audioSetDrc2(0, 1, 1, 0.001, 0.2, 1, 2, -12) adm.audioSetEq(0, 0, 0, 0, 0, 880, 5000) adm.audioSetChannelGains(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) adm.audioSetChannelDelays(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) adm.audioSetChannelRemap(0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8) adm.audioSetShift(0, 0, 0) adm.audioSetNormalize2(0, 1, 10, -30) adm.setContainer( "MP4", "muxerType=0", "optimize=1", "forceAspectRatio=False", "aspectRatio=1", "displayWidth=1280", "rotation=0", "clockfreq=0")