1 /*******************************************************************************
3 * Copyright (C) 2017 Xilinx, Inc. All rights reserved.
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * Use of the Software is limited solely to applications:
16 * (a) running on a Xilinx device, or
17 * (b) that interact with a Xilinx device through a bus or interconnect.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
24 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 * Except as contained in this notice, the name of the Xilinx shall not be used
28 * in advertising or otherwise to promote the sale, use or other dealings in
29 * this Software without prior written authorization from Xilinx.
31 *******************************************************************************/
32 /******************************************************************************/
35 * @file xavbuf_videoformats.c
36 * @addtogroup xavbuf_v2_1
39 * Contains attributes of the video formats mapped to the hardware
44 * MODIFICATION HISTORY:
46 * Ver Who Date Changes
47 * ----- ---- -------- -----------------------------------------------
48 * 1.0 aad 03/10/17 Initial release.
49 * 2.0 aad 02/22/18 Fixed scaling factors and bits per pixel
52 *******************************************************************************/
54 /******************************* Include Files ********************************/
59 /**************************** Variable Definitions ****************************/
64 const XAVBuf_VideoAttribute XAVBuf_SupportedFormats[XAVBUF_NUM_SUPPORTED] =
66 /* Non - Live Video Formats */
67 { CbY0CrY1, 0, Interleaved,
68 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
69 TRUE, FALSE, FALSE, 16},
70 { CrY0CbY1, 1, Interleaved,
71 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
72 TRUE, FALSE, FALSE, 16},
73 { Y0CrY1Cb, 2, Interleaved,
74 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
75 TRUE, FALSE, FALSE, 16},
76 { Y0CbY1Cr, 3, Interleaved,
77 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
78 TRUE, FALSE, FALSE, 16},
80 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
81 TRUE, FALSE, FALSE, 16},
83 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
84 FALSE, FALSE, FALSE, 24},
85 { YV16Ci, 6, SemiPlanar,
86 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
87 TRUE, FALSE, FALSE, 16},
88 { MONOCHROME, 7, Interleaved,
89 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
90 TRUE, FALSE, FALSE, 8},
91 { YV16Ci2, 8, SemiPlanar,
92 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
93 TRUE, FALSE, TRUE, 16},
94 { YUV444, 9, Interleaved,
95 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
96 FALSE, FALSE, FALSE, 24},
97 { RGB888, 10, Interleaved,
98 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
99 FALSE, TRUE, FALSE, 24},
100 { RGBA8880, 11, Interleaved,
101 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
102 FALSE, TRUE, FALSE, 32},
103 { RGB888_10BPC, 12, Interleaved,
104 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
105 FALSE, TRUE, FALSE, 30},
106 { YUV444_10BPC, 13, Interleaved,
107 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
108 FALSE, FALSE, FALSE, 30},
109 { YV16Ci2_10BPC, 14, SemiPlanar,
110 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
111 TRUE, FALSE, TRUE, 20},
112 { YV16Ci_10BPC, 15, SemiPlanar,
113 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
114 TRUE, FALSE, FALSE, 20},
115 { YV16_10BPC, 16, Planar,
116 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
117 TRUE, FALSE, FALSE, 20},
118 { YV24_10BPC, 17, Planar,
119 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
120 FALSE, FALSE, FALSE, 30},
121 { MONOCHROME_10BPC, 18, Interleaved,
122 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
123 TRUE, FALSE, FALSE, 10},
124 { YV16_420, 19, Planar,
125 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
126 TRUE, FALSE, FALSE, 16},
127 { YV16Ci_420, 20, SemiPlanar,
128 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
129 TRUE, FALSE, FALSE, 16},
130 { YV16Ci2_420, 21, SemiPlanar,
131 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
132 TRUE, FALSE, TRUE, 16},
133 { YV16_420_10BPC, 22, Planar,
134 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
135 TRUE, FALSE, FALSE, 20},
136 { YV16Ci_420_10BPC, 23, SemiPlanar,
137 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
138 TRUE, FALSE, FALSE, 20},
139 { YV16Ci2_420_10BPC, 24, SemiPlanar,
140 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
141 TRUE, FALSE, TRUE, 20},
143 /* Non-Live Graphics formats */
144 { RGBA8888, 0, Interleaved,
145 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
146 FALSE, TRUE, FALSE, 32},
147 { ABGR8888, 1, Interleaved,
148 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
149 FALSE, TRUE, FALSE, 32},
150 { RGB888_GFX, 2, Interleaved,
151 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
152 FALSE, TRUE, FALSE, 24},
153 { BGR888, 3, Interleaved,
154 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
155 FALSE, TRUE, FALSE, 24},
156 { RGBA5551, 4, Interleaved,
157 {XAVBUF_BUF_5BIT_SF, XAVBUF_BUF_5BIT_SF, XAVBUF_BUF_5BIT_SF},
158 FALSE, TRUE, FALSE, 16},
159 { RGBA4444, 5, Interleaved,
160 {XAVBUF_BUF_4BIT_SF, XAVBUF_BUF_4BIT_SF, XAVBUF_BUF_4BIT_SF},
161 FALSE, TRUE, FALSE, 16},
162 { RGB565, 6, Interleaved,
163 {XAVBUF_BUF_5BIT_SF, XAVBUF_BUF_6BIT_SF, XAVBUF_BUF_5BIT_SF},
164 FALSE, TRUE, FALSE, 16},
165 { BPP8, 7, Interleaved,
166 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
167 FALSE, TRUE, FALSE, 8},
168 { BPP4, 8, Interleaved,
169 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
170 FALSE, TRUE, FALSE, 4},
171 { BPP2, 9, Interleaved,
172 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
173 FALSE, TRUE, FALSE, 2},
174 { BPP1, 10, Interleaved,
175 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
176 FALSE, TRUE, FALSE, 1},
177 { YUV422, 11, Interleaved,
178 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
179 FALSE, FALSE, FALSE, 24},
181 /* Video Formats for Live Video/Graphics input and output sources */
182 { RGB_6BPC, 0, Interleaved,
183 {XAVBUF_BUF_6BIT_SF, XAVBUF_BUF_6BIT_SF, XAVBUF_BUF_6BIT_SF},
184 FALSE, TRUE, FALSE, 18},
185 { RGB_8BPC, 0, Interleaved,
186 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
187 FALSE, TRUE, FALSE, 24},
188 { RGB_10BPC, 0, Interleaved,
189 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
190 FALSE, TRUE, FALSE, 30},
191 { RGB_12BPC, 0, Interleaved,
192 {XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF},
193 FALSE, TRUE, FALSE, 36},
194 { YCbCr444_6BPC, 1, Interleaved,
195 {XAVBUF_BUF_6BIT_SF, XAVBUF_BUF_6BIT_SF, XAVBUF_BUF_6BIT_SF},
196 FALSE, FALSE, FALSE, 18},
197 { YCbCr444_8BPC, 1, Interleaved,
198 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
199 FALSE, FALSE, FALSE, 24},
200 { YCbCr444_10BPC, 1, Interleaved,
201 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
202 FALSE, FALSE, FALSE, 30},
203 { YCbCr444_12BPC, 1, Interleaved,
204 {XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF},
205 FALSE, FALSE, FALSE, 36},
206 { YCbCr422_8BPC, 2, Interleaved,
207 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
208 TRUE, FALSE, FALSE, 24},
209 { YCbCr422_10BPC, 2, Interleaved,
210 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
211 TRUE, FALSE, FALSE, 30},
212 { YCbCr422_12BPC, 2, Interleaved,
213 {XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF},
214 TRUE, FALSE, FALSE, 36},
215 { YOnly_8BPC, 3, Interleaved,
216 {XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF, XAVBUF_BUF_8BIT_SF},
217 TRUE, FALSE, FALSE, 24},
218 { YOnly_10BPC, 3, Interleaved,
219 {XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF, XAVBUF_BUF_10BIT_SF},
220 TRUE, FALSE, FALSE, 30},
221 { YOnly_12BPC, 3, Interleaved,
222 {XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF, XAVBUF_BUF_12BIT_SF},
223 TRUE, FALSE, FALSE, 36},