61 void *
data,
int *got_frame,
65 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;
95 if (buf_size != 48 + s->
height * (s->
width * 3 / 4)) {
109 y_plane = frame->
data[0];
110 u_plane = frame->
data[1];
111 v_plane = frame->
data[2];
114 for (y_ptr = 0, u_ptr = 0, v_ptr = 0;
121 cur_byte = buf[stream_ptr++];
122 u_plane[u_ptr++] = u_pred = cur_byte & 0xF0;
123 y_plane[y_ptr++] = y_pred = (cur_byte & 0x0F) << 4;
125 cur_byte = buf[stream_ptr++];
126 v_plane[v_ptr++] = v_pred = cur_byte & 0xF0;
127 y_pred += y_table[cur_byte & 0x0F];
128 y_plane[y_ptr++] = y_pred;
130 cur_byte = buf[stream_ptr++];
131 y_pred += y_table[cur_byte & 0x0F];
132 y_plane[y_ptr++] = y_pred;
133 y_pred += y_table[(cur_byte & 0xF0) >> 4];
134 y_plane[y_ptr++] = y_pred;
137 pixel_groups = s->
width / 4 - 1;
138 while (pixel_groups--) {
140 cur_byte = buf[stream_ptr++];
141 u_pred += u_table[(cur_byte & 0xF0) >> 4];
142 u_plane[u_ptr++] = u_pred;
143 y_pred += y_table[cur_byte & 0x0F];
144 y_plane[y_ptr++] = y_pred;
146 cur_byte = buf[stream_ptr++];
147 v_pred += v_table[(cur_byte & 0xF0) >> 4];
148 v_plane[v_ptr++] = v_pred;
149 y_pred += y_table[cur_byte & 0x0F];
150 y_plane[y_ptr++] = y_pred;
152 cur_byte = buf[stream_ptr++];
153 y_pred += y_table[cur_byte & 0x0F];
154 y_plane[y_ptr++] = y_pred;
155 y_pred += y_table[(cur_byte & 0xF0) >> 4];
156 y_plane[y_ptr++] = y_pred;
166 #if CONFIG_AURA_DECODER
179 #if CONFIG_CYUV_DECODER