public RawAudioTrackInfo(IAudioTrack audio) : this() { this.Hints = audio.ParentStream.Hints; if ((this.ChannelCount != (short)audio.ChannelCount) || (this.SampleSize != (short)audio.SampleSize) || (this.SampleRate != audio.SampleRate)) { // overwrite what was derived from PrivateCodecData this.ChannelCount = (short)audio.ChannelCount; this.SampleSize = (short)audio.SampleSize; this.SampleRate = audio.SampleRate; } this.PayloadType = audio.PayloadType; this.TrackID = 0; // set destination track ID for audio to zero this.SourceTrackID = audio.TrackID; if (audio.TrackFormat != null) { this.DurationIn100NanoSecs = audio.TrackFormat.DurationIn100NanoSecs; // track specific duration, in 100 nanosec units this.TimeScale = audio.TrackFormat.TimeScale; // track specific time scale } else { this.DurationIn100NanoSecs = audio.TrackDurationIn100NanoSecs; // track specific duration, in 100 nanosec units this.TimeScale = (uint)audio.SampleRate; // track specific time scale } this.CodecPrivateData = audio.Codec.PrivateCodecData; }
private static INanoPacket CreateFromAudioPayloadType(AudioPayloadType audioType) { switch (audioType) { case AudioPayloadType.ClientHandshake: return(new AudioClientHandshake()); case AudioPayloadType.ServerHandshake: return(new AudioServerHandshake()); case AudioPayloadType.Control: return(new AudioControl()); case AudioPayloadType.Data: return(new AudioData()); default: throw new NanoPackingException($"Invalid AudioPayloadType: {audioType}"); } }
public AudioPayloadTypeAttribute(AudioPayloadType messageType) { MessageType = messageType; }
public static Type GetTypeForMessageType(AudioPayloadType messageType) { return(_typeMapping.GetTypeForKey(messageType)); }