import 'package:freezed_annotation/freezed_annotation.dart'; part 'cikis_ayarlari.freezed.dart'; part 'cikis_ayarlari.g.dart'; enum SesKarisimiModu { tamOrijinal, segmentSesleri, mix, sessiz } enum GecisTipi { yok, crossfade, dissolve, kesim } @freezed class CikisPreset with _$CikisPreset { const factory CikisPreset({ required String id, required String isim, @Default('1080p') String cozunurluk, @Default('16:9') String oran, @Default('libx264') String codec, @Default(20) int crf, @Default('{stem}_{preset}.mp4') String dosyaIsmiSablon, }) = _CikisPreset; factory CikisPreset.fromJson(Map j) => _$CikisPresetFromJson(j); } @freezed class GecisAyari with _$GecisAyari { const factory GecisAyari({ required int boundaryIdx, @Default(GecisTipi.kesim) GecisTipi tip, @Default(0.5) double sureSn, }) = _GecisAyari; factory GecisAyari.fromJson(Map j) => _$GecisAyariFromJson(j); } @freezed class RenkDuzeltme with _$RenkDuzeltme { const factory RenkDuzeltme({ String? lutPath, @Default(0.0) double parlaklik, @Default(1.0) double kontrast, @Default(1.0) double doygunluk, }) = _RenkDuzeltme; factory RenkDuzeltme.fromJson(Map j) => _$RenkDuzeltmeFromJson(j); } @freezed class Watermark with _$Watermark { const factory Watermark({ required String path, @Default('top-right') String konum, @Default(0.5) double opaklik, @Default(0.15) double genislikOran, }) = _Watermark; factory Watermark.fromJson(Map j) => _$WatermarkFromJson(j); } @freezed class Altyazi with _$Altyazi { const factory Altyazi({ String? srtPath, @Default(false) bool whisperOtomatik, @Default('Inter') String font, @Default(28) int boyut, @Default('#FFFFFF') String renk, }) = _Altyazi; factory Altyazi.fromJson(Map j) => _$AltyaziFromJson(j); } @freezed class HizRampasi with _$HizRampasi { const factory HizRampasi({ @Default({}) Map segmentHizleri, }) = _HizRampasi; factory HizRampasi.fromJson(Map j) => _$HizRampasiFromJson(j); } @freezed class CikisAyarlari with _$CikisAyarlari { const factory CikisAyarlari({ @Default([]) List presetler, @Default([]) List gecisler, @Default(SesKarisimiModu.tamOrijinal) SesKarisimiModu sesModu, @Default(true) bool loudnessNormalize, RenkDuzeltme? renkDuzeltme, Watermark? watermark, Altyazi? altyazi, String? introPath, String? outroPath, HizRampasi? hizRampasi, @Default(false) bool beatSyncSnap, @Default(0.3) double beatSyncTolerans, }) = _CikisAyarlari; factory CikisAyarlari.fromJson(Map j) => _$CikisAyarlariFromJson(j); }