staging: bcm2835-camera: Create struct mmal_es_format_local to mirror struct mmal_es_...
authorMichael Zoran <mzoran@crowfest.net>
Fri, 10 Mar 2017 05:08:50 +0000 (21:08 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2017 09:12:09 +0000 (10:12 +0100)
The struct struct mmal_es_format is passed between the firmware which has
pointers.  A local version of mmal_es_format is also used.

Luckly, the two versions are always memberwise copied from each other
so simply have different structures for the local and msg versions.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h
drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h

index 98198ff..2302f4b 100644 (file)
@@ -1583,7 +1583,7 @@ static int set_camera_parameters(struct vchiq_mmal_instance *instance,
 static int __init mmal_init(struct bm2835_mmal_dev *dev)
 {
        int ret;
-       struct mmal_es_format *format;
+       struct mmal_es_format_local *format;
        u32 bool_true = 1;
        u32 supported_encodings[MAX_SUPPORTED_ENCODINGS];
        int param_size;
index 993de44..24b002e 100644 (file)
@@ -53,7 +53,7 @@ union mmal_es_specific_format {
 };
 
 /** Definition of an elementary stream format (MMAL_ES_FORMAT_T) */
-struct mmal_es_format {
+struct mmal_es_format_local {
        u32 type;      /* enum mmal_es_type */
 
        u32 encoding;  /* FourCC specifying encoding of the elementary stream.*/
@@ -62,10 +62,7 @@ struct mmal_es_format {
                               * stream.
                               */
 
-       union mmal_es_specific_format *es; /* TODO: pointers in
-                                           * message serialisation?!?
-                                           */
-                                           /* Type specific
+       union mmal_es_specific_format *es;  /* Type specific
                                             * information for the
                                             * elementary stream
                                             */
@@ -77,4 +74,26 @@ struct mmal_es_format {
        u8  *extradata;           /**< Codec specific data */
 };
 
+/** Remote definition of an elementary stream format (MMAL_ES_FORMAT_T) */
+struct mmal_es_format {
+       u32 type;      /* enum mmal_es_type */
+
+       u32 encoding;  /* FourCC specifying encoding of the elementary stream.*/
+       u32 encoding_variant; /* FourCC specifying the specific
+                              * encoding variant of the elementary
+                              * stream.
+                              */
+
+       u32 es; /* Type specific
+                * information for the
+                * elementary stream
+                */
+
+       u32 bitrate;        /**< Bitrate in bits per second */
+       u32 flags; /**< Flags describing properties of the elementary stream. */
+
+       u32 extradata_size;       /**< Size of the codec specific data */
+       u32 extradata;           /**< Codec specific data */
+};
+
 #endif /* MMAL_MSG_FORMAT_H */
index 2307997..2842ac9 100644 (file)
@@ -74,7 +74,7 @@ struct vchiq_mmal_port {
        struct vchiq_mmal_port_buffer current_buffer;
 
        /* stream format */
-       struct mmal_es_format format;
+       struct mmal_es_format_local format;
        /* elementry stream format */
        union mmal_es_specific_format es;