1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Broadcom BCM2835 V4L2 driver
4  *
5  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
6  *
7  * Authors: Vincent Sanders @ Collabora
8  *          Dave Stevenson @ Broadcom
9  *		(now dave.stevenson@raspberrypi.org)
10  *          Simon Mellor @ Broadcom
11  *          Luke Diamand @ Broadcom
12  */
13 
14 #ifndef MMAL_MSG_FORMAT_H
15 #define MMAL_MSG_FORMAT_H
16 
17 #include "mmal-msg-common.h"
18 
19 /* MMAL_ES_FORMAT_T */
20 
21 struct mmal_audio_format {
22 	u32 channels;		/* Number of audio channels */
23 	u32 sample_rate;	/* Sample rate */
24 
25 	u32 bits_per_sample;	/* Bits per sample */
26 	u32 block_align;	/* Size of a block of data */
27 };
28 
29 struct mmal_video_format {
30 	u32 width;		/* Width of frame in pixels */
31 	u32 height;		/* Height of frame in rows of pixels */
32 	struct mmal_rect crop;	/* Visible region of the frame */
33 	struct mmal_rational frame_rate;	/* Frame rate */
34 	struct mmal_rational par;		/* Pixel aspect ratio */
35 
36 	/*
37 	 * FourCC specifying the color space of the video stream. See the
38 	 * MmalColorSpace "pre-defined color spaces" for some examples.
39 	 */
40 	u32 color_space;
41 };
42 
43 struct mmal_subpicture_format {
44 	u32 x_offset;
45 	u32 y_offset;
46 };
47 
48 union mmal_es_specific_format {
49 	struct mmal_audio_format audio;
50 	struct mmal_video_format video;
51 	struct mmal_subpicture_format subpicture;
52 };
53 
54 /* Definition of an elementary stream format (MMAL_ES_FORMAT_T) */
55 struct mmal_es_format_local {
56 	u32 type;	/* enum mmal_es_type */
57 
58 	u32 encoding;	/* FourCC specifying encoding of the elementary
59 			 * stream.
60 			 */
61 	u32 encoding_variant;	/* FourCC specifying the specific
62 				 * encoding variant of the elementary
63 				 * stream.
64 				 */
65 
66 	union mmal_es_specific_format *es;	/* Type specific
67 						 * information for the
68 						 * elementary stream
69 						 */
70 
71 	u32 bitrate;	/* Bitrate in bits per second */
72 	u32 flags;	/* Flags describing properties of the elementary
73 			 * stream.
74 			 */
75 
76 	u32 extradata_size;	/* Size of the codec specific data */
77 	u8  *extradata;		/* Codec specific data */
78 };
79 
80 /* Remote definition of an elementary stream format (MMAL_ES_FORMAT_T) */
81 struct mmal_es_format {
82 	u32 type;	/* enum mmal_es_type */
83 
84 	u32 encoding;	/* FourCC specifying encoding of the elementary
85 			 * stream.
86 			 */
87 	u32 encoding_variant;	/* FourCC specifying the specific
88 				 * encoding variant of the elementary
89 				 * stream.
90 				 */
91 
92 	u32 es;	/* Type specific
93 		 * information for the
94 		 * elementary stream
95 		 */
96 
97 	u32 bitrate;	/* Bitrate in bits per second */
98 	u32 flags;	/* Flags describing properties of the elementary
99 			 * stream.
100 			 */
101 
102 	u32 extradata_size;	/* Size of the codec specific data */
103 	u32 extradata;		/* Codec specific data */
104 };
105 
106 #endif /* MMAL_MSG_FORMAT_H */
107