- (*level) =
- (*final) = // prevent 'may be used unilitialized'
- (*run) = 64; // this would cause error exit in the ac loop
+ *level =
+ *final = // prevent 'may be used uninitialized'
+ *run = 64; // this would cause error exit in the ac loop
/* l = lut_l[i / 2] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3 }[i >> 1];
* 11 10'01 01'00 00'00 00'00 00'00 00 => 0xE50000 */
/* l = lut_l[i / 2] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3 }[i >> 1];
* 11 10'01 01'00 00'00 00'00 00'00 00 => 0xE50000 */
/* t = lut_mask[l] = { 0x0f, 0x03, 0x01, 0x00 }[l];
* as i < 256 the higher bits do not matter */
/* t = lut_mask[l] = { 0x0f, 0x03, 0x01, 0x00 }[l];
* as i < 256 the higher bits do not matter */
- (*run) = (sm & 0xff) + (e & (mask)); // 6bits
- (*level) = (sm >> 8) + (e & (~mask)); // 5bits
- (*final) = i > (58 - 46);
+ *run = (sm & 0xff) + (e & mask); // 6 bits
+ *level = (sm >> 8) + (e & ~mask); // 5 bits
+ *final = i > (58 - 46);
} else if (i < 75) { // [73-74]
static const uint8_t crazy_mix_runlevel[32] = {
0x22, 0x32, 0x33, 0x53, 0x23, 0x42, 0x43, 0x63,
} else if (i < 75) { // [73-74]
static const uint8_t crazy_mix_runlevel[32] = {
0x22, 0x32, 0x33, 0x53, 0x23, 0x42, 0x43, 0x63,
0x28, 0x92, 0x36, 0x74, 0x29, 0xa2, 0x46, 0x84,
};
0x28, 0x92, 0x36, 0x74, 0x29, 0xa2, 0x46, 0x84,
};
- (*final) = !(i & 1);
- e = get_bits(w->gb, 5); // get the extra bits
- (*run) = crazy_mix_runlevel[e] >> 4;
- (*level) = crazy_mix_runlevel[e] & 0x0F;
+ *final = !(i & 1);
+ e = get_bits(w->gb, 5); // get the extra bits
+ *run = crazy_mix_runlevel[e] >> 4;
+ *level = crazy_mix_runlevel[e] & 0x0F;
- (*level) = get_bits(w->gb, 7 - 3 * (i & 1));
- (*run) = get_bits(w->gb, 6);
- (*final) = get_bits1(w->gb);
+ *level = get_bits(w->gb, 7 - 3 * (i & 1));
+ *run = get_bits(w->gb, 6);
+ *final = get_bits1(w->gb);
i = get_vlc2(w->gb, w->j_dc_vlc[mode]->table, DC_VLC_BITS, DC_VLC_MTD);
/* (i >= 17) { i -= 17; final =1; } */
i = get_vlc2(w->gb, w->j_dc_vlc[mode]->table, DC_VLC_BITS, DC_VLC_MTD);
/* (i >= 17) { i -= 17; final =1; } */
e = get_bits(w->gb, c); // get the extra bits
i = dc_index_offset[i] + (e >> 1);
e = get_bits(w->gb, c); // get the extra bits
i = dc_index_offset[i] + (e >> 1);
- e = -(e & 1); // 0, 0xffffff
- (*level) = (i ^ e) - e; // (i ^ 0) -0 , (i ^ 0xff) - (-1)
+ e = -(e & 1); // 0, 0xffffff
+ *level = (i ^ e) - e; // (i ^ 0) - 0, (i ^ 0xff) - (-1)
uint8_t *scantable;
int final, run, level;
int ac_mode, dc_mode, est_run, dc_level;
uint8_t *scantable;
int final, run, level;
int ac_mode, dc_mode, est_run, dc_level;
if (w->flat_dc && ((unsigned) (dc_level + 1)) < 3) { // [-1; 1]
int32_t divide_quant = !chroma ? w->divide_quant_dc_luma
: w->divide_quant_dc_chroma;
if (w->flat_dc && ((unsigned) (dc_level + 1)) < 3) { // [-1; 1]
int32_t divide_quant = !chroma ? w->divide_quant_dc_luma
: w->divide_quant_dc_chroma;
// there is !zero_only check in the original, but dc_level check is enough
if ((unsigned int) (dc_level + 1) >= 3 && (w->edges & 3) != 3) {
// there is !zero_only check in the original, but dc_level check is enough
if ((unsigned int) (dc_level + 1) >= 3 && (w->edges & 3) != 3) {
if (!zeros_only)
w->idsp.idct_add(w->dest[chroma],
w->frame->linesize[!!chroma],
if (!zeros_only)
w->idsp.idct_add(w->dest[chroma],
w->frame->linesize[!!chroma],
if (!((w->edges & 2) || (zeros_only && (w->orient | 4) == 4)))
w->dsp.h_loop_filter(ptr, linesize, w->quant);
if (!((w->edges & 2) || (zeros_only && (w->orient | 4) == 4)))
w->dsp.h_loop_filter(ptr, linesize, w->quant);
{
// not parent codec linesize as this would be wrong for field pics
// not that IntraX8 has interlacing support ;)
{
// not parent codec linesize as this would be wrong for field pics
// not that IntraX8 has interlacing support ;)
w->dest[0] = frame->data[0];
w->dest[1] = frame->data[1];
w->dest[2] = frame->data[2];
w->dest[0] = frame->data[0];
w->dest[1] = frame->data[1];
w->dest[2] = frame->data[2];
- w->dest[1] += (w->mb_y & (~1)) * uvlinesize << 2;
- w->dest[2] += (w->mb_y & (~1)) * uvlinesize << 2;
+ w->dest[1] += (w->mb_y & ~1) * uvlinesize << 2;
+ w->dest[2] += (w->mb_y & ~1) * uvlinesize << 2;
}
av_cold int ff_intrax8_common_init(AVCodecContext *avctx,
IntraX8Context *w, IDCTDSPContext *idsp,
}
av_cold int ff_intrax8_common_init(AVCodecContext *avctx,
IntraX8Context *w, IDCTDSPContext *idsp,
- int mb_width, int mb_height,
- MpegEncContext *const s)
+ int16_t (*block)[64],
+ int block_last_index[12],
+ int mb_width, int mb_height)
// two rows, 2 blocks per cannon mb
w->prediction_table = av_mallocz(w->mb_width * 2 * 2);
// two rows, 2 blocks per cannon mb
w->prediction_table = av_mallocz(w->mb_width * 2 * 2);
GetBitContext *gb, int *mb_x, int *mb_y,
int dquant, int quant_offset,
int loopfilter, int lowdelay)
{
GetBitContext *gb, int *mb_x, int *mb_y,
int dquant, int quant_offset,
int loopfilter, int lowdelay)
{