youtube_explode/lib/src/videos/streams/bitrate.dart

52 lines
1.2 KiB
Dart

import 'package:equatable/equatable.dart';
/// Encapsulates bitrate.
class Bitrate extends Comparable<Bitrate> with EquatableMixin {
/// Bits per second.
final int bitsPerSecond;
/// Kilobits per second.
double get kiloBitsPerSecond => bitsPerSecond / 1024;
/// Megabits per second.
double get megaBitsPerSecond => kiloBitsPerSecond / 1024;
/// Gigabits per second.
double get gigaBitsPerSecond => megaBitsPerSecond / 1024;
/// Initializes an instance of [Bitrate]
Bitrate(this.bitsPerSecond);
@override
int compareTo(Bitrate other) => null;
@override
List<Object> get props => [bitsPerSecond];
String _getLargestSymbol() {
if (gigaBitsPerSecond.abs() >= 1) {
return 'Gbit/s';
}
if (megaBitsPerSecond.abs() >= 1) {
return 'Mbit/s';
}
if (kiloBitsPerSecond.abs() >= 1) {
return 'Kbit/s';
}
return 'Bit/s';
}
num _getLargestValue() {
if (gigaBitsPerSecond.abs() >= 1) {
return gigaBitsPerSecond;
}
if (megaBitsPerSecond.abs() >= 1) {
return megaBitsPerSecond;
}
if (kiloBitsPerSecond.abs() >= 1) {
return kiloBitsPerSecond;
}
return bitsPerSecond;
}
@override
String toString() => '${_getLargestValue()} ${_getLargestSymbol()}';
}