Hi everyone,
I'm using IPNC RDK ver3.5 and IPNC DM8127.
My custom usecase is:
ARM->ipcFrameOutHost(VIDFrame)->ipcFrameInDsp->algLink(FVID2_frame)->ipcBitsOutDsp(Bitstream)->ipcBitsInHost->ARM.
The dataflow is smooth now,but the entire dataflow includes these three dataformats:
1.VIDFrame_Buf
2.Bitstream_Buf
3.FVID2_frame
and virtual,phy address are passed between these dataformats.
In VIDFrame_Buf, I use Vsys_allocBuf() to alloc a buf for my file and copy its phy Addr to VIDFrame_Buf.phyAddr[0][0].Finally my Alglink can access this frame through this VIDFrame_Buf.phyAddr[0][0].
In Bitstream_Buf, I put the result of my Alg to Bitstream_Buf.addr(and this addr seems to be virtual addrs since there is another param:Bitstream_Buf.phyAddr).Finally my ARM can access the result through this Bitstream_Buf.addr.
I've read the related source code about IpcLink_tsk.c,and see some information copy between different dataformats,but I sitll can't figure out how this Address pass will work?
So here are my questions:
1.I've also read the 《IPNC_RDK_MemoryMapAnalysis.pdf》 ,but I'm really confused about the relationship between CMEM and SR1, Why I use Vsys_allocBuf(),which finally use CMEM function to alloc a mem for SR1?
3.Since I use:
IpcBitsInLink_getFullVideoBitStreamBufs(),
IpcBitsInLink_putEmptyVideoBitStreamBufs(),
IpcFramesOutLink_getEmptyVideoFrames(),
IpcFramesOutLink_putFullVideoFrames()
to process data,does this mean all these data will be in SR1 area?
2.In algLink,why I copy the address of Alg result to Bitstream_Buf.addr,and then the ARM can access the result through this address,since I thought this address should be some phy address on DSP,not a virtual address.
Thank you for your patience.
regards,
Zhao