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 ; /* Size of the codec specific data */ |
79 | u8 *; /* 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 ; /* Size of the codec specific data */ |
105 | u32 ; /* Codec specific data */ |
106 | }; |
107 | |
108 | #endif /* MMAL_MSG_FORMAT_H */ |
109 | |