public static EncodingSettings CreateAudioSettings(CodecEnum codec, RateControlEnum rateControl, int value) { switch (codec) { case CodecEnum.Aac: switch (rateControl) { case RateControlEnum.ConstantBitRate: if (value < 0) { throw new ArgumentException("ConstantBitRate for ACC must be beetwenn greater than 0 kbps"); } break; case RateControlEnum.None: if (rateControl != RateControlEnum.None) { throw new ArgumentException($"{nameof(RateControlEnum)}:{RateControlEnum.None} is only allowed with {nameof(RateControlEnum)}:{rateControl}"); } break; default: throw new ArgumentOutOfRangeException(nameof(rateControl), rateControl, null); } break; case CodecEnum.None: if (rateControl != RateControlEnum.Remove) { throw new ArgumentException($"{nameof(CodecEnum)}:{codec} is only allowed with {nameof(RateControlEnum)}:{RateControlEnum.Remove}"); } break; default: throw new ArgumentOutOfRangeException(nameof(codec), codec, null); } return(new EncodingSettings { Codec = codec, RateControl = rateControl, Present = PresetsEnum.Medium, Value = value, Media = MediaEnum.Audio }); }
public static EncodingSettings CreateVideoSettings(CodecEnum codec, RateControlEnum rateControl, PresetsEnum present, int value) { switch (codec) { case CodecEnum.h265: switch (rateControl) { case RateControlEnum.ConstantRateFactor: if (value < 0 || value > 51) { throw new ArgumentException("CRF must be beetwenn 0 (best) and 51 (worst)"); } break; default: throw new ArgumentOutOfRangeException(nameof(rateControl), rateControl, null); } break; case CodecEnum.Copy: if (rateControl != RateControlEnum.None) { throw new ArgumentException($"{nameof(CodecEnum)}:{CodecEnum.Copy} is only allowed with {nameof(RateControlEnum)}:{rateControl}"); } break; default: throw new ArgumentOutOfRangeException(nameof(codec), codec, null); } return(new EncodingSettings { Codec = codec, RateControl = rateControl, Present = present, Value = value, Media = MediaEnum.Video }); }
/// <summary> /// Check if we should clear the codec based off the /// number of ensembles found for each codec. /// </summary> /// <param name="codec">Codec that received an ensemble.</param> private void CheckCodecBuffers(CodecEnum codec) { //switch(codec) //{ // case CodecEnum.Binary: // break; // case CodecEnum.DVL: // break; // case CodecEnum.PD0: // break; // case CodecEnum.PD4_5: // break; // case CodecEnum.PD6_13: // break; // default: // break; //} // Clear the counters to not have a buffer overflow //if(_binaryCounter <= 0) //{ // _binaryCodec.ClearIncomingData(); //} if (_dvlCounter <= 0) { _dvlCodec.ClearIncomingData(); } if (_pd0Counter <= 0) { _pd0Codec.ClearIncomingData(); } if (_pd6_13Counter <= 0) { _pd6_13Codec.ClearIncomingData(); } if (_pd4_5Counter <= 0) { _pd4_5Codec.ClearIncomingData(); } // Look to find if we have a dominate codec. // If we find a dominate codec, clear the other // codecs. int MAX_ENS_COUNT = 20; if (_binaryCounter > MAX_ENS_COUNT) { _dvlCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 1; _dvlCounter = 0; _pd0Counter = 0; _pd6_13Counter = 0; _pd4_5Counter = 0; } if (_dvlCounter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 1; _pd0Counter = 0; _pd6_13Counter = 0; _pd4_5Counter = 0; } if (_pd0Counter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _dvlCodec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 0; _pd0Counter = 1; _pd6_13Counter = 0; _pd4_5Counter = 0; } if (_pd6_13Counter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _dvlCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 0; _pd0Counter = 0; _pd6_13Counter = 1; _pd4_5Counter = 0; } if (_pd4_5Counter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _dvlCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 0; _pd0Counter = 0; _pd6_13Counter = 0; _pd4_5Counter = 1; } }
/// <summary> /// Check if we should clear the codec based off the /// number of ensembles found for each codec. /// </summary> /// <param name="codec">Codec that received an ensemble.</param> private void CheckCodecBuffers(CodecEnum codec) { //switch(codec) //{ // case CodecEnum.Binary: // break; // case CodecEnum.DVL: // break; // case CodecEnum.PD0: // break; // case CodecEnum.PD4_5: // break; // case CodecEnum.PD6_13: // break; // default: // break; //} // Clear the counters to not have a buffer overflow if(_binaryCounter <= 0) { _binaryCodec.ClearIncomingData(); } if(_dvlCounter <= 0) { _dvlCodec.ClearIncomingData(); } if (_pd0Counter <= 0) { _pd0Codec.ClearIncomingData(); } if (_pd6_13Counter <= 0) { _pd6_13Codec.ClearIncomingData(); } if (_pd4_5Counter <= 0) { _pd4_5Codec.ClearIncomingData(); } // Look to find if we have a dominate codec. // If we find a dominate codec, clear the other // codecs. int MAX_ENS_COUNT = 20; if(_binaryCounter > MAX_ENS_COUNT) { _dvlCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 1; _dvlCounter = 0; _pd0Counter = 0; _pd6_13Counter = 0; _pd4_5Counter = 0; } if(_dvlCounter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 1; _pd0Counter = 0; _pd6_13Counter = 0; _pd4_5Counter = 0; } if (_pd0Counter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _dvlCodec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 0; _pd0Counter = 1; _pd6_13Counter = 0; _pd4_5Counter = 0; } if (_pd6_13Counter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _dvlCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd4_5Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 0; _pd0Counter = 0; _pd6_13Counter = 1; _pd4_5Counter = 0; } if(_pd4_5Counter > MAX_ENS_COUNT) { _binaryCodec.ClearIncomingData(); _dvlCodec.ClearIncomingData(); _pd0Codec.ClearIncomingData(); _pd6_13Codec.ClearIncomingData(); // Clear counter _binaryCounter = 0; _dvlCounter = 0; _pd0Counter = 0; _pd6_13Counter = 0; _pd4_5Counter = 1; } }