mirror of
https://github.com/immich-app/immich.git
synced 2024-12-15 12:09:44 +02:00
4e0fe27de3
* feat: support isEdited flag for SettingSwitch * feat: add transcodeAll ffmpeg settings for extra transcoding control * refactor: tidy up and rename current video transcoding code + transcode everything * feat: better video transcoding with ffprobe analyses video files to see if they are already in the desired format allows admin to choose to transcode all videos regardless of the current format * fix: always serve encoded video if it exists * feat: change video codec option to a select box, limit options removed previous video codec config option as it's incompatible with new options removed mapping for encoder to codec as we now store the codec in the config * feat: add video conversion job for transcoding previously missed videos * chore: fix spelling of job messages to pluralise assets * chore: fix prettier/eslint warnings * feat: force switch targetAudioCodec default to aac to avoid iOS incompatibility * chore: lint issues after rebase
152 lines
4.8 KiB
Dart
Generated
152 lines
4.8 KiB
Dart
Generated
//
|
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
|
//
|
|
// @dart=2.12
|
|
|
|
// ignore_for_file: unused_element, unused_import
|
|
// ignore_for_file: always_put_required_named_parameters_first
|
|
// ignore_for_file: constant_identifier_names
|
|
// ignore_for_file: lines_longer_than_80_chars
|
|
|
|
part of openapi.api;
|
|
|
|
class SystemConfigFFmpegDto {
|
|
/// Returns a new [SystemConfigFFmpegDto] instance.
|
|
SystemConfigFFmpegDto({
|
|
required this.crf,
|
|
required this.preset,
|
|
required this.targetVideoCodec,
|
|
required this.targetAudioCodec,
|
|
required this.targetScaling,
|
|
required this.transcodeAll,
|
|
});
|
|
|
|
String crf;
|
|
|
|
String preset;
|
|
|
|
String targetVideoCodec;
|
|
|
|
String targetAudioCodec;
|
|
|
|
String targetScaling;
|
|
|
|
bool transcodeAll;
|
|
|
|
@override
|
|
bool operator ==(Object other) => identical(this, other) || other is SystemConfigFFmpegDto &&
|
|
other.crf == crf &&
|
|
other.preset == preset &&
|
|
other.targetVideoCodec == targetVideoCodec &&
|
|
other.targetAudioCodec == targetAudioCodec &&
|
|
other.targetScaling == targetScaling &&
|
|
other.transcodeAll == transcodeAll;
|
|
|
|
@override
|
|
int get hashCode =>
|
|
// ignore: unnecessary_parenthesis
|
|
(crf.hashCode) +
|
|
(preset.hashCode) +
|
|
(targetVideoCodec.hashCode) +
|
|
(targetAudioCodec.hashCode) +
|
|
(targetScaling.hashCode) +
|
|
(transcodeAll.hashCode);
|
|
|
|
@override
|
|
String toString() => 'SystemConfigFFmpegDto[crf=$crf, preset=$preset, targetVideoCodec=$targetVideoCodec, targetAudioCodec=$targetAudioCodec, targetScaling=$targetScaling, transcodeAll=$transcodeAll]';
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final json = <String, dynamic>{};
|
|
json[r'crf'] = this.crf;
|
|
json[r'preset'] = this.preset;
|
|
json[r'targetVideoCodec'] = this.targetVideoCodec;
|
|
json[r'targetAudioCodec'] = this.targetAudioCodec;
|
|
json[r'targetScaling'] = this.targetScaling;
|
|
json[r'transcodeAll'] = this.transcodeAll;
|
|
return json;
|
|
}
|
|
|
|
/// Returns a new [SystemConfigFFmpegDto] instance and imports its values from
|
|
/// [value] if it's a [Map], null otherwise.
|
|
// ignore: prefer_constructors_over_static_methods
|
|
static SystemConfigFFmpegDto? fromJson(dynamic value) {
|
|
if (value is Map) {
|
|
final json = value.cast<String, dynamic>();
|
|
|
|
// Ensure that the map contains the required keys.
|
|
// Note 1: the values aren't checked for validity beyond being non-null.
|
|
// Note 2: this code is stripped in release mode!
|
|
assert(() {
|
|
requiredKeys.forEach((key) {
|
|
assert(json.containsKey(key), 'Required key "SystemConfigFFmpegDto[$key]" is missing from JSON.');
|
|
assert(json[key] != null, 'Required key "SystemConfigFFmpegDto[$key]" has a null value in JSON.');
|
|
});
|
|
return true;
|
|
}());
|
|
|
|
return SystemConfigFFmpegDto(
|
|
crf: mapValueOfType<String>(json, r'crf')!,
|
|
preset: mapValueOfType<String>(json, r'preset')!,
|
|
targetVideoCodec: mapValueOfType<String>(json, r'targetVideoCodec')!,
|
|
targetAudioCodec: mapValueOfType<String>(json, r'targetAudioCodec')!,
|
|
targetScaling: mapValueOfType<String>(json, r'targetScaling')!,
|
|
transcodeAll: mapValueOfType<bool>(json, r'transcodeAll')!,
|
|
);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
static List<SystemConfigFFmpegDto>? listFromJson(dynamic json, {bool growable = false,}) {
|
|
final result = <SystemConfigFFmpegDto>[];
|
|
if (json is List && json.isNotEmpty) {
|
|
for (final row in json) {
|
|
final value = SystemConfigFFmpegDto.fromJson(row);
|
|
if (value != null) {
|
|
result.add(value);
|
|
}
|
|
}
|
|
}
|
|
return result.toList(growable: growable);
|
|
}
|
|
|
|
static Map<String, SystemConfigFFmpegDto> mapFromJson(dynamic json) {
|
|
final map = <String, SystemConfigFFmpegDto>{};
|
|
if (json is Map && json.isNotEmpty) {
|
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
|
for (final entry in json.entries) {
|
|
final value = SystemConfigFFmpegDto.fromJson(entry.value);
|
|
if (value != null) {
|
|
map[entry.key] = value;
|
|
}
|
|
}
|
|
}
|
|
return map;
|
|
}
|
|
|
|
// maps a json object with a list of SystemConfigFFmpegDto-objects as value to a dart map
|
|
static Map<String, List<SystemConfigFFmpegDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
|
|
final map = <String, List<SystemConfigFFmpegDto>>{};
|
|
if (json is Map && json.isNotEmpty) {
|
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
|
for (final entry in json.entries) {
|
|
final value = SystemConfigFFmpegDto.listFromJson(entry.value, growable: growable,);
|
|
if (value != null) {
|
|
map[entry.key] = value;
|
|
}
|
|
}
|
|
}
|
|
return map;
|
|
}
|
|
|
|
/// The list of required keys that must be present in a JSON.
|
|
static const requiredKeys = <String>{
|
|
'crf',
|
|
'preset',
|
|
'targetVideoCodec',
|
|
'targetAudioCodec',
|
|
'targetScaling',
|
|
'transcodeAll',
|
|
};
|
|
}
|
|
|