We are using the dvrrdk 3.5 with a usecase derived from multich_progressive_vcap_venc_vdec_vdis.c.
We setup the decoder using Vdec_params_init(). The VDEC_PARAMS_S passed to Vdec_params_init() has the decChannelParams[].maxVideoWidth and maxVideoHeight members set to 720x480.
With this, we are able to decode mjpeg video with 720x480 or lower size with not problem. As a test, I have fed the decoder mjpeg video with a size larger than the maximum specified above. I expected to get an unsupported resolution error (the same as the h264 decoder does). Instead the decoder continues to run with corrupted output and no error.
Shouldn't the call to the codec lib handle->fxns->ividdec.process() in decLink_jpeg.c be setting an unsupported resolution error without decoding?
Also, at run time, we sometimes change codecs between h264 and mjpeg using Vdec_deleteChn()/Vdec_createChn(). Again, this works fine when the mjpeg video fed to the decoder is withing the maximum size configured above. If we feed it mjpeg video larger than configured, it decodes without error producing corrupted output.
Later, when the system is shut down, I get an assert
[vpss] UTILS: DMA: Free'ed CH (TCC) = 58 (58)
[vpss]!!!XDC RUNTIME ASSERT FAILED
[vpss]xdc.runtime.Error @ ti.sysbios.heaps.HeapMem: line 337:
[vpss]assertion failure: A_invalidFree: Invalid free
Because of the way our device receives the mjpeg stream, we don't know ahead of time the size (unless we parse the jpeg header). Is there a way to keep the decoder link from attempting to decode images larger than it's output buffers?