关于视频组帧播放的问题(20)

  • 主题发起人 主题发起人 citydawn
  • 开始时间 开始时间
C

citydawn

Unregistered / Unconfirmed
GUEST, unregistred user!
关于视频组帧播放的问题C中:定义结构体m_TmpAvFrm用于存放视频数据信息,其中AvData定义为:BYTE AvData[1];函数BufferFrame用于收包组帧播放当有数据包过来时,传递给函数BufferFrame做多包的连接,当组包完成一帧完整的数据时播放该帧void CClientDlg::BufferFrame(TPostMonData * pMonPack)关键代码如下:{LPBYTE pData = pMonPack->MonData;..//一帧分多包发送单包长度为nSize,memcpy(m_TmpAvFrm[nChanNum].pAvFrm->AvData + nCurVidLen, pData, nSize);//最后多包组成一完成的帧,帧长为nCurVidLennCurVidLen= nCurVidLen+nSize;..H264PL_AddStreamFrame(m_CnnInfo.nPlayNum[nChanNum], SDT_VIDEO, m_TmpAvFrm[nChanNum].pAvFrm->AvData, nCurVidLen);}当播放一帧图像时函数H264PL_AddStreamFrame的参数m_TmpAvFrm[nChanNum].pAvFrm->AvData也可用&m_TmpAvFrm[nChanNum].pAvFrm->AvData[0]来代替均可正常播放;delphi中实现时:定义同样的结构体:m_TmpAvFrm结构体中的AvData定义为AvData: array[0..0] of BYTE 和 C中的BYTE AvData[1];是一样的么?关键代码如下:varpData:pbytebeginmove(pData^, pointer(integer(@m_TmpAvFrm[nChanNum].pAvFrm.AvData[0]) + nCurVidLen)^, nSize);H264PL_AddStreamFrame(m_CnnInfo.nPlayNum[nChanNum], SDT_VIDEO, @m_TmpAvFrm[nChanNum].pAvFrm.AvData[0], nCurVidLen);end;其中参数@m_TmpAvFrm[nChanNum].pAvFrm.AvData[0]换成@m_TmpAvFrm[nChanNum].pAvFrm.AvData均无法播放,请问:delphi中组包的过程是对的么?和C中的是否有出入?
 
请各位老师指点,谢谢
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部