|
|
@ -940,7 +940,6 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], |
|
|
|
int lowres_flag, int is_mpeg12) |
|
|
|
int lowres_flag, int is_mpeg12) |
|
|
|
{ |
|
|
|
{ |
|
|
|
#define IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) |
|
|
|
#define IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) |
|
|
|
{ |
|
|
|
|
|
|
|
uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; |
|
|
|
uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; |
|
|
|
int dct_linesize, dct_offset; |
|
|
|
int dct_linesize, dct_offset; |
|
|
|
const int linesize = s->cur_pic.linesize[0]; //not s->linesize as this would be wrong for field pics
|
|
|
|
const int linesize = s->cur_pic.linesize[0]; //not s->linesize as this would be wrong for field pics
|
|
|
@ -997,7 +996,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], |
|
|
|
|
|
|
|
|
|
|
|
/* skip dequant / idct if we are really late ;) */ |
|
|
|
/* skip dequant / idct if we are really late ;) */ |
|
|
|
if (s->avctx->skip_idct) { |
|
|
|
if (s->avctx->skip_idct) { |
|
|
|
if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) |
|
|
|
if ( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) |
|
|
|
||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) |
|
|
|
||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) |
|
|
|
|| s->avctx->skip_idct >= AVDISCARD_ALL) |
|
|
|
|| s->avctx->skip_idct >= AVDISCARD_ALL) |
|
|
|
return; |
|
|
|
return; |
|
|
@ -1033,13 +1032,13 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], |
|
|
|
|
|
|
|
|
|
|
|
add_dct(s, block[4], 4, dest_cb, dct_linesize); |
|
|
|
add_dct(s, block[4], 4, dest_cb, dct_linesize); |
|
|
|
add_dct(s, block[5], 5, dest_cr, dct_linesize); |
|
|
|
add_dct(s, block[5], 5, dest_cr, dct_linesize); |
|
|
|
add_dct(s, block[6], 6, dest_cb+dct_offset, dct_linesize); |
|
|
|
add_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize); |
|
|
|
add_dct(s, block[7], 7, dest_cr+dct_offset, dct_linesize); |
|
|
|
add_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize); |
|
|
|
if (!s->chroma_x_shift) {//Chroma444
|
|
|
|
if (!s->chroma_x_shift) {//Chroma444
|
|
|
|
add_dct(s, block[8], 8, dest_cb+block_size, dct_linesize); |
|
|
|
add_dct(s, block[8], 8, dest_cb + block_size, dct_linesize); |
|
|
|
add_dct(s, block[9], 9, dest_cr+block_size, dct_linesize); |
|
|
|
add_dct(s, block[9], 9, dest_cr + block_size, dct_linesize); |
|
|
|
add_dct(s, block[10], 10, dest_cb+block_size+dct_offset, dct_linesize); |
|
|
|
add_dct(s, block[10], 10, dest_cb + block_size + dct_offset, dct_linesize); |
|
|
|
add_dct(s, block[11], 11, dest_cr+block_size+dct_offset, dct_linesize); |
|
|
|
add_dct(s, block[11], 11, dest_cr + block_size + dct_offset, dct_linesize); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} //fi gray
|
|
|
|
} //fi gray
|
|
|
@ -1066,8 +1065,8 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], |
|
|
|
put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
dct_offset >>=1; |
|
|
|
dct_offset >>= 1; |
|
|
|
dct_linesize >>=1; |
|
|
|
dct_linesize >>= 1; |
|
|
|
put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); |
|
|
|
put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); |
|
|
@ -1102,7 +1101,6 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], |
|
|
|
} //gray
|
|
|
|
} //gray
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) |
|
|
|
void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) |
|
|
@ -1115,7 +1113,7 @@ void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) |
|
|
|
/* avoid copy if macroblock skipped in last frame too */ |
|
|
|
/* avoid copy if macroblock skipped in last frame too */ |
|
|
|
if (s->mb_skipped) { |
|
|
|
if (s->mb_skipped) { |
|
|
|
s->mb_skipped = 0; |
|
|
|
s->mb_skipped = 0; |
|
|
|
av_assert2(s->pict_type!=AV_PICTURE_TYPE_I); |
|
|
|
av_assert2(s->pict_type != AV_PICTURE_TYPE_I); |
|
|
|
*mbskip_ptr = 1; |
|
|
|
*mbskip_ptr = 1; |
|
|
|
} else if (!s->cur_pic.reference) { |
|
|
|
} else if (!s->cur_pic.reference) { |
|
|
|
*mbskip_ptr = 1; |
|
|
|
*mbskip_ptr = 1; |
|
|
|