Hi,everyone:
I created a usecase , it's structure is: read_local_file -> ipcBitsOutHost -> ipcBitsInVideo -> dec -> ipcFrameOutVideo ->IpcOutVideo ->IpcInVpss -> dup ->IpcOutVpss -> IpcInVideo -> enc -> ipcBitsOutRtos -> ipcBitsInHost -> write_to_local
this is one way , the other way is followed after dup: dup -> swMS -> display
the output on display looks normally. but there are only 6 frames can be writen to local. I traced the source codes, I found the empty buf in encLink does not release. Once the 6 buf be used ,it can not alloc any new empty que buf, so the encLink stops work. I also found the release of the empty buf is done by encLink's next link,ipcBitsOutRtos.
the function is :IpcBitsOutLink_releaseBitBufs(IpcBitsOutLink_Obj * pObj) in /dvr_rdk/mcfw/src_bios6/links_common/ipcBitsOut/ipcBitsOutLink_tsk.c
in this function, it call ListMP_getHead, but it return NULL. the loop breaks, the empty does not be released.
I wonder the reason and how to reslove this problem
thanks!
shen
