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 <linux/math.h> 18 19 #include "mmal-msg-common.h" 20 21 /* MMAL_ES_FORMAT_T */ 22 23 struct mmal_audio_format { 24 u32 channels; /* Number of audio channels */ 25 u32 sample_rate; /* Sample rate */ 26 27 u32 bits_per_sample; /* Bits per sample */ 28 u32 block_align; /* Size of a block of data */ 29 }; 30 31 struct mmal_video_format { 32 u32 width; /* Width of frame in pixels */ 33 u32 height; /* Height of frame in rows of pixels */ 34 struct mmal_rect crop; /* Visible region of the frame */ 35 struct s32_fract frame_rate; /* Frame rate */ 36 struct s32_fract par; /* Pixel aspect ratio */ 37 38 /* 39 * FourCC specifying the color space of the video stream. See the 40 * MmalColorSpace "pre-defined color spaces" for some examples. 41 */ 42 u32 color_space; 43 }; 44 45 struct mmal_subpicture_format { 46 u32 x_offset; 47 u32 y_offset; 48 }; 49 50 union mmal_es_specific_format { 51 struct mmal_audio_format audio; 52 struct mmal_video_format video; 53 struct mmal_subpicture_format subpicture; 54 }; 55 56 /* Definition of an elementary stream format (MMAL_ES_FORMAT_T) */ 57 struct mmal_es_format_local { 58 u32 type; /* enum mmal_es_type */ 59 60 u32 encoding; /* FourCC specifying encoding of the elementary 61 * stream. 62 */ 63 u32 encoding_variant; /* FourCC specifying the specific 64 * encoding variant of the elementary 65 * stream. 66 */ 67 68 union mmal_es_specific_format *es; /* Type specific 69 * information for the 70 * elementary stream 71 */ 72 73 u32 bitrate; /* Bitrate in bits per second */ 74 u32 flags; /* Flags describing properties of the elementary 75 * stream. 76 */ 77 78 u32 extradata_size; /* Size of the codec specific data */ 79 u8 *extradata; /* Codec specific data */ 80 }; 81 82 /* Remote definition of an elementary stream format (MMAL_ES_FORMAT_T) */ 83 struct mmal_es_format { 84 u32 type; /* enum mmal_es_type */ 85 86 u32 encoding; /* FourCC specifying encoding of the elementary 87 * stream. 88 */ 89 u32 encoding_variant; /* FourCC specifying the specific 90 * encoding variant of the elementary 91 * stream. 92 */ 93 94 u32 es; /* Type specific 95 * information for the 96 * elementary stream 97 */ 98 99 u32 bitrate; /* Bitrate in bits per second */ 100 u32 flags; /* Flags describing properties of the elementary 101 * stream. 102 */ 103 104 u32 extradata_size; /* Size of the codec specific data */ 105 u32 extradata; /* Codec specific data */ 106 }; 107 108 #endif /* MMAL_MSG_FORMAT_H */ 109