25 #define BITSTREAM_READER_LE 
  101 static const int8_t 
luma_adjust[] = { -4, -3, -2, -1, 1, 2, 3, 4 };
 
  104     { 1, 1, 0, -1, -1, -1,  0,  1 },
 
  105     { 0, 1, 1,  1,  0, -1, -1, -1 }
 
  109      20,  28,  36,  44,  52,  60,  68,  76,
 
  110      84,  92, 100, 106, 112, 116, 120, 124,
 
  111     128, 132, 136, 140, 144, 150, 156, 164,
 
  112     172, 180, 188, 196, 204, 212, 220, 228
 
  122                "Dimensions should be a multiple of two.\n");
 
  194     int buf_size        = avpkt->
size;
 
  200     uint8_t *old_y, *old_cb, *old_cr,
 
  201             *new_y, *new_cb, *new_cr;
 
  203     unsigned old_y_stride, old_cb_stride, old_cr_stride,
 
  204              new_y_stride, new_cb_stride, new_cr_stride;
 
  205     unsigned total_blocks = avctx->
width * avctx->
height / 4,
 
  206              block_index, block_x = 0;
 
  207     unsigned y[4] = { 0 }, 
cb = 0x10, 
cr = 0x10;
 
  208     int skip = -1, y_avg = 0, i, j;
 
  212     if (buf_size <= 16) {
 
  237     for (block_index = 0; block_index < total_blocks; block_index++) {
 
  250             y[2] = old_y[old_y_stride];
 
  251             y[3] = old_y[old_y_stride + 1];
 
  257                 unsigned sign_selector       = 
get_bits(&gb, 6);
 
  258                 unsigned difference_selector = 
get_bits(&gb, 2);
 
  260                 for (i = 0; i < 4; i++) {
 
  261                     y[i] = av_clip(y_avg + 
offset_table[difference_selector] *
 
  268                     unsigned adjust_index = 
get_bits(&gb, 3);
 
  271                 for (i = 0; i < 4; i++)
 
  280                     unsigned adjust_index = 
get_bits(&gb, 3);
 
  290         new_y[new_y_stride]     = y[2];
 
  291         new_y[new_y_stride + 1] = y[3];
 
  302         if (block_x * 2 == avctx->
width) {
 
  304             old_y  += old_y_stride * 2  - avctx->
width;
 
  305             old_cb += old_cb_stride     - avctx->
width / 2;
 
  306             old_cr += old_cr_stride     - avctx->
width / 2;
 
  307             new_y  += new_y_stride * 2  - avctx->
width;
 
  308             new_cb += new_cb_stride     - avctx->
width / 2;
 
  309             new_cr += new_cr_stride     - avctx->
width / 2;
 
  321     for (j = 0; j < avctx->
height; j++) {
 
  322         for (i = 0; i < avctx->
width; i++)
 
  323             dstY[i] = new_y[i] << 2;
 
  325         new_y += new_y_stride;
 
  327     for (j = 0; j < avctx->
height / 2; j++) {
 
  328         for (i = 0; i < avctx->
width / 2; i++) {
 
  334         new_cb += new_cb_stride;
 
  335         new_cr += new_cr_stride;
 
  338     av_dlog(avctx, 
"Frame data: provided %d bytes, used %d bytes\n",