Add RGBA_8888 support to V4L2 camera HAL

Actually returns GBR data for now, based on available formats for
RPi3 camera, but claims it's RGB.

BUG: b/31829804
TEST: test program runs, can handle format 0x1 (RGBA_8888)

Change-Id: I41c9ced5c1fa25d1254530d3d0a1446d2d514a1f
diff --git a/modules/camera/3_4/v4l2_gralloc.cpp b/modules/camera/3_4/v4l2_gralloc.cpp
index 5812649..64fa306 100644
--- a/modules/camera/3_4/v4l2_gralloc.cpp
+++ b/modules/camera/3_4/v4l2_gralloc.cpp
@@ -25,6 +25,7 @@
 #include <system/graphics.h>
 
 #include "common.h"
+#include "stream_format.h"
 
 namespace v4l2_camera_hal {
 
@@ -96,9 +97,9 @@
   buffer_handle_t buffer = *camera_buffer->buffer;
   void* data;
   camera3_stream_t* stream = camera_buffer->stream;
-  switch(stream->format) {
+  switch(StreamFormat::HalToV4L2PixelFormat(stream->format)) {
     // TODO(b/30119452): support more YCbCr formats.
-    case HAL_PIXEL_FORMAT_YCbCr_420_888:
+    case V4L2_PIX_FMT_YUV420:
       android_ycbcr yuv_data;
       mModule->lock_ycbcr(mModule, buffer, stream->usage, 0, 0,
                           stream->width, stream->height, &yuv_data);
@@ -127,10 +128,15 @@
         buffer_data->transform_dest.reset(new android_ycbcr(yuv_data));
       }
       break;
-    case HAL_PIXEL_FORMAT_BLOB:
+    case V4L2_PIX_FMT_JPEG:
       // Jpeg buffers are just contiguous blobs; lock length * 1.
       mModule->lock(mModule, buffer, stream->usage, 0, 0, device_buffer->length, 1, &data);
       break;
+    case V4L2_PIX_FMT_BGR32:  // Fall-through.
+    case V4L2_PIX_FMT_RGB32:
+      // RGB formats have nice agreed upon representation. Unless using android flex formats.
+      mModule->lock(mModule, buffer, stream->usage, 0, 0, stream->width, stream->height, &data);
+      break;
     default:
       return -EINVAL;
   }