techyian / MMALSharp

C# wrapper to Broadcom's MMAL with an API to the Raspberry Pi camera.
MIT License
195 stars 33 forks source link

Implement "vc.ril.isp" component #47

Closed techyian closed 4 years ago

techyian commented 6 years ago

As per the work 6by9 has done for raspiraw, there are two additional components available in later firmwares for accessing raw camera data directly from the CSI2 bus.

For reference see https://www.raspberrypi.org/forums/viewtopic.php?t=109137 https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=218458

For example app using these components see https://github.com/6by9/raspiraw/blob/a0d4c31d24531e9a5eafeb129ac194f05526cd31/raspiraw.c

techyian commented 5 years ago

ISP docs: https://github.com/raspberrypi/firmware/blob/master/documentation/ilcomponents/isp.html

Rawcam docs: https://github.com/raspberrypi/firmware/blob/master/documentation/ilcomponents/rawcam.html

techyian commented 4 years ago

Check whether MMALSharp has a similar issue to what 6by9 has stated here. MMALSharp sets the array to 20 and is subsequently used in the GetSupportedEncodings method, unsure where I got that value from originally (possibly Picamera if that has recently been increased).

techyian commented 4 years ago

For the rawcam functionality, the following native structures are used:

https://github.com/raspberrypi/userland/commit/d0954df802d43ea7cc94481435188913f6a65eee

techyian commented 4 years ago

Changing this ticket to track the ISP component. Rawcam component work tracked against #124 and being pushed back to later 0.7 release due to complexities involved.

techyian commented 4 years ago

I am having issues getting the 2nd output port to call the native callback method. According to the API docs, there are two cases when port 362 will be disabled by MMAL:

1) When port 362 is ran at a higher resolution than port 361. 2) If no output buffer is available on port 362 when both an input buffer and port 361 output buffer are available.

During testing I've made sure port 362 is ran at a lower resolution, so I suspect it may be case 2 that's causing this issue. I am going to push v0.6 out bearing in mind this issue is present and raise a separate ticket to investigate for v0.7.