2025-09-08 12:13 PM
The VENC peripheral on the N6 boasts a hardware handshake path with the DCMIPP peripheral, potentially allowing full compression of each frame to occur with very little active RAM. From what I can find, the DCMIPP capture starts, then the VENC is told to start encoding, and the application only then receives notifications when a frame is complete. There should be no further interaction. However, I am unable to get this working for MJPEG. The examples for this sort of streaming are all for h264, and the JPEG is thrown to the side as a one-time encoding. I have reasons on this project to use MJPEG encoding, but I cannot get the VENC to perform this handshake with the supplied example code. I have attempted to modify the JPEG Encoding Example that uses the VENC, and have successfully used the VENC for JPEG encoding of a full in-RAM frame, so I know the peripheral can work. Relatedly, the only articles on the handshake algorithm I can find is for the H264 compression.
I'm looking for any working examples of JPEG handshake streaming, or any assistance on getting it working. There seems to be many missing functions in the VENC middleware related to this. All of the JPEG functions are full-frame encoding, no support for double-buffering, nor any mention of streaming. I had to hunt down and dig through H264 examples to even figure out that the JPEG configuration had hidden the "HW" mode.