Hello TI!
When deleting a H.264 encoder instance "VIDENC1_delete", we run into the problem that one CMEM buffer gets not freed. It seems "Memory_contigFree" is called with a wrong buffer size. This looks very similar to this post: http://e2e.ti.com/support/embedded/f/354/p/63547/229656.aspx#229656.
When starting our app with CE_DEBUG=3 here is the allocation of this buffer:
@3,031,640us: [+0 T:0x453d7460 S:0x453d5f84] OM - Memory_contigAlloc> Enter(size=146, align=4, cached=FALSE, heap=FALSE)
@3,031,871us: [+4 T:0x453d7460 S:0x453d5f84] OM - Memory_contigAlloc> CMEM_alloc(146) = 0x4b022000.
@3,032,032us: [+4 T:0x453d7460 S:0x453d5f84] OM - Memory_contigAlloc> CMEM_getPhys(0x4b022000) = 0x89e95000.
@3,032,694us: [+0 T:0x453d7460 S:0x453d5f84] OM - Memory_contigAlloc> return (0x4b022000)
And here is the matching free:
@28,716,807us: [+0 T:0x453d7460 S:0x453d674c] OM - Memory_contigFree> Enter(addr=1258430464, size=48)
@28,717,119us: [+7 T:0x453d7460 S:0x453d674c] OM - Memory_contigFree> Error: buffer (addr=1258430464, size=48) not found in translation cache
Our cmem driver is loaded with these arguments:
phys_start=0x89c00000 phys_end=0x90000000 pools=4x3846400,8x2880000,2x1440000,2x2880512,1x2880512,4x12499968,16x4096,8x8192,4x24576,4x36864,16x53248,8x65536,256x56,1x320,1x640,2x608,1x2961x28,2x24 allowOverlap=1 phys_start_1=0x00001000 phys_end_1=0x00008000 pools_1=1x28672
We use these versions of the CE and H.264 encoder:
Codec engine: 2_25_03_13
H.264 encoder : 2_10_00_00_production
The application runs on an DM368 device.
It seems like this (or something similar) also happens with the MPEG4 encoder, but I don't have detailed dumps for that.
I have attached a complete alloc/free dump from "CE_ DEBUG=3 our_app | grep Memory_contig". You see a H.264 encoder instance getting created. Then after some seconds it's deleted and a JPEG encoder gets created.
As this bug delays our release, a quick response would be appreciated.
Regards,
Andreas