2021-07-19 00:47:22 +02:00
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
2020-06-03 13:18:37 +02:00
|
|
|
|
2021-07-19 00:47:22 +02:00
|
|
|
part 'stream_container.freezed.dart';
|
2021-11-12 21:04:53 +01:00
|
|
|
part 'stream_container.g.dart';
|
2020-06-03 13:18:37 +02:00
|
|
|
|
2021-07-19 00:47:22 +02:00
|
|
|
/// Stream container.
|
|
|
|
@freezed
|
|
|
|
class StreamContainer with _$StreamContainer {
|
2020-09-11 12:05:27 +02:00
|
|
|
/// Initializes an instance of [StreamContainer]
|
2021-07-19 00:47:22 +02:00
|
|
|
const factory StreamContainer._internal(
|
|
|
|
|
|
|
|
/// Container name.
|
|
|
|
/// Can be used as file extension
|
|
|
|
String name) = _StreamContainer;
|
|
|
|
|
2021-11-12 21:04:53 +01:00
|
|
|
factory StreamContainer.fromJson(Map<String, dynamic> json) =>
|
|
|
|
StreamContainer.parse(json['name'] as String);
|
|
|
|
|
2021-07-19 00:47:22 +02:00
|
|
|
const StreamContainer._();
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
/// MPEG-4 Part 14 (.mp4).
|
2021-07-19 00:47:22 +02:00
|
|
|
static const StreamContainer mp4 = StreamContainer._internal('mp4');
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
/// Web Media (.webm).
|
2021-07-19 00:47:22 +02:00
|
|
|
static const StreamContainer webM = StreamContainer._internal('webm');
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
/// 3rd Generation Partnership Project (.3gpp).
|
2021-07-19 00:47:22 +02:00
|
|
|
static const StreamContainer tgpp = StreamContainer._internal('3gpp');
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
/// Parse a container from name.
|
2021-07-19 00:47:22 +02:00
|
|
|
factory StreamContainer.parse(String name) {
|
2020-06-03 13:18:37 +02:00
|
|
|
if (name.toLowerCase() == 'mp4') {
|
2020-09-11 12:05:27 +02:00
|
|
|
return StreamContainer.mp4;
|
2020-06-03 13:18:37 +02:00
|
|
|
}
|
|
|
|
if (name.toLowerCase() == 'webm') {
|
2020-09-11 12:05:27 +02:00
|
|
|
return StreamContainer.webM;
|
2020-06-03 13:18:37 +02:00
|
|
|
}
|
|
|
|
if (name.toLowerCase() == '3gpp') {
|
2020-09-11 12:05:27 +02:00
|
|
|
return StreamContainer.tgpp;
|
2020-06-03 13:18:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
throw ArgumentError.value(name, 'name', 'Valid values: mp4, webm, 3gpp');
|
|
|
|
}
|
|
|
|
|
2020-07-21 11:40:30 +02:00
|
|
|
@override
|
|
|
|
String toString() => name;
|
2020-06-03 13:18:37 +02:00
|
|
|
}
|