SIPSorcery.Net.RTPFrame.GetFramePayload C# (CSharp) 메소드

GetFramePayload() 공개 메소드

public GetFramePayload ( ) : byte[]
리턴 byte[]
        public byte[] GetFramePayload()
        {
            List<byte> payload = new List<byte>();

            foreach (var rtpPacket in _packets.OrderBy(x => x.Header.SequenceNumber))
            {
                if (FrameType == FrameTypesEnum.VP8)
                {
                    var vp8Header = RTPVP8Header.GetVP8Header(rtpPacket.Payload);
                    payload.AddRange(rtpPacket.Payload.Skip(vp8Header.PayloadDescriptorLength));
                }
                else
                {
                    payload.AddRange(rtpPacket.Payload);
                }
            }

            return payload.ToArray();
        }

Usage Example

예제 #1
0
        /// <summary>
        /// Event handler for receiving an RTP frmae from the remote end of the VoIP call.
        /// </summary>
        /// <param name="rtpFrame">The RTP frame received.</param>
        private void RTPChannelSampleReceived(RTPFrame rtpFrame)
        {
            if (rtpFrame != null)
            {
                var framePayload = rtpFrame.GetFramePayload();

                if (framePayload != null)
                {
                    for (int index = 0; index < framePayload.Length; index++)
                    {
                        short pcm = MuLawDecoder.MuLawToLinearSample(framePayload[index]);
                        byte[] pcmSample = new byte[] { (byte)(pcm & 0xFF), (byte)(pcm >> 8) };
                        m_waveProvider.AddSamples(pcmSample, 0, 2);
                    }
                }
            }
        }