annotate libswscale/yuv2rgb_bfin.c @ 25978:a8ff60976ccb

FLAT objects cannot have multiple sections, so using the L1 attributes breaks linking. The FDPIC relocs also break for any other format. Thus check the compiler environment and select the appropriate sections/relocs. patch by Mike Frysinger, vapier.adi a gmail d com
author diego
date Sat, 16 Feb 2008 15:17:59 +0000
parents 06bf0eb70a55
children 65b8334df960
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
1 /*
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
2 * Copyright (C) 2007 Marc Hoffman <marc.hoffman@analog.com>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
3 * April 20, 2007
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
4 *
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
5 * Blackfin Video Color Space Converters Operations
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
6 * convert I420 YV12 to RGB in various formats,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
7 *
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
8 * This file is part of FFmpeg.
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
9 *
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
10 * FFmpeg is free software; you can redistribute it and/or
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
11 * modify it under the terms of the GNU Lesser General Public
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
12 * License as published by the Free Software Foundation; either
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
13 * version 2.1 of the License, or (at your option) any later version.
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
14 *
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
15 * FFmpeg is distributed in the hope that it will be useful,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
18 * Lesser General Public License for more details.
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
19 *
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
20 * You should have received a copy of the GNU Lesser General Public
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
21 * License along with FFmpeg; if not, write to the Free Software
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
23 */
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
24
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
25 #include <stdio.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
26 #include <stdlib.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
27 #include <string.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
28 #include <inttypes.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
29 #include <assert.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
30 #include "config.h"
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
31 #ifdef HAVE_MALLOC_H
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
32 #include <malloc.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
33 #endif
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
34 #include <unistd.h>
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
35 #include "rgb2rgb.h"
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
36 #include "swscale.h"
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
37 #include "swscale_internal.h"
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
38
25978
a8ff60976ccb FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 25750
diff changeset
39 #ifdef __FDPIC__
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
40 #define L1CODE __attribute__ ((l1_text))
25978
a8ff60976ccb FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 25750
diff changeset
41 #else
a8ff60976ccb FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 25750
diff changeset
42 #define L1CODE
a8ff60976ccb FLAT objects cannot have multiple sections, so using the L1 attributes breaks
diego
parents: 25750
diff changeset
43 #endif
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
44
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
45 extern void ff_bfin_yuv2rgb555_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
46 int w, uint32_t *coeffs) L1CODE;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
47
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
48 extern void ff_bfin_yuv2rgb565_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
49 int w, uint32_t *coeffs) L1CODE;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
50
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
51 extern void ff_bfin_yuv2rgb24_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
52 int w, uint32_t *coeffs) L1CODE;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
53
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
54 typedef void (* ltransform_t)(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
55 int w, uint32_t *coeffs);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
56
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
57
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
58 static void bfin_prepare_coefficients (SwsContext *c, int rgb, int masks)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
59 {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
60 int oy;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
61 oy = c->yOffset&0xffff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
62 oy = oy >> 3; // keep everything U8.0 for offset calculation
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
63
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
64 c->oc = 128*0x01010101U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
65 c->oy = oy*0x01010101U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
66
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
67 /* copy 64bit vector coeffs down to 32bit vector coeffs */
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
68 c->cy = c->yCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
69 c->zero = 0;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
70
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
71 if (rgb) {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
72 c->crv = c->vrCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
73 c->cbu = c->ubCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
74 c->cgu = c->ugCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
75 c->cgv = c->vgCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
76 } else {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
77 c->crv = c->ubCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
78 c->cbu = c->vrCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
79 c->cgu = c->vgCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
80 c->cgv = c->ugCoeff;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
81 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
82
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
83
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
84 if (masks == 555) {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
85 c->rmask = 0x001f * 0x00010001U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
86 c->gmask = 0x03e0 * 0x00010001U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
87 c->bmask = 0x7c00 * 0x00010001U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
88 } else if (masks == 565) {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
89 c->rmask = 0x001f * 0x00010001U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
90 c->gmask = 0x07e0 * 0x00010001U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
91 c->bmask = 0xf800 * 0x00010001U;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
92 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
93 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
94
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
95 static int core_yuv420_rgb (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
96 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
97 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
98 uint8_t **oplanes, int *outstrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
99 ltransform_t lcscf, int rgb, int masks)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
100 {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
101 uint8_t *py,*pu,*pv,*op;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
102 int w = instrides[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
103 int h2 = srcSliceH>>1;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
104 int i;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
105
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
106 bfin_prepare_coefficients (c, rgb, masks);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
107
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
108 py = in[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
109 pu = in[1+(1^rgb)];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
110 pv = in[1+(0^rgb)];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
111
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
112 op = oplanes[0] + srcSliceY*outstrides[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
113
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
114 for (i=0;i<h2;i++) {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
115
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
116 lcscf (py, pu, pv, op, w, &c->oy);
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
117
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
118 py += instrides[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
119 op += outstrides[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
120
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
121 lcscf (py, pu, pv, op, w, &c->oy);
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
122
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
123 py += instrides[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
124 pu += instrides[1];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
125 pv += instrides[2];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
126 op += outstrides[0];
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
127 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
128
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
129 return srcSliceH;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
130 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
131
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
132
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
133 static int bfin_yuv420_rgb555 (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
134 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
135 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
136 uint8_t **oplanes, int *outstrides)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
137 {
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
138 return core_yuv420_rgb (c, in, instrides, srcSliceY, srcSliceH, oplanes, outstrides,
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
139 ff_bfin_yuv2rgb555_line, 1, 555);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
140 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
141
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
142 static int bfin_yuv420_bgr555 (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
143 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
144 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
145 uint8_t **oplanes, int *outstrides)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
146 {
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
147 return core_yuv420_rgb (c, in, instrides, srcSliceY, srcSliceH, oplanes, outstrides,
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
148 ff_bfin_yuv2rgb555_line, 0, 555);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
149 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
150
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
151 static int bfin_yuv420_rgb24 (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
152 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
153 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
154 uint8_t **oplanes, int *outstrides)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
155 {
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
156 return core_yuv420_rgb (c, in, instrides, srcSliceY, srcSliceH, oplanes, outstrides,
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
157 ff_bfin_yuv2rgb24_line, 1, 888);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
158 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
159
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
160 static int bfin_yuv420_bgr24 (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
161 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
162 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
163 uint8_t **oplanes, int *outstrides)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
164 {
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
165 return core_yuv420_rgb (c, in, instrides, srcSliceY, srcSliceH, oplanes, outstrides,
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
166 ff_bfin_yuv2rgb24_line, 0, 888);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
167 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
168
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
169 static int bfin_yuv420_rgb565 (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
170 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
171 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
172 uint8_t **oplanes, int *outstrides)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
173 {
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
174 return core_yuv420_rgb (c, in, instrides, srcSliceY, srcSliceH, oplanes, outstrides,
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
175 ff_bfin_yuv2rgb565_line, 1, 565);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
176 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
177
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
178 static int bfin_yuv420_bgr565 (SwsContext *c,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
179 uint8_t **in, int *instrides,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
180 int srcSliceY, int srcSliceH,
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
181 uint8_t **oplanes, int *outstrides)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
182 {
25750
06bf0eb70a55 Cosmetics: whitespaces
benoit
parents: 23812
diff changeset
183 return core_yuv420_rgb (c, in, instrides, srcSliceY, srcSliceH, oplanes, outstrides,
23289
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
184 ff_bfin_yuv2rgb565_line, 0, 565);
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
185 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
186
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
187
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
188 SwsFunc ff_bfin_yuv2rgb_get_func_ptr (SwsContext *c)
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
189 {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
190 SwsFunc f;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
191
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
192 switch(c->dstFormat) {
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
193 case PIX_FMT_RGB555: f = bfin_yuv420_rgb555; break;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
194 case PIX_FMT_BGR555: f = bfin_yuv420_bgr555; break;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
195 case PIX_FMT_RGB565: f = bfin_yuv420_rgb565; break;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
196 case PIX_FMT_BGR565: f = bfin_yuv420_bgr565; break;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
197 case PIX_FMT_RGB24: f = bfin_yuv420_rgb24; break;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
198 case PIX_FMT_BGR24: f = bfin_yuv420_bgr24; break;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
199 default:
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
200 return 0;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
201 }
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
202
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
203 av_log(c, AV_LOG_INFO, "BlackFin Accelerated Color Space Converter %s\n",
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
204 sws_format_name (c->dstFormat));
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
205
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
206 return f;
786823779b67 Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
diff changeset
207 }