31 #include "config_components.h"
43 if (avctx->
width & 0x3)
52 const uint8_t *buf = avpkt->
data;
53 int buf_size = avpkt->
size;
55 unsigned char *y_plane;
56 unsigned char *u_plane;
57 unsigned char *v_plane;
63 const signed char *y_table = (
const signed char*)buf + 0;
64 const signed char *u_table = (
const signed char*)buf + 16;
65 const signed char *v_table = (
const signed char*)buf + 32;
67 unsigned char y_pred, u_pred, v_pred;
69 unsigned char cur_byte;
82 if (buf_size == 48 + avctx->
height * (avctx->
width * 3 / 4)) {
84 }
else if(buf_size == rawsize ) {
88 buf_size, 48 + avctx->
height * (avctx->
width * 3 / 4));
98 y_plane =
frame->data[0];
99 u_plane =
frame->data[1];
100 v_plane =
frame->data[2];
102 if (buf_size == rawsize) {
105 for (stream_ptr = 0; stream_ptr < rawsize; stream_ptr += linesize) {
106 y_plane -=
frame->linesize[0];
107 memcpy(y_plane, buf+stream_ptr, linesize);
112 for (y_ptr = 0, u_ptr = 0, v_ptr = 0;
115 u_ptr +=
frame->linesize[1] - avctx->
width / 4,
116 v_ptr +=
frame->linesize[2] - avctx->
width / 4) {
119 cur_byte = buf[stream_ptr++];
120 u_plane[u_ptr++] = u_pred = cur_byte & 0xF0;
121 y_plane[y_ptr++] = y_pred = (cur_byte & 0x0F) << 4;
123 cur_byte = buf[stream_ptr++];
124 v_plane[v_ptr++] = v_pred = cur_byte & 0xF0;
125 y_pred += y_table[cur_byte & 0x0F];
126 y_plane[y_ptr++] = y_pred;
128 cur_byte = buf[stream_ptr++];
129 y_pred += y_table[cur_byte & 0x0F];
130 y_plane[y_ptr++] = y_pred;
131 y_pred += y_table[(cur_byte & 0xF0) >> 4];
132 y_plane[y_ptr++] = y_pred;
135 pixel_groups = avctx->
width / 4 - 1;
136 while (pixel_groups--) {
138 cur_byte = buf[stream_ptr++];
139 u_pred += u_table[(cur_byte & 0xF0) >> 4];
140 u_plane[u_ptr++] = u_pred;
141 y_pred += y_table[cur_byte & 0x0F];
142 y_plane[y_ptr++] = y_pred;
144 cur_byte = buf[stream_ptr++];
145 v_pred += v_table[(cur_byte & 0xF0) >> 4];
146 v_plane[v_ptr++] = v_pred;
147 y_pred += y_table[cur_byte & 0x0F];
148 y_plane[y_ptr++] = y_pred;
150 cur_byte = buf[stream_ptr++];
151 y_pred += y_table[cur_byte & 0x0F];
152 y_plane[y_ptr++] = y_pred;
153 y_pred += y_table[(cur_byte & 0xF0) >> 4];
154 y_plane[y_ptr++] = y_pred;
165 #if CONFIG_AURA_DECODER
177 #if CONFIG_CYUV_DECODER