Y
yu741373252 发布的最新帖子
-
回复: 请教一下各位大神,为什么我的Adec销毁不了
@liuqiang 没有查看过,个人觉得占用内存是必须的,在解复用器 解码器之间有MPP自己创建的缓存,肯定会占用内存的。我的问题应该就是中间在销毁解码器的时候,缓存里面的数据没有清空,所有销毁不了。我也是刚做不太懂全志解复用器和解码器之间的缓存是怎样之中处理机制
-
回复: 请教一下各位大神,V853怎样实现连续解码多个ts文件,中间不断流?
我另起一个线程,收到demux的EOF后延时一秒在AW_MPI_DEMUX_SwitchDateSource是可以的
-
请教一下各位大神,V853怎样实现连续解码多个ts文件,中间不断流?
我的想法是在demux解码完上一个文件直接加载下一个文件,刚好看到全志有AW_MPI_DEMUX_SwitchDateSource这个函数,但是我测试的AW_MPI_DEMUX_SwitchDateSource函数一直返回-1,不知道什么原因,有哪位大神使用过AW_MPI_DEMUX_SwitchDateSource,帮忙解答一下白,感恩感恩!!!
ERRORTYPE MPPCallback(void *cookie, MPP_CHN_S pChn, MPP_EVENT_TYPE event, void pEventData)
{
DemuxManager::DemuxManagerContext pContext = (DemuxManager::DemuxManagerContext)cookie;if (pChn->mModId == MOD_ID_DEMUX) { switch (event) { case MPP_EVENT_NOTIFY_EOF: { int ret = 0; //char path[256] = {0}; LT_LOGD("demux to end of file"); if(pContext->mDmxChn >= 0) { memset(pContext->mConfigPara.mSrcFile,0,sizeof(pContext->mConfigPara.mSrcFile)); ret = pContext->pDemuxManger->GetDemuxFileFromList(pContext->mConfigPara.mSrcFile); LT_LOGD("GetDemuxFileFromList ret %d %s",ret,pContext->mConfigPara.mSrcFile); if(strlen(pContext->mConfigPara.mSrcFile) > 0) { int fd = open(pContext->mConfigPara.mSrcFile, O_RDONLY); if (fd < 0) { LT_LOGE("Failed to open file %s(%s)", pContext->mConfigPara.mSrcFile, strerror(errno)); break; } if(pContext->mDmxChnAttr.mFd >= 0) { LT_LOGD("close fd %d",pContext->mDmxChnAttr.mFd); close(pContext->mDmxChnAttr.mFd); } LT_LOGD("new fd %d",fd); ret = AW_MPI_DEMUX_GetChnAttr(pContext->mDmxChn,&pContext->mDmxChnAttr); LT_LOGD("AW_MPI_DEMUX_GetChnAttr ret %d",ret); ret = AW_MPI_DEMUX_SwitchDateSource(pContext->mDmxChn,&pContext->mDmxChnAttr); LT_LOGD("AW_MPI_DEMUX_SwitchDateSource ret %d",ret); ret = AW_MPI_DEMUX_Start(pContext->mDmxChn); LT_LOGD("AW_MPI_DEMUX_Start ert %d",ret); if(ret != SUCCESS) { LT_LOGE("fatal error! demux start fail mDmxChn %d [0x%x]!",pContext->mDmxChn, ret); break; } break; } } if (pContext->mVdecChn >= 0) { LT_LOGD("DEMUX streamEof"); AW_MPI_VDEC_SetStreamEof(pContext->mVdecChn, TRUE); } break; } default: { LT_LOGD("ignore demuxChn[%d] event[0x%x]", pChn->mChnId, event); break; } } }
}