Merge commit '23e85be58fc64b2e804e68b0034a08a6d257e523'
* commit '23e85be58fc64b2e804e68b0034a08a6d257e523': h264: add a parameter to the CHROMA444 macro. h264: add a parameter to the CHROMA422 macro. Conflicts: libavcodec/h264.c libavcodec/h264.h libavcodec/h264_cavlc.c libavcodec/h264_loopfilter.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		@@ -2089,8 +2089,8 @@ static av_always_inline void backup_mb_border(H264Context *h, uint8_t *src_y,
 | 
				
			|||||||
    uint8_t *top_border;
 | 
					    uint8_t *top_border;
 | 
				
			||||||
    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(h);
 | 
				
			||||||
    int chroma422 = CHROMA422;
 | 
					    int chroma422 = CHROMA422(h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    src_y  -= linesize;
 | 
					    src_y  -= linesize;
 | 
				
			||||||
    src_cb -= uvlinesize;
 | 
					    src_cb -= uvlinesize;
 | 
				
			||||||
@@ -2486,7 +2486,7 @@ void ff_h264_hl_decode_mb(H264Context *h)
 | 
				
			|||||||
    const int mb_type = h->cur_pic.mb_type[mb_xy];
 | 
					    const int mb_type = h->cur_pic.mb_type[mb_xy];
 | 
				
			||||||
    int is_complex    = CONFIG_SMALL || h->is_complex || IS_INTRA_PCM(mb_type) || h->qscale == 0;
 | 
					    int is_complex    = CONFIG_SMALL || h->is_complex || IS_INTRA_PCM(mb_type) || h->qscale == 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (CHROMA444) {
 | 
					    if (CHROMA444(h)) {
 | 
				
			||||||
        if (is_complex || h->pixel_shift)
 | 
					        if (is_complex || h->pixel_shift)
 | 
				
			||||||
            hl_decode_mb_444_complex(h);
 | 
					            hl_decode_mb_444_complex(h);
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
@@ -2988,51 +2988,51 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    switch (h->sps.bit_depth_luma) {
 | 
					    switch (h->sps.bit_depth_luma) {
 | 
				
			||||||
    case 9:
 | 
					    case 9:
 | 
				
			||||||
        if (CHROMA444) {
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
					            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
				
			||||||
                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;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 10:
 | 
					    case 10:
 | 
				
			||||||
        if (CHROMA444) {
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
					            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
				
			||||||
                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;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 12:
 | 
					    case 12:
 | 
				
			||||||
        if (CHROMA444) {
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
					            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
				
			||||||
                return AV_PIX_FMT_GBRP12;
 | 
					                return AV_PIX_FMT_GBRP12;
 | 
				
			||||||
            } else
 | 
					            } else
 | 
				
			||||||
                return AV_PIX_FMT_YUV444P12;
 | 
					                return AV_PIX_FMT_YUV444P12;
 | 
				
			||||||
        } else if (CHROMA422)
 | 
					        } else if (CHROMA422(h))
 | 
				
			||||||
            return AV_PIX_FMT_YUV422P12;
 | 
					            return AV_PIX_FMT_YUV422P12;
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            return AV_PIX_FMT_YUV420P12;
 | 
					            return AV_PIX_FMT_YUV420P12;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 14:
 | 
					    case 14:
 | 
				
			||||||
        if (CHROMA444) {
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
					            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
				
			||||||
                return AV_PIX_FMT_GBRP14;
 | 
					                return AV_PIX_FMT_GBRP14;
 | 
				
			||||||
            } else
 | 
					            } else
 | 
				
			||||||
                return AV_PIX_FMT_YUV444P14;
 | 
					                return AV_PIX_FMT_YUV444P14;
 | 
				
			||||||
        } else if (CHROMA422)
 | 
					        } else if (CHROMA422(h))
 | 
				
			||||||
            return AV_PIX_FMT_YUV422P14;
 | 
					            return AV_PIX_FMT_YUV422P14;
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            return AV_PIX_FMT_YUV420P14;
 | 
					            return AV_PIX_FMT_YUV420P14;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case 8:
 | 
					    case 8:
 | 
				
			||||||
        if (CHROMA444) {
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
					            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
 | 
				
			||||||
                av_log(h->avctx, AV_LOG_DEBUG, "Detected GBR colorspace.\n");
 | 
					                av_log(h->avctx, AV_LOG_DEBUG, "Detected GBR colorspace.\n");
 | 
				
			||||||
                return AV_PIX_FMT_GBR24P;
 | 
					                return AV_PIX_FMT_GBR24P;
 | 
				
			||||||
@@ -3041,7 +3041,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            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 {
 | 
				
			||||||
@@ -3082,7 +3082,7 @@ static int h264_slice_header_init(H264Context *h, int reinit)
 | 
				
			|||||||
        h->avctx->coded_height = h->height;
 | 
					        h->avctx->coded_height = h->height;
 | 
				
			||||||
    } else{
 | 
					    } else{
 | 
				
			||||||
        avcodec_set_dimensions(h->avctx, h->width, h->height);
 | 
					        avcodec_set_dimensions(h->avctx, h->width, h->height);
 | 
				
			||||||
        h->avctx->width  -= (2>>CHROMA444)*FFMIN(h->sps.crop_right, (8<<CHROMA444)-1);
 | 
					        h->avctx->width  -= (2>>CHROMA444(h))*FFMIN(h->sps.crop_right, (8<<CHROMA444(h))-1);
 | 
				
			||||||
        h->avctx->height -= (1<<h->chroma_y_shift)*FFMIN(h->sps.crop_bottom, (16>>h->chroma_y_shift)-1) * (2 - h->sps.frame_mbs_only_flag);
 | 
					        h->avctx->height -= (1<<h->chroma_y_shift)*FFMIN(h->sps.crop_bottom, (16>>h->chroma_y_shift)-1) * (2 - h->sps.frame_mbs_only_flag);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -4147,10 +4147,10 @@ static void loop_filter(H264Context *h, int start_x, int end_x)
 | 
				
			|||||||
                dest_y  = h->cur_pic.f.data[0] +
 | 
					                dest_y  = h->cur_pic.f.data[0] +
 | 
				
			||||||
                          ((mb_x << pixel_shift) + mb_y * h->linesize) * 16;
 | 
					                          ((mb_x << pixel_shift) + mb_y * h->linesize) * 16;
 | 
				
			||||||
                dest_cb = h->cur_pic.f.data[1] +
 | 
					                dest_cb = h->cur_pic.f.data[1] +
 | 
				
			||||||
                          (mb_x << pixel_shift) * (8 << CHROMA444) +
 | 
					                          (mb_x << pixel_shift) * (8 << CHROMA444(h)) +
 | 
				
			||||||
                          mb_y * h->uvlinesize * block_h;
 | 
					                          mb_y * h->uvlinesize * block_h;
 | 
				
			||||||
                dest_cr = h->cur_pic.f.data[2] +
 | 
					                dest_cr = h->cur_pic.f.data[2] +
 | 
				
			||||||
                          (mb_x << pixel_shift) * (8 << CHROMA444) +
 | 
					                          (mb_x << pixel_shift) * (8 << CHROMA444(h)) +
 | 
				
			||||||
                          mb_y * h->uvlinesize * block_h;
 | 
					                          mb_y * h->uvlinesize * block_h;
 | 
				
			||||||
                // FIXME simplify above
 | 
					                // FIXME simplify above
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,8 +88,8 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CHROMA    (h->sps.chroma_format_idc)
 | 
					#define CHROMA    (h->sps.chroma_format_idc)
 | 
				
			||||||
#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) (h->sps.chroma_format_idc == 3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EXTENDED_SAR       255
 | 
					#define EXTENDED_SAR       255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1811,7 +1811,7 @@ static av_always_inline void decode_cabac_residual_nondc(H264Context *h,
 | 
				
			|||||||
                                                         int max_coeff)
 | 
					                                                         int max_coeff)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* read coded block flag */
 | 
					    /* read coded block flag */
 | 
				
			||||||
    if( (cat != 5 || CHROMA444) && get_cabac( &h->cabac, &h->cabac_state[get_cabac_cbf_ctx( h, cat, n, max_coeff, 0 ) ] ) == 0 ) {
 | 
					    if( (cat != 5 || CHROMA444(h)) && get_cabac( &h->cabac, &h->cabac_state[get_cabac_cbf_ctx( h, cat, n, max_coeff, 0 ) ] ) == 0 ) {
 | 
				
			||||||
        if( max_coeff == 64 ) {
 | 
					        if( max_coeff == 64 ) {
 | 
				
			||||||
            fill_rectangle(&h->non_zero_count_cache[scan8[n]], 2, 2, 8, 0, 1);
 | 
					            fill_rectangle(&h->non_zero_count_cache[scan8[n]], 2, 2, 8, 0, 1);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
@@ -2296,7 +2296,7 @@ decode_intra_mb:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /* It would be better to do this in fill_decode_caches, but we don't know
 | 
					    /* It would be better to do this in fill_decode_caches, but we don't know
 | 
				
			||||||
     * the transform mode of the current macroblock there. */
 | 
					     * the transform mode of the current macroblock there. */
 | 
				
			||||||
    if (CHROMA444 && IS_8x8DCT(mb_type)){
 | 
					    if (CHROMA444(h) && IS_8x8DCT(mb_type)){
 | 
				
			||||||
        int i;
 | 
					        int i;
 | 
				
			||||||
        uint8_t *nnz_cache = h->non_zero_count_cache;
 | 
					        uint8_t *nnz_cache = h->non_zero_count_cache;
 | 
				
			||||||
        for (i = 0; i < 2; i++){
 | 
					        for (i = 0; i < 2; i++){
 | 
				
			||||||
@@ -2361,10 +2361,10 @@ decode_intra_mb:
 | 
				
			|||||||
            h->last_qscale_diff=0;
 | 
					            h->last_qscale_diff=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        decode_cabac_luma_residual(h, scan, scan8x8, pixel_shift, mb_type, cbp, 0);
 | 
					        decode_cabac_luma_residual(h, scan, scan8x8, pixel_shift, mb_type, cbp, 0);
 | 
				
			||||||
        if(CHROMA444){
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            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++)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1112,7 +1112,7 @@ decode_intra_mb:
 | 
				
			|||||||
            return -1;
 | 
					            return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        h->cbp_table[mb_xy] |= ret << 12;
 | 
					        h->cbp_table[mb_xy] |= ret << 12;
 | 
				
			||||||
        if(CHROMA444){
 | 
					        if (CHROMA444(h)) {
 | 
				
			||||||
            if( decode_luma_residual(h, gb, scan, scan8x8, pixel_shift, mb_type, cbp, 1) < 0 ){
 | 
					            if( decode_luma_residual(h, gb, scan, scan8x8, pixel_shift, mb_type, cbp, 1) < 0 ){
 | 
				
			||||||
                return -1;
 | 
					                return -1;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -1126,7 +1126,7 @@ decode_intra_mb:
 | 
				
			|||||||
                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),
 | 
				
			||||||
                                        CHROMA_DC_BLOCK_INDEX+chroma_idx,
 | 
					                                        CHROMA_DC_BLOCK_INDEX+chroma_idx,
 | 
				
			||||||
                                        CHROMA422 ? chroma422_dc_scan : chroma_dc_scan,
 | 
					                                        CHROMA422(h) ? chroma422_dc_scan : chroma_dc_scan,
 | 
				
			||||||
                                        NULL, 4*num_c8x8) < 0) {
 | 
					                                        NULL, 4*num_c8x8) < 0) {
 | 
				
			||||||
                        return -1;
 | 
					                        return -1;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -242,8 +242,8 @@ static av_always_inline void h264_filter_mb_fast_internal(H264Context *h,
 | 
				
			|||||||
                                                          int pixel_shift)
 | 
					                                                          int pixel_shift)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int chroma = CHROMA && !(CONFIG_GRAY && (h->flags&CODEC_FLAG_GRAY));
 | 
					    int chroma = CHROMA && !(CONFIG_GRAY && (h->flags&CODEC_FLAG_GRAY));
 | 
				
			||||||
    int chroma444 = CHROMA444;
 | 
					    int chroma444 = CHROMA444(h);
 | 
				
			||||||
    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];
 | 
				
			||||||
@@ -463,8 +463,8 @@ static int check_mv(H264Context *h, long b_idx, long bn_idx, int mvy_limit){
 | 
				
			|||||||
static av_always_inline void filter_mb_dir(H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize, int mb_xy, int mb_type, int mvy_limit, int first_vertical_edge_done, int a, int b, int chroma, int dir) {
 | 
					static av_always_inline void filter_mb_dir(H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize, int mb_xy, int mb_type, int mvy_limit, int first_vertical_edge_done, int a, int b, int chroma, int dir) {
 | 
				
			||||||
    int edge;
 | 
					    int edge;
 | 
				
			||||||
    int chroma_qp_avg[2];
 | 
					    int chroma_qp_avg[2];
 | 
				
			||||||
    int chroma444 = CHROMA444;
 | 
					    int chroma444 = CHROMA444(h);
 | 
				
			||||||
    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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -780,12 +780,12 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
 | 
				
			|||||||
            filter_mb_mbaff_edgev ( h, img_y                ,   linesize, bS  , 1, qp [0], a, b, 1 );
 | 
					            filter_mb_mbaff_edgev ( h, img_y                ,   linesize, bS  , 1, qp [0], a, b, 1 );
 | 
				
			||||||
            filter_mb_mbaff_edgev ( h, img_y  + 8*  linesize,   linesize, bS+4, 1, qp [1], a, b, 1 );
 | 
					            filter_mb_mbaff_edgev ( h, img_y  + 8*  linesize,   linesize, bS+4, 1, qp [1], a, b, 1 );
 | 
				
			||||||
            if (chroma){
 | 
					            if (chroma){
 | 
				
			||||||
                if (CHROMA444) {
 | 
					                if (CHROMA444(h)) {
 | 
				
			||||||
                    filter_mb_mbaff_edgev ( h, img_cb,                uvlinesize, bS  , 1, bqp[0], a, b, 1 );
 | 
					                    filter_mb_mbaff_edgev ( h, img_cb,                uvlinesize, bS  , 1, bqp[0], 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_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);
 | 
				
			||||||
@@ -801,7 +801,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_y              , 2*  linesize, bS  , 2, qp [0], a, b, 1 );
 | 
					            filter_mb_mbaff_edgev ( h, img_y              , 2*  linesize, bS  , 2, qp [0], a, b, 1 );
 | 
				
			||||||
            filter_mb_mbaff_edgev ( h, img_y  +   linesize, 2*  linesize, bS+1, 2, qp [1], a, b, 1 );
 | 
					            filter_mb_mbaff_edgev ( h, img_y  +   linesize, 2*  linesize, bS+1, 2, qp [1], a, b, 1 );
 | 
				
			||||||
            if (chroma){
 | 
					            if (chroma){
 | 
				
			||||||
                if (CHROMA444) {
 | 
					                if (CHROMA444(h)) {
 | 
				
			||||||
                    filter_mb_mbaff_edgev ( h, img_cb,              2*uvlinesize, bS  , 2, bqp[0], a, b, 1 );
 | 
					                    filter_mb_mbaff_edgev ( h, img_cb,              2*uvlinesize, bS  , 2, bqp[0], a, b, 1 );
 | 
				
			||||||
                    filter_mb_mbaff_edgev ( h, img_cb + uvlinesize, 2*uvlinesize, bS+1, 2, bqp[1], a, b, 1 );
 | 
					                    filter_mb_mbaff_edgev ( h, img_cb + uvlinesize, 2*uvlinesize, bS+1, 2, bqp[1], a, b, 1 );
 | 
				
			||||||
                    filter_mb_mbaff_edgev ( h, img_cr,              2*uvlinesize, bS  , 2, rqp[0], a, b, 1 );
 | 
					                    filter_mb_mbaff_edgev ( h, img_cr,              2*uvlinesize, bS  , 2, 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;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -555,12 +555,12 @@ static void fill_decode_caches(H264Context *h, int mb_type)
 | 
				
			|||||||
                nnz = h->non_zero_count[left_xy[LEFT(i)]];
 | 
					                nnz = h->non_zero_count[left_xy[LEFT(i)]];
 | 
				
			||||||
                nnz_cache[3 + 8 * 1 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i]];
 | 
					                nnz_cache[3 + 8 * 1 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i]];
 | 
				
			||||||
                nnz_cache[3 + 8 * 2 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i]];
 | 
					                nnz_cache[3 + 8 * 2 + 2 * 8 * i] = nnz[left_block[8 + 1 + 2 * i]];
 | 
				
			||||||
                if (CHROMA444) {
 | 
					                if (CHROMA444(h)) {
 | 
				
			||||||
                    nnz_cache[3 + 8 *  6 + 2 * 8 * i] = nnz[left_block[8 + 0 + 2 * i] + 4 * 4];
 | 
					                    nnz_cache[3 + 8 *  6 + 2 * 8 * i] = nnz[left_block[8 + 0 + 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 *  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];
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user