1 /**************************************************************************
3 * Copyright 2010 VMware, Inc.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
26 **************************************************************************/
31 * YUV and RGB subsampled formats conversion.
33 * @author Jose Fonseca <jfonseca@vmware.com>
37 #include "util/u_format_yuv.h"
41 util_format_r8g8_b8g8_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
42 const uint8_t *src_row, unsigned src_stride,
43 unsigned width, unsigned height)
47 for (y = 0; y < height; y += 1) {
49 const uint32_t *src = (const uint32_t *)src_row;
53 for (x = 0; x + 1 < width; x += 2) {
56 #ifdef PIPE_ARCH_BIG_ENDIAN
57 value = util_bswap32(value);
60 r = ubyte_to_float((value >> 0) & 0xff);
61 g0 = ubyte_to_float((value >> 8) & 0xff);
62 b = ubyte_to_float((value >> 16) & 0xff);
63 g1 = ubyte_to_float((value >> 24) & 0xff);
68 dst[3] = 1.0f; /* a */
74 dst[3] = 1.0f; /* a */
81 #ifdef PIPE_ARCH_BIG_ENDIAN
82 value = util_bswap32(value);
85 r = ubyte_to_float((value >> 0) & 0xff);
86 g0 = ubyte_to_float((value >> 8) & 0xff);
87 b = ubyte_to_float((value >> 16) & 0xff);
88 g1 = ubyte_to_float((value >> 24) & 0xff);
93 dst[3] = 1.0f; /* a */
96 src_row += src_stride/sizeof(*src_row);
97 dst_row += dst_stride/sizeof(*dst_row);
103 util_format_r8g8_b8g8_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
104 const uint8_t *src_row, unsigned src_stride,
105 unsigned width, unsigned height)
109 for (y = 0; y < height; y += 1) {
110 uint8_t *dst = dst_row;
111 const uint32_t *src = (const uint32_t *)src_row;
113 uint8_t r, g0, g1, b;
115 for (x = 0; x + 1 < width; x += 2) {
118 #ifdef PIPE_ARCH_BIG_ENDIAN
119 value = util_bswap32(value);
122 r = (value >> 0) & 0xff;
123 g0 = (value >> 8) & 0xff;
124 b = (value >> 16) & 0xff;
125 g1 = (value >> 24) & 0xff;
130 dst[3] = 0xff; /* a */
136 dst[3] = 0xff; /* a */
143 #ifdef PIPE_ARCH_BIG_ENDIAN
144 value = util_bswap32(value);
147 r = (value >> 0) & 0xff;
148 g0 = (value >> 8) & 0xff;
149 b = (value >> 16) & 0xff;
150 g1 = (value >> 24) & 0xff;
155 dst[3] = 0xff; /* a */
158 src_row += src_stride/sizeof(*src_row);
159 dst_row += dst_stride/sizeof(*dst_row);
165 util_format_r8g8_b8g8_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
166 const float *src_row, unsigned src_stride,
167 unsigned width, unsigned height)
171 for (y = 0; y < height; y += 1) {
172 const float *src = src_row;
173 uint32_t *dst = (uint32_t *)dst_row;
177 for (x = 0; x + 1 < width; x += 2) {
178 r = 0.5f*(src[0] + src[4]);
181 b = 0.5f*(src[2] + src[6]);
183 value = float_to_ubyte(r);
184 value |= float_to_ubyte(g0) << 8;
185 value |= float_to_ubyte(b) << 16;
186 value |= float_to_ubyte(g1) << 24;
188 #ifdef PIPE_ARCH_BIG_ENDIAN
189 value = util_bswap32(value);
203 value = float_to_ubyte(r);
204 value |= float_to_ubyte(g0) << 8;
205 value |= float_to_ubyte(b) << 16;
206 value |= float_to_ubyte(g1) << 24;
208 #ifdef PIPE_ARCH_BIG_ENDIAN
209 value = util_bswap32(value);
215 dst_row += dst_stride/sizeof(*dst_row);
216 src_row += src_stride/sizeof(*src_row);
222 util_format_r8g8_b8g8_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
223 const uint8_t *src_row, unsigned src_stride,
224 unsigned width, unsigned height)
228 for (y = 0; y < height; y += 1) {
229 const uint8_t *src = src_row;
230 uint32_t *dst = (uint32_t *)dst_row;
231 uint32_t r, g0, g1, b;
234 for (x = 0; x + 1 < width; x += 2) {
235 r = (src[0] + src[4] + 1) >> 1;
238 b = (src[2] + src[6] + 1) >> 1;
245 #ifdef PIPE_ARCH_BIG_ENDIAN
246 value = util_bswap32(value);
265 #ifdef PIPE_ARCH_BIG_ENDIAN
266 value = util_bswap32(value);
272 dst_row += dst_stride/sizeof(*dst_row);
273 src_row += src_stride/sizeof(*src_row);
279 util_format_r8g8_b8g8_unorm_fetch_rgba_float(float *dst, const uint8_t *src,
280 unsigned i, unsigned j)
285 dst[0] = ubyte_to_float(src[0]); /* r */
286 dst[1] = ubyte_to_float(src[1 + 2*i]); /* g */
287 dst[2] = ubyte_to_float(src[2]); /* b */
288 dst[3] = 1.0f; /* a */
293 util_format_g8r8_g8b8_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
294 const uint8_t *src_row, unsigned src_stride,
295 unsigned width, unsigned height)
299 for (y = 0; y < height; y += 1) {
300 float *dst = dst_row;
301 const uint32_t *src = (const uint32_t *)src_row;
305 for (x = 0; x + 1 < width; x += 2) {
308 #ifdef PIPE_ARCH_BIG_ENDIAN
309 value = util_bswap32(value);
312 g0 = ubyte_to_float((value >> 0) & 0xff);
313 r = ubyte_to_float((value >> 8) & 0xff);
314 g1 = ubyte_to_float((value >> 16) & 0xff);
315 b = ubyte_to_float((value >> 24) & 0xff);
320 dst[3] = 1.0f; /* a */
326 dst[3] = 1.0f; /* a */
333 #ifdef PIPE_ARCH_BIG_ENDIAN
334 value = util_bswap32(value);
337 g0 = ubyte_to_float((value >> 0) & 0xff);
338 r = ubyte_to_float((value >> 8) & 0xff);
339 g1 = ubyte_to_float((value >> 16) & 0xff);
340 b = ubyte_to_float((value >> 24) & 0xff);
345 dst[3] = 1.0f; /* a */
348 src_row += src_stride/sizeof(*src_row);
349 dst_row += dst_stride/sizeof(*dst_row);
355 util_format_g8r8_g8b8_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
356 const uint8_t *src_row, unsigned src_stride,
357 unsigned width, unsigned height)
361 for (y = 0; y < height; y += 1) {
362 uint8_t *dst = dst_row;
363 const uint32_t *src = (const uint32_t *)src_row;
365 uint8_t r, g0, g1, b;
367 for (x = 0; x + 1 < width; x += 2) {
370 #ifdef PIPE_ARCH_BIG_ENDIAN
371 value = util_bswap32(value);
374 g0 = (value >> 0) & 0xff;
375 r = (value >> 8) & 0xff;
376 g1 = (value >> 16) & 0xff;
377 b = (value >> 24) & 0xff;
382 dst[3] = 0xff; /* a */
388 dst[3] = 0xff; /* a */
395 #ifdef PIPE_ARCH_BIG_ENDIAN
396 value = util_bswap32(value);
399 g0 = (value >> 0) & 0xff;
400 r = (value >> 8) & 0xff;
401 g1 = (value >> 16) & 0xff;
402 b = (value >> 24) & 0xff;
407 dst[3] = 0xff; /* a */
410 src_row += src_stride/sizeof(*src_row);
411 dst_row += dst_stride/sizeof(*dst_row);
417 util_format_g8r8_g8b8_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
418 const float *src_row, unsigned src_stride,
419 unsigned width, unsigned height)
423 for (y = 0; y < height; y += 1) {
424 const float *src = src_row;
425 uint32_t *dst = (uint32_t *)dst_row;
429 for (x = 0; x + 1 < width; x += 2) {
430 r = 0.5f*(src[0] + src[4]);
433 b = 0.5f*(src[2] + src[6]);
435 value = float_to_ubyte(g0);
436 value |= float_to_ubyte(r) << 8;
437 value |= float_to_ubyte(g1) << 16;
438 value |= float_to_ubyte(b) << 24;
440 #ifdef PIPE_ARCH_BIG_ENDIAN
441 value = util_bswap32(value);
455 value = float_to_ubyte(g0);
456 value |= float_to_ubyte(r) << 8;
457 value |= float_to_ubyte(g1) << 16;
458 value |= float_to_ubyte(b) << 24;
460 #ifdef PIPE_ARCH_BIG_ENDIAN
461 value = util_bswap32(value);
467 dst_row += dst_stride/sizeof(*dst_row);
468 src_row += src_stride/sizeof(*src_row);
474 util_format_g8r8_g8b8_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
475 const uint8_t *src_row, unsigned src_stride,
476 unsigned width, unsigned height)
480 for (y = 0; y < height; y += 1) {
481 const uint8_t *src = src_row;
482 uint32_t *dst = (uint32_t *)dst_row;
483 uint32_t r, g0, g1, b;
486 for (x = 0; x + 1 < width; x += 2) {
487 r = (src[0] + src[4] + 1) >> 1;
490 b = (src[2] + src[6] + 1) >> 1;
497 #ifdef PIPE_ARCH_BIG_ENDIAN
498 value = util_bswap32(value);
517 #ifdef PIPE_ARCH_BIG_ENDIAN
518 value = util_bswap32(value);
524 dst_row += dst_stride/sizeof(*dst_row);
525 src_row += src_stride/sizeof(*src_row);
531 util_format_g8r8_g8b8_unorm_fetch_rgba_float(float *dst, const uint8_t *src,
532 unsigned i, unsigned j)
537 dst[0] = ubyte_to_float(src[1]); /* r */
538 dst[1] = ubyte_to_float(src[0 + 2*i]); /* g */
539 dst[2] = ubyte_to_float(src[3]); /* b */
540 dst[3] = 1.0f; /* a */
545 util_format_uyvy_unpack_rgba_float(float *dst_row, unsigned dst_stride,
546 const uint8_t *src_row, unsigned src_stride,
547 unsigned width, unsigned height)
551 for (y = 0; y < height; y += 1) {
552 float *dst = dst_row;
553 const uint32_t *src = (const uint32_t *)src_row;
555 uint8_t y0, y1, u, v;
557 for (x = 0; x + 1 < width; x += 2) {
560 #ifdef PIPE_ARCH_BIG_ENDIAN
561 value = util_bswap32(value);
564 u = (value >> 0) & 0xff;
565 y0 = (value >> 8) & 0xff;
566 v = (value >> 16) & 0xff;
567 y1 = (value >> 24) & 0xff;
569 util_format_yuv_to_rgb_float(y0, u, v, &dst[0], &dst[1], &dst[2]);
570 dst[3] = 1.0f; /* a */
573 util_format_yuv_to_rgb_float(y1, u, v, &dst[0], &dst[1], &dst[2]);
574 dst[3] = 1.0f; /* a */
581 #ifdef PIPE_ARCH_BIG_ENDIAN
582 value = util_bswap32(value);
585 u = (value >> 0) & 0xff;
586 y0 = (value >> 8) & 0xff;
587 v = (value >> 16) & 0xff;
588 y1 = (value >> 24) & 0xff;
590 util_format_yuv_to_rgb_float(y0, u, v, &dst[0], &dst[1], &dst[2]);
591 dst[3] = 1.0f; /* a */
594 src_row += src_stride/sizeof(*src_row);
595 dst_row += dst_stride/sizeof(*dst_row);
601 util_format_uyvy_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
602 const uint8_t *src_row, unsigned src_stride,
603 unsigned width, unsigned height)
607 for (y = 0; y < height; y += 1) {
608 uint8_t *dst = dst_row;
609 const uint32_t *src = (const uint32_t *)src_row;
611 uint8_t y0, y1, u, v;
613 for (x = 0; x + 1 < width; x += 2) {
616 #ifdef PIPE_ARCH_BIG_ENDIAN
617 value = util_bswap32(value);
620 u = (value >> 0) & 0xff;
621 y0 = (value >> 8) & 0xff;
622 v = (value >> 16) & 0xff;
623 y1 = (value >> 24) & 0xff;
625 util_format_yuv_to_rgb_8unorm(y0, u, v, &dst[0], &dst[1], &dst[2]);
626 dst[3] = 0xff; /* a */
629 util_format_yuv_to_rgb_8unorm(y1, u, v, &dst[0], &dst[1], &dst[2]);
630 dst[3] = 0xff; /* a */
637 #ifdef PIPE_ARCH_BIG_ENDIAN
638 value = util_bswap32(value);
641 u = (value >> 0) & 0xff;
642 y0 = (value >> 8) & 0xff;
643 v = (value >> 16) & 0xff;
644 y1 = (value >> 24) & 0xff;
646 util_format_yuv_to_rgb_8unorm(y0, u, v, &dst[0], &dst[1], &dst[2]);
647 dst[3] = 0xff; /* a */
650 src_row += src_stride/sizeof(*src_row);
651 dst_row += dst_stride/sizeof(*dst_row);
657 util_format_uyvy_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
658 const float *src_row, unsigned src_stride,
659 unsigned width, unsigned height)
663 for (y = 0; y < height; y += 1) {
664 const float *src = src_row;
665 uint32_t *dst = (uint32_t *)dst_row;
666 uint8_t y0, y1, u, v;
669 for (x = 0; x + 1 < width; x += 2) {
670 uint8_t y0, y1, u0, u1, v0, v1, u, v;
672 util_format_rgb_float_to_yuv(src[0], src[1], src[2],
674 util_format_rgb_float_to_yuv(src[4], src[5], src[6],
677 u = (u0 + u1 + 1) >> 1;
678 v = (v0 + v1 + 1) >> 1;
685 #ifdef PIPE_ARCH_BIG_ENDIAN
686 value = util_bswap32(value);
695 util_format_rgb_float_to_yuv(src[0], src[1], src[2],
704 #ifdef PIPE_ARCH_BIG_ENDIAN
705 value = util_bswap32(value);
711 dst_row += dst_stride/sizeof(*dst_row);
712 src_row += src_stride/sizeof(*src_row);
718 util_format_uyvy_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
719 const uint8_t *src_row, unsigned src_stride,
720 unsigned width, unsigned height)
724 for (y = 0; y < height; y += 1) {
725 const uint8_t *src = src_row;
726 uint32_t *dst = (uint32_t *)dst_row;
727 uint8_t y0, y1, u, v;
730 for (x = 0; x + 1 < width; x += 2) {
731 uint8_t y0, y1, u0, u1, v0, v1, u, v;
733 util_format_rgb_8unorm_to_yuv(src[0], src[1], src[2],
735 util_format_rgb_8unorm_to_yuv(src[4], src[5], src[6],
738 u = (u0 + u1 + 1) >> 1;
739 v = (v0 + v1 + 1) >> 1;
746 #ifdef PIPE_ARCH_BIG_ENDIAN
747 value = util_bswap32(value);
756 util_format_rgb_8unorm_to_yuv(src[0], src[1], src[2],
765 #ifdef PIPE_ARCH_BIG_ENDIAN
766 value = util_bswap32(value);
772 dst_row += dst_stride/sizeof(*dst_row);
773 src_row += src_stride/sizeof(*src_row);
779 util_format_uyvy_fetch_rgba_float(float *dst, const uint8_t *src,
780 unsigned i, unsigned j)
791 util_format_yuv_to_rgb_float(y, u, v, &dst[0], &dst[1], &dst[2]);
798 util_format_yuyv_unpack_rgba_float(float *dst_row, unsigned dst_stride,
799 const uint8_t *src_row, unsigned src_stride,
800 unsigned width, unsigned height)
804 for (y = 0; y < height; y += 1) {
805 float *dst = dst_row;
806 const uint32_t *src = (const uint32_t *)src_row;
808 uint8_t y0, y1, u, v;
810 for (x = 0; x + 1 < width; x += 2) {
813 #ifdef PIPE_ARCH_BIG_ENDIAN
814 value = util_bswap32(value);
817 y0 = (value >> 0) & 0xff;
818 u = (value >> 8) & 0xff;
819 y1 = (value >> 16) & 0xff;
820 v = (value >> 24) & 0xff;
822 util_format_yuv_to_rgb_float(y0, u, v, &dst[0], &dst[1], &dst[2]);
823 dst[3] = 1.0f; /* a */
826 util_format_yuv_to_rgb_float(y1, u, v, &dst[0], &dst[1], &dst[2]);
827 dst[3] = 1.0f; /* a */
834 #ifdef PIPE_ARCH_BIG_ENDIAN
835 value = util_bswap32(value);
838 y0 = (value >> 0) & 0xff;
839 u = (value >> 8) & 0xff;
840 y1 = (value >> 16) & 0xff;
841 v = (value >> 24) & 0xff;
843 util_format_yuv_to_rgb_float(y0, u, v, &dst[0], &dst[1], &dst[2]);
844 dst[3] = 1.0f; /* a */
847 src_row += src_stride/sizeof(*src_row);
848 dst_row += dst_stride/sizeof(*dst_row);
854 util_format_yuyv_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
855 const uint8_t *src_row, unsigned src_stride,
856 unsigned width, unsigned height)
860 for (y = 0; y < height; y += 1) {
861 uint8_t *dst = dst_row;
862 const uint32_t *src = (const uint32_t *)src_row;
864 uint8_t y0, y1, u, v;
866 for (x = 0; x + 1 < width; x += 2) {
869 #ifdef PIPE_ARCH_BIG_ENDIAN
870 value = util_bswap32(value);
873 y0 = (value >> 0) & 0xff;
874 u = (value >> 8) & 0xff;
875 y1 = (value >> 16) & 0xff;
876 v = (value >> 24) & 0xff;
878 util_format_yuv_to_rgb_8unorm(y0, u, v, &dst[0], &dst[1], &dst[2]);
879 dst[3] = 0xff; /* a */
882 util_format_yuv_to_rgb_8unorm(y1, u, v, &dst[0], &dst[1], &dst[2]);
883 dst[3] = 0xff; /* a */
890 #ifdef PIPE_ARCH_BIG_ENDIAN
891 value = util_bswap32(value);
894 y0 = (value >> 0) & 0xff;
895 u = (value >> 8) & 0xff;
896 y1 = (value >> 16) & 0xff;
897 v = (value >> 24) & 0xff;
899 util_format_yuv_to_rgb_8unorm(y0, u, v, &dst[0], &dst[1], &dst[2]);
900 dst[3] = 0xff; /* a */
903 src_row += src_stride/sizeof(*src_row);
904 dst_row += dst_stride/sizeof(*dst_row);
910 util_format_yuyv_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
911 const float *src_row, unsigned src_stride,
912 unsigned width, unsigned height)
916 for (y = 0; y < height; y += 1) {
917 const float *src = src_row;
918 uint32_t *dst = (uint32_t *)dst_row;
919 uint8_t y0, y1, u, v;
922 for (x = 0; x + 1 < width; x += 2) {
923 uint8_t y0, y1, u0, u1, v0, v1, u, v;
925 util_format_rgb_float_to_yuv(src[0], src[1], src[2],
927 util_format_rgb_float_to_yuv(src[4], src[5], src[6],
930 u = (u0 + u1 + 1) >> 1;
931 v = (v0 + v1 + 1) >> 1;
938 #ifdef PIPE_ARCH_BIG_ENDIAN
939 value = util_bswap32(value);
948 util_format_rgb_float_to_yuv(src[0], src[1], src[2],
957 #ifdef PIPE_ARCH_BIG_ENDIAN
958 value = util_bswap32(value);
964 dst_row += dst_stride/sizeof(*dst_row);
965 src_row += src_stride/sizeof(*src_row);
971 util_format_yuyv_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
972 const uint8_t *src_row, unsigned src_stride,
973 unsigned width, unsigned height)
977 for (y = 0; y < height; y += 1) {
978 const uint8_t *src = src_row;
979 uint32_t *dst = (uint32_t *)dst_row;
980 uint8_t y0, y1, u, v;
983 for (x = 0; x + 1 < width; x += 2) {
984 uint8_t y0, y1, u0, u1, v0, v1, u, v;
986 util_format_rgb_8unorm_to_yuv(src[0], src[1], src[2],
988 util_format_rgb_8unorm_to_yuv(src[4], src[5], src[6],
991 u = (u0 + u1 + 1) >> 1;
992 v = (v0 + v1 + 1) >> 1;
999 #ifdef PIPE_ARCH_BIG_ENDIAN
1000 value = util_bswap32(value);
1009 util_format_rgb_8unorm_to_yuv(src[0], src[1], src[2],
1018 #ifdef PIPE_ARCH_BIG_ENDIAN
1019 value = util_bswap32(value);
1025 dst_row += dst_stride/sizeof(*dst_row);
1026 src_row += src_stride/sizeof(*src_row);
1032 util_format_yuyv_fetch_rgba_float(float *dst, const uint8_t *src,
1033 unsigned i, unsigned j)
1044 util_format_yuv_to_rgb_float(y, u, v, &dst[0], &dst[1], &dst[2]);
1049 /* XXX: Stubbed for now */
1051 util_format_yv12_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1052 const uint8_t *src_row, unsigned src_stride,
1053 unsigned width, unsigned height) {}
1055 util_format_yv12_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1056 const uint8_t *src_row, unsigned src_stride,
1057 unsigned width, unsigned height) {}
1059 util_format_yv12_unpack_rgba_float(float *dst_row, unsigned dst_stride,
1060 const uint8_t *src_row, unsigned src_stride,
1061 unsigned width, unsigned height) {}
1063 util_format_yv12_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
1064 const float *src_row, unsigned src_stride,
1065 unsigned width, unsigned height) {}
1067 util_format_yv12_fetch_rgba_float(float *dst, const uint8_t *src,
1068 unsigned i, unsigned j) {}
1070 util_format_yv16_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1071 const uint8_t *src_row, unsigned src_stride,
1072 unsigned width, unsigned height) {}
1074 util_format_yv16_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1075 const uint8_t *src_row, unsigned src_stride,
1076 unsigned width, unsigned height) {}
1078 util_format_yv16_unpack_rgba_float(float *dst_row, unsigned dst_stride,
1079 const uint8_t *src_row, unsigned src_stride,
1080 unsigned width, unsigned height) {}
1082 util_format_yv16_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
1083 const float *src_row, unsigned src_stride,
1084 unsigned width, unsigned height) {}
1086 util_format_yv16_fetch_rgba_float(float *dst, const uint8_t *src,
1087 unsigned i, unsigned j) {}
1089 util_format_iyuv_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1090 const uint8_t *src_row, unsigned src_stride,
1091 unsigned width, unsigned height) {}
1093 util_format_iyuv_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1094 const uint8_t *src_row, unsigned src_stride,
1095 unsigned width, unsigned height) {}
1097 util_format_iyuv_unpack_rgba_float(float *dst_row, unsigned dst_stride,
1098 const uint8_t *src_row, unsigned src_stride,
1099 unsigned width, unsigned height) {}
1101 util_format_iyuv_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
1102 const float *src_row, unsigned src_stride,
1103 unsigned width, unsigned height) {}
1105 util_format_iyuv_fetch_rgba_float(float *dst, const uint8_t *src,
1106 unsigned i, unsigned j) {}
1108 util_format_nv12_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1109 const uint8_t *src_row, unsigned src_stride,
1110 unsigned width, unsigned height) {}
1112 util_format_nv12_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1113 const uint8_t *src_row, unsigned src_stride,
1114 unsigned width, unsigned height) {}
1116 util_format_nv12_unpack_rgba_float(float *dst_row, unsigned dst_stride,
1117 const uint8_t *src_row, unsigned src_stride,
1118 unsigned width, unsigned height) {}
1120 util_format_nv12_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
1121 const float *src_row, unsigned src_stride,
1122 unsigned width, unsigned height) {}
1124 util_format_nv12_fetch_rgba_float(float *dst, const uint8_t *src,
1125 unsigned i, unsigned j) {}
1127 util_format_nv21_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1128 const uint8_t *src_row, unsigned src_stride,
1129 unsigned width, unsigned height) {}
1131 util_format_nv21_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
1132 const uint8_t *src_row, unsigned src_stride,
1133 unsigned width, unsigned height) {}
1135 util_format_nv21_unpack_rgba_float(float *dst_row, unsigned dst_stride,
1136 const uint8_t *src_row, unsigned src_stride,
1137 unsigned width, unsigned height) {}
1139 util_format_nv21_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
1140 const float *src_row, unsigned src_stride,
1141 unsigned width, unsigned height) {}
1143 util_format_nv21_fetch_rgba_float(float *dst, const uint8_t *src,
1144 unsigned i, unsigned j) {}