老师你好,我想做个将网络MJPEG流收进来DEC的应用。但是不知道怎么把数据通过IPCBITS_HLOSOUT(host)送入到IPCBITS_RTOSIN(VID)link。希望老师能够给点提示。我参考的是dvrrdk3.0里面的multich_vdec_vdis.c用例
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
老师你好,我想做个将网络MJPEG流收进来DEC的应用。但是不知道怎么把数据通过IPCBITS_HLOSOUT(host)送入到IPCBITS_RTOSIN(VID)link。希望老师能够给点提示。我参考的是dvrrdk3.0里面的multich_vdec_vdis.c用例
你同时要参考demo_vdec_vdis.c 和demo_vdec_vdis_bits_rd.c.
大体的流程是这样的:
1.在VdecVdis_start中调用VdecVdis_bitsRdInit,其中创建了线程VdecVdis_bitsRdSendFxn
2.线程VdecVdis_bitsRdSendFxn中通过下面方式从vdec中获取空闲buffer,读文件获取码流,往vdec的input buffer中填入码流
VdecVdis_bitsRdGetEmptyBitBufs(&emptyBufList,resId);//获取buffer
VdecVdis_bitsRdReadData(&emptyBufList,resId);//获取码流
VdecVdis_bitsRdSendFullBitBufs(&emptyBufList);//填入码流送去decode
3. 在VdecVdis_bitsRdGetEmptyBitBufs中调用了mcfw api Vdec_requestBitstreamBuffer
4. 在VdecVdis_bitsRdSendFullBitBufs中调用了mcfw api Vdec_putBitstreamBuffer
5. 在这两个mcfw api中,实现了具体的把数据通过IPCBITS_HLOSOUT(host)送入到IPCBITS_RTOSIN(VID)link。
谢谢大哥。我也在看这几个函数。但是如何把MJPEG文件读取到内存从依次送入解码器还不太清楚。
在函数VdecVdis_bitsRdOpenFileHandles中,有下面代码
if (headGenerate)
{
if(strcmp(pFileInfo->codec,"h264") == 0)
Demo_generateH264HdrFile(pFileInfo->path);
else if(strcmp(pFileInfo->codec,"mjpeg") == 0)
Demo_generateMjpgHdrFile(pFileInfo->path);
else if(strcmp(pFileInfo->codec,"mpeg4") == 0)
Demo_generateMpeg4HdrFile(pFileInfo->path);
}
说明这个demo是支持mjpeg解码的,你可以跟一下程序,增加理解。
谢谢。这个demo程序试了下还是能跑的,但是我们最终应用是从网络RTP接收MJPEG数据再去解码的,跟直接读文件稍微有点不一样。
好的,那么现在的问题重点不是link之间的数据传递了,而是如何处理网络数据包,从中提取MJPEG流。这部分是A8侧应用上的任务。