feat(ui): 영상·오디오 인코딩 옵션 패널 — 출력 형식별 동적 노출
OptionsViewModel + 옵션 패널에 영상/오디오 인코딩 옵션을 선언적 바인딩으로 노출. - OptionsViewModel: 영상/오디오 ObservableProperty(코덱·레이트컨트롤·CRF·비트레이트·프리셋·해상도·fps· 회전·디인터레이스·faststart·SpatialAq / 오디오 코덱·비트레이트·VBR·샘플레이트·채널·loudnorm) + BuildVideo()/BuildAudio()로 VideoEncodeOptions/AudioEncodeOptions 구성, ToConvertOptions에 연결. - MainWindow.xaml: MediaPanel(VideoSubPanel/AudioSubPanel) — 레이트컨트롤 모드에 따라 CRF 슬라이더 ↔ 비트레이트 입력 DataTrigger 전환, 고급(회전/디인터레이스/SpatialAq)은 Expander. 전부 선언적 TwoWay 바인딩. - 코드비하인드: UpdateMediaPanelForFormat — 출력이 영상이면 영상+오디오, 오디오면 오디오만 노출. - 검증: 빌드 0/0, 106 테스트 그린, publish 후 메인 창 크래시 없이 로드. 옵션 실동작은 GUI 스모크 권장.
This commit is contained in:
parent
214789b656
commit
c10da19bfd
3 changed files with 211 additions and 1 deletions
|
|
@ -1084,6 +1084,20 @@ public partial class MainWindow : Wpf.Ui.Controls.FluentWindow
|
|||
".avif" => "AVIF QUALITY",
|
||||
_ => "ENCODING QUALITY",
|
||||
};
|
||||
|
||||
UpdateMediaPanelForFormat(extension);
|
||||
}
|
||||
|
||||
/// <summary>출력이 영상/오디오일 때만 영상·오디오 인코딩 패널을 노출(영상이면 영상+오디오, 오디오면 오디오만).</summary>
|
||||
private void UpdateMediaPanelForFormat(string? extension)
|
||||
{
|
||||
if (MediaPanel is null) return;
|
||||
var ext = (extension ?? string.Empty).ToLowerInvariant();
|
||||
var isVideo = ext is ".mp4" or ".mkv" or ".webm" or ".mov" or ".avi";
|
||||
var isAudio = ext is ".mp3" or ".aac" or ".m4a" or ".opus" or ".ogg" or ".flac" or ".wav";
|
||||
MediaPanel.Visibility = (isVideo || isAudio) ? Visibility.Visible : Visibility.Collapsed;
|
||||
VideoSubPanel.Visibility = isVideo ? Visibility.Visible : Visibility.Collapsed;
|
||||
AudioSubPanel.Visibility = (isVideo || isAudio) ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void UpdateOutputDestHint(string? extension)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue