Hello,
We are trying to run H.264 encoder ( version 2_01_013 with Codec Engine 2_26_02_11 ) in our OMAP3530 based system which launches 2 DMA channels for data transfer between external HW and DSP. System starts up normally and data transfer in our application is proceeding normally. We then initiates the H.264 encoder which seemingly started running fine in the beginning. However, after about 20 secs or so into the video encoding process hangs in H264VENC_TI_QDMA_wait(). To investigate the problem we have looked into a number of things as suggested in Codec specs, Wiki pages, forums and etc with no success. Specifically, we have noticed the followings:
1. We currently have Encoder and our DMA processes in the same scratch group. We have tried putting them into different groups but doing so for some reason made the problem worse - Codec does not even start.
2. We use DMAN3_createChannels() and ACPY3 as described in spraag1 - Using DMA with Framework Components for C64x for our data transfer processing.
3. Based on H.264 Encoder data sheet the encoder needs 6 QDMA channels and parameter space equal to 39 entries. However, we observed that codec runs properly with 8 QDMA channels but not 6.
4. The encoder runs fine if we disable DMA in our data transfer process (use non-DMA copy). Indicates that the codec QDMA conflicts with other DMA process.
Here are the DMAN3 parameters that we use:
DMAN3.paRamBaseIndex = 80; // 1st EDMA3 PaRAM set available for DMAN3
DMAN3.numPaRamEntries = 48; // number of PaRAM sets exclusively used by DMAN
DMAN3.tccAllocationMaskL = 0; // bit mask indicating which TCCs 0..31 to use
DMAN3.tccAllocationMaskH = 0xffffffff; // assign all TCCs 32..63 for DMAN
DMAN3.numTccGroup = [32, 0]; // number of TCCs assigned to scratch group 0, 1
DMAN3.numPaRamGroup = [48, 0]; // number of PaRAM sets for scratch group 0, 1
DMAN3.qdmaChannels = [0, 1, 2, 3, 4, 5, 6, 7]; // choice of QDMA channels to use
DMAN3.numQdmaChannels = 8; // number of device's QDMA channels to use
At this point, it seems that none of the suggestions or comments in Wiki and other posts in this forum help to solve the issue. Can anyone provide help to resolve this issue?
Thanks
James