public void get_encframe(IntPtr ip, uint dwContextEnc) { VideoPlayState = Enum_VideoPlayState.InPlayState; FrameHeadr pFrmHdr = (FrameHeadr)Marshal.PtrToStructure(ip, typeof(FrameHeadr)); PLAYFRAMEHDR pLAYFRAMEHDR = new PLAYFRAMEHDR { m_byMediaType = pFrmHdr.mediaType, m_dwDataSize = pFrmHdr.dataSize, m_byFrameRate = pFrmHdr.frameRate, m_dwFrameID = pFrmHdr.frameID, m_dwTimeStamp = pFrmHdr.timeStamp }; pLAYFRAMEHDR.union1.m_tVideoParam.m_bKeyFrame = pFrmHdr.videoParam.keyFrame; pLAYFRAMEHDR.union1.m_tVideoParam.m_wVideoWidth = pFrmHdr.videoParam.videoWidth; pLAYFRAMEHDR.union1.m_tVideoParam.m_wVideoHeight = pFrmHdr.videoParam.videoHeight; byte[] pl = StructToBytes(pLAYFRAMEHDR); byte[] pD = new byte[pFrmHdr.dataSize]; Marshal.Copy(pFrmHdr.pData, pD, 0, (int)pFrmHdr.dataSize); byte[] bytes = pl.Concat(pD).ToArray(); if (pFrmHdr.mediaType == 98) { uint len = Convert.ToUInt32(pFrmHdr.dataSize + 40); TLPlay_InputVideoData(m_hPlayPort, ref bytes[0], len); } }
public void aduiocallback1(IntPtr ip, uint dwContextEnc) { Console.WriteLine("aduiocallback1"); FrameHeadr pFrmHdr = (FrameHeadr)Marshal.PtrToStructure(ip, typeof(FrameHeadr)); PLAYFRAMEHDR hdr = new PLAYFRAMEHDR { m_byMediaType = pFrmHdr.mediaType, m_dwDataSize = pFrmHdr.dataSize, m_byFrameRate = pFrmHdr.frameRate, m_dwFrameID = pFrmHdr.frameID, m_dwTimeStamp = pFrmHdr.timeStamp }; hdr.union1.m_tVideoParam.m_bKeyFrame = pFrmHdr.videoParam.keyFrame; hdr.union1.m_tVideoParam.m_wVideoWidth = pFrmHdr.videoParam.videoWidth; hdr.union1.m_tVideoParam.m_wVideoHeight = pFrmHdr.videoParam.videoHeight; if (hdr.m_byMediaType == 22) { hdr.union1.m_tAudioParam.m_byAudioMode = 16; hdr.union1.m_tAudioParam.m_byAudioRate = 8000; hdr.union1.m_tAudioParam.m_byAudioEncType = 22; hdr.union1.m_tAudioParam.m_byAudioDuration = 40; } else if (hdr.m_byMediaType == 22) { hdr.union1.m_tAudioParam.m_byAudioMode = 16; hdr.union1.m_tAudioParam.m_byAudioRate = 8000; hdr.union1.m_tAudioParam.m_byAudioEncType = 23; hdr.union1.m_tAudioParam.m_byAudioDuration = 40; } byte[] pl = StructToBytes(hdr); byte[] pD = new byte[pFrmHdr.dataSize]; Marshal.Copy(pFrmHdr.pData, pD, 0, (int)pFrmHdr.dataSize); byte[] bytes = pl.Concat(pD).ToArray(); uint len = Convert.ToUInt32(pFrmHdr.dataSize + 40); TLPlay_InputVideoData(m_hPlayPort, ref bytes[0], len); }