import { DEFAULT_BITRATE, type CodecInfo, type FFmpegParamChangedFunc, type FFmpegParams, } from "@/util/ffmpeg"; import { os } from "@neutralinojs/lib"; import BreezeIcon from "@/components/BreezeIcon"; import { createEffect, createSignal, Show } from "solid-js"; const DEFAULT_CRF = 23; function LibaomOptions(props: { codec: CodecInfo | undefined; params: FFmpegParams; onParamChanged: FFmpegParamChangedFunc; }) { const [rateControlMode, setRateControlMode] = createSignal("Constant"); createEffect(() => { const mode = rateControlMode(); props.onParamChanged("twopass", mode === "2PassABR"); switch (mode) { case "Constant": props.onParamChanged("crf", props.params.crf ?? DEFAULT_CRF); props.onParamChanged("vbitrate", undefined); break; case "Constrained": props.onParamChanged("crf", props.params.crf ?? DEFAULT_CRF); props.onParamChanged( "vbitrate", props.params.vbitrate ?? DEFAULT_BITRATE, ); break; case "2PassABR": case "ABR": props.onParamChanged("crf", undefined); props.onParamChanged( "vbitrate", props.params.vbitrate ?? DEFAULT_BITRATE, ); break; } }); return (
{ props.onParamChanged("crf", parseInt(e.target.value)); }} />
{ props.onParamChanged( "vbitrate", parseInt(e.target.value), ); }} /> Kbps
); } export default LibaomOptions;