mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
h264: add a parameter to the CHROMA422 macro.
This way it does not look like a constant.
This commit is contained in:
parent
6d2b6f21eb
commit
e962bd08ee
@ -2042,7 +2042,7 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
|
|||||||
int top_idx = 1;
|
int top_idx = 1;
|
||||||
const int pixel_shift = h->pixel_shift;
|
const int pixel_shift = h->pixel_shift;
|
||||||
int chroma444 = CHROMA444;
|
int chroma444 = CHROMA444;
|
||||||
int chroma422 = CHROMA422;
|
int chroma422 = CHROMA422(h);
|
||||||
|
|
||||||
src_y -= linesize;
|
src_y -= linesize;
|
||||||
src_cb -= uvlinesize;
|
src_cb -= uvlinesize;
|
||||||
@ -2931,7 +2931,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
|
|||||||
return AV_PIX_FMT_GBRP9;
|
return AV_PIX_FMT_GBRP9;
|
||||||
} else
|
} else
|
||||||
return AV_PIX_FMT_YUV444P9;
|
return AV_PIX_FMT_YUV444P9;
|
||||||
} else if (CHROMA422)
|
} else if (CHROMA422(h))
|
||||||
return AV_PIX_FMT_YUV422P9;
|
return AV_PIX_FMT_YUV422P9;
|
||||||
else
|
else
|
||||||
return AV_PIX_FMT_YUV420P9;
|
return AV_PIX_FMT_YUV420P9;
|
||||||
@ -2942,7 +2942,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
|
|||||||
return AV_PIX_FMT_GBRP10;
|
return AV_PIX_FMT_GBRP10;
|
||||||
} else
|
} else
|
||||||
return AV_PIX_FMT_YUV444P10;
|
return AV_PIX_FMT_YUV444P10;
|
||||||
} else if (CHROMA422)
|
} else if (CHROMA422(h))
|
||||||
return AV_PIX_FMT_YUV422P10;
|
return AV_PIX_FMT_YUV422P10;
|
||||||
else
|
else
|
||||||
return AV_PIX_FMT_YUV420P10;
|
return AV_PIX_FMT_YUV420P10;
|
||||||
@ -2954,7 +2954,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
|
|||||||
} else
|
} else
|
||||||
return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ444P
|
return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ444P
|
||||||
: AV_PIX_FMT_YUV444P;
|
: AV_PIX_FMT_YUV444P;
|
||||||
} else if (CHROMA422) {
|
} else if (CHROMA422(h)) {
|
||||||
return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ422P
|
return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ422P
|
||||||
: AV_PIX_FMT_YUV422P;
|
: AV_PIX_FMT_YUV422P;
|
||||||
} else {
|
} else {
|
||||||
|
@ -85,7 +85,7 @@
|
|||||||
#define CABAC(h) h->pps.cabac
|
#define CABAC(h) h->pps.cabac
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CHROMA422 (h->sps.chroma_format_idc == 2)
|
#define CHROMA422(h) (h->sps.chroma_format_idc == 2)
|
||||||
#define CHROMA444 (h->sps.chroma_format_idc == 3)
|
#define CHROMA444 (h->sps.chroma_format_idc == 3)
|
||||||
|
|
||||||
#define EXTENDED_SAR 255
|
#define EXTENDED_SAR 255
|
||||||
|
@ -2357,7 +2357,7 @@ decode_intra_mb:
|
|||||||
if(CHROMA444){
|
if(CHROMA444){
|
||||||
decode_cabac_luma_residual(h, scan, scan8x8, pixel_shift, mb_type, cbp, 1);
|
decode_cabac_luma_residual(h, scan, scan8x8, pixel_shift, mb_type, cbp, 1);
|
||||||
decode_cabac_luma_residual(h, scan, scan8x8, pixel_shift, mb_type, cbp, 2);
|
decode_cabac_luma_residual(h, scan, scan8x8, pixel_shift, mb_type, cbp, 2);
|
||||||
} else if (CHROMA422) {
|
} else if (CHROMA422(h)) {
|
||||||
if( cbp&0x30 ){
|
if( cbp&0x30 ){
|
||||||
int c;
|
int c;
|
||||||
for (c = 0; c < 2; c++)
|
for (c = 0; c < 2; c++)
|
||||||
|
@ -1113,7 +1113,7 @@ decode_intra_mb:
|
|||||||
if( decode_luma_residual(h, gb, scan, scan8x8, pixel_shift, mb_type, cbp, 2) < 0 ){
|
if( decode_luma_residual(h, gb, scan, scan8x8, pixel_shift, mb_type, cbp, 2) < 0 ){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (CHROMA422) {
|
} else if (CHROMA422(h)) {
|
||||||
if(cbp&0x30){
|
if(cbp&0x30){
|
||||||
for(chroma_idx=0; chroma_idx<2; chroma_idx++)
|
for(chroma_idx=0; chroma_idx<2; chroma_idx++)
|
||||||
if (decode_residual(h, gb, h->mb + ((256 + 16*16*chroma_idx) << pixel_shift),
|
if (decode_residual(h, gb, h->mb + ((256 + 16*16*chroma_idx) << pixel_shift),
|
||||||
|
@ -246,7 +246,7 @@ static av_always_inline void h264_filter_mb_fast_internal(H264Context *h,
|
|||||||
{
|
{
|
||||||
int chroma = !(CONFIG_GRAY && (h->flags&CODEC_FLAG_GRAY));
|
int chroma = !(CONFIG_GRAY && (h->flags&CODEC_FLAG_GRAY));
|
||||||
int chroma444 = CHROMA444;
|
int chroma444 = CHROMA444;
|
||||||
int chroma422 = CHROMA422;
|
int chroma422 = CHROMA422(h);
|
||||||
|
|
||||||
int mb_xy = h->mb_xy;
|
int mb_xy = h->mb_xy;
|
||||||
int left_type= h->left_type[LTOP];
|
int left_type= h->left_type[LTOP];
|
||||||
@ -467,7 +467,7 @@ static av_always_inline void filter_mb_dir(H264Context *h, int mb_x, int mb_y, u
|
|||||||
int edge;
|
int edge;
|
||||||
int chroma_qp_avg[2];
|
int chroma_qp_avg[2];
|
||||||
int chroma444 = CHROMA444;
|
int chroma444 = CHROMA444;
|
||||||
int chroma422 = CHROMA422;
|
int chroma422 = CHROMA422(h);
|
||||||
const int mbm_xy = dir == 0 ? mb_xy -1 : h->top_mb_xy;
|
const int mbm_xy = dir == 0 ? mb_xy -1 : h->top_mb_xy;
|
||||||
const int mbm_type = dir == 0 ? h->left_type[LTOP] : h->top_type;
|
const int mbm_type = dir == 0 ? h->left_type[LTOP] : h->top_type;
|
||||||
|
|
||||||
@ -784,7 +784,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
|
|||||||
filter_mb_mbaff_edgev ( h, img_cb + 8*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1 );
|
filter_mb_mbaff_edgev ( h, img_cb + 8*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1 );
|
||||||
filter_mb_mbaff_edgev ( h, img_cr, uvlinesize, bS , 1, rqp[0], a, b, 1 );
|
filter_mb_mbaff_edgev ( h, img_cr, uvlinesize, bS , 1, rqp[0], a, b, 1 );
|
||||||
filter_mb_mbaff_edgev ( h, img_cr + 8*uvlinesize, uvlinesize, bS+4, 1, rqp[1], a, b, 1 );
|
filter_mb_mbaff_edgev ( h, img_cr + 8*uvlinesize, uvlinesize, bS+4, 1, rqp[1], a, b, 1 );
|
||||||
} else if (CHROMA422) {
|
} else if (CHROMA422(h)) {
|
||||||
filter_mb_mbaff_edgecv(h, img_cb, uvlinesize, bS , 1, bqp[0], a, b, 1);
|
filter_mb_mbaff_edgecv(h, img_cb, uvlinesize, bS , 1, bqp[0], a, b, 1);
|
||||||
filter_mb_mbaff_edgecv(h, img_cb + 8*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1);
|
filter_mb_mbaff_edgecv(h, img_cb + 8*uvlinesize, uvlinesize, bS+4, 1, bqp[1], a, b, 1);
|
||||||
filter_mb_mbaff_edgecv(h, img_cr, uvlinesize, bS , 1, rqp[0], a, b, 1);
|
filter_mb_mbaff_edgecv(h, img_cr, uvlinesize, bS , 1, rqp[0], a, b, 1);
|
||||||
|
@ -53,7 +53,7 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
|
|||||||
const int is_h264 = !CONFIG_SVQ3_DECODER || SIMPLE || h->avctx->codec_id == AV_CODEC_ID_H264;
|
const int is_h264 = !CONFIG_SVQ3_DECODER || SIMPLE || h->avctx->codec_id == AV_CODEC_ID_H264;
|
||||||
void (*idct_add)(uint8_t *dst, int16_t *block, int stride);
|
void (*idct_add)(uint8_t *dst, int16_t *block, int stride);
|
||||||
const int block_h = 16 >> h->chroma_y_shift;
|
const int block_h = 16 >> h->chroma_y_shift;
|
||||||
const int chroma422 = CHROMA422;
|
const int chroma422 = CHROMA422(h);
|
||||||
|
|
||||||
dest_y = h->cur_pic.f.data[0] + ((mb_x << PIXEL_SHIFT) + mb_y * h->linesize) * 16;
|
dest_y = h->cur_pic.f.data[0] + ((mb_x << PIXEL_SHIFT) + mb_y * h->linesize) * 16;
|
||||||
dest_cb = h->cur_pic.f.data[1] + (mb_x << PIXEL_SHIFT) * 8 + mb_y * h->uvlinesize * block_h;
|
dest_cb = h->cur_pic.f.data[1] + (mb_x << PIXEL_SHIFT) * 8 + mb_y * h->uvlinesize * block_h;
|
||||||
|
@ -561,7 +561,7 @@ static void fill_decode_caches(H264Context *h, int mb_type)
|
|||||||
nnz_cache[3 + 8 * 7 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i] + 4 * 4];
|
nnz_cache[3 + 8 * 7 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i] + 4 * 4];
|
||||||
nnz_cache[3 + 8 * 11 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] + 8 * 4];
|
nnz_cache[3 + 8 * 11 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] + 8 * 4];
|
||||||
nnz_cache[3 + 8 * 12 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i] + 8 * 4];
|
nnz_cache[3 + 8 * 12 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i] + 8 * 4];
|
||||||
} else if (CHROMA422) {
|
} else if (CHROMA422(h)) {
|
||||||
nnz_cache[3 + 8 * 6 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] - 2 + 4 * 4];
|
nnz_cache[3 + 8 * 6 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] - 2 + 4 * 4];
|
||||||
nnz_cache[3 + 8 * 7 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i] - 2 + 4 * 4];
|
nnz_cache[3 + 8 * 7 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i] - 2 + 4 * 4];
|
||||||
nnz_cache[3 + 8 * 11 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] - 2 + 8 * 4];
|
nnz_cache[3 + 8 * 11 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] - 2 + 8 * 4];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user