示例#1
0
        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;
        }
示例#2
0
        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}");
            }
        }
示例#3
0
 public AudioPayloadTypeAttribute(AudioPayloadType messageType)
 {
     MessageType = messageType;
 }
示例#4
0
 public static Type GetTypeForMessageType(AudioPayloadType messageType)
 {
     return(_typeMapping.GetTypeForKey(messageType));
 }