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.

Feng Dong 老师请进。求教如何将IPCBITS_HLOSOUT(host)link与本地文件链接起来



老师你好,我想做个将网络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侧应用上的任务。

  • haijun是大牛,呵呵.

    楼主的问题,关于网络流直接解码的功能,我们目前还没有,但是从文件解码这个已经有了.

    比较简单的实现就是找个软件网络流都存文件,我们的demo定期读文件并解.呵呵.比较土的办法.

  • 还想请教下,过了1年多了,播放TI网络摄像头过来的RTSP流,有新方法了没?还是存为文件,之后定期读文件吗?