62 void *
data,
int *got_frame,
66 int buf_size = avpkt->
size;
69 unsigned char *y_plane;
70 unsigned char *u_plane;
71 unsigned char *v_plane;
77 const signed char *y_table = (
const signed char*)buf + 0;
78 const signed char *u_table = (
const signed char*)buf + 16;
79 const signed char *v_table = (
const signed char*)buf + 32;
81 unsigned char y_pred, u_pred, v_pred;
83 unsigned char cur_byte;
96 if (buf_size == 48 + s->
height * (s->
width * 3 / 4)) {
98 }
else if(buf_size == rawsize ) {
123 if (buf_size == rawsize) {
126 for (stream_ptr = 0; stream_ptr < rawsize; stream_ptr += linesize) {
128 memcpy(y_plane, buf+stream_ptr, linesize);
133 for (y_ptr = 0, u_ptr = 0, v_ptr = 0;
140 cur_byte = buf[stream_ptr++];
141 u_plane[u_ptr++] = u_pred = cur_byte & 0xF0;
142 y_plane[y_ptr++] = y_pred = (cur_byte & 0x0F) << 4;
144 cur_byte = buf[stream_ptr++];
145 v_plane[v_ptr++] = v_pred = cur_byte & 0xF0;
146 y_pred += y_table[cur_byte & 0x0F];
147 y_plane[y_ptr++] = y_pred;
149 cur_byte = buf[stream_ptr++];
150 y_pred += y_table[cur_byte & 0x0F];
151 y_plane[y_ptr++] = y_pred;
152 y_pred += y_table[(cur_byte & 0xF0) >> 4];
153 y_plane[y_ptr++] = y_pred;
156 pixel_groups = s->
width / 4 - 1;
157 while (pixel_groups--) {
159 cur_byte = buf[stream_ptr++];
160 u_pred += u_table[(cur_byte & 0xF0) >> 4];
161 u_plane[u_ptr++] = u_pred;
162 y_pred += y_table[cur_byte & 0x0F];
163 y_plane[y_ptr++] = y_pred;
165 cur_byte = buf[stream_ptr++];
166 v_pred += v_table[(cur_byte & 0xF0) >> 4];
167 v_plane[v_ptr++] = v_pred;
168 y_pred += y_table[cur_byte & 0x0F];
169 y_plane[y_ptr++] = y_pred;
171 cur_byte = buf[stream_ptr++];
172 y_pred += y_table[cur_byte & 0x0F];
173 y_plane[y_ptr++] = y_pred;
174 y_pred += y_table[(cur_byte & 0xF0) >> 4];
175 y_plane[y_ptr++] = y_pred;
197 #if CONFIG_AURA_DECODER
211 #if CONFIG_CYUV_DECODER