| /* | |
| * Copyright (c) 2016, Alliance for Open Media. All rights reserved | |
| * | |
| * This source code is subject to the terms of the BSD 2 Clause License and | |
| * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License | |
| * was not distributed with this source code in the LICENSE file, you can | |
| * obtain it at www.aomedia.org/license/software. If the Alliance for Open | |
| * Media Patent License 1.0 was not distributed with this source code in the | |
| * PATENTS file, you can obtain it at www.aomedia.org/license/patent. | |
| */ | |
| #ifndef AV1_COMMON_CFL_H_ | |
| #define AV1_COMMON_CFL_H_ | |
| #include "av1/common/blockd.h" | |
| static INLINE int is_cfl_allowed(const MB_MODE_INFO *mbmi) { | |
| const BLOCK_SIZE bsize = mbmi->sb_type; | |
| assert(bsize >= BLOCK_4X4); // Intra luma partitions can't be < 4X4 | |
| assert(bsize < BLOCK_SIZES_ALL); | |
| return (bsize >= BLOCK_4X4) && (bsize < BLOCK_SIZES); | |
| } | |
| static INLINE int get_scaled_luma_q0(int alpha_q3, int16_t pred_buf_q3) { | |
| int scaled_luma_q6 = alpha_q3 * pred_buf_q3; | |
| return ROUND_POWER_OF_TWO_SIGNED(scaled_luma_q6, 6); | |
| } | |
| void cfl_predict_block(MACROBLOCKD *const xd, uint8_t *dst, int dst_stride, | |
| int row, int col, TX_SIZE tx_size, int plane); | |
| void cfl_store_block(MACROBLOCKD *const xd, BLOCK_SIZE bsize, TX_SIZE tx_size); | |
| void cfl_store_tx(MACROBLOCKD *const xd, int row, int col, TX_SIZE tx_size, | |
| BLOCK_SIZE bsize); | |
| #endif // AV1_COMMON_CFL_H_ |