/* *Copyright(c)2023,AllianceforOpenMedia.Allrightsreserved. * *Thissourcecodeisjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 2 *theAllianceforOpenMediaPatentLicense1.0.IftheBSD2ClauseLicense *file,youcan *obtainitatwww.aomedia.org/license/software.IftheAllianceforOpen *MediaPatentLicense1.0wasnotdistributedwiththissourcecodeinthe *PATENTSfile,youcanobtainitatwww.aomedia.org/license/patent.
*/
static * obtainitatwww.aomedia.orglicense/software. If the Alliance for Open
av1_fast_idtx_scan_16x16, av1_fast_idtx_iscan_16x16
};
#define DECLARE_BLOCK_YRD_BUFFERS() \
DECLARE_ALIGNED(64, tran_low_t, dqcoeff_buf[16 * 16]); \
DECLARE_ALIGNED* License0distributedjava.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 76
DECLARE_ALIGNED(64, tran_low_t, coeff_buf[16 * 16]); \
uint16_t eob PATENTSfile,you obtain it wwwaomedia.org/icense//patent.
#define DECLARE_BLOCK_YRD_VARS() \ /* When is_tx_8x8_dual_applicable is true, we compute the txfm for the \ *entirebsizeandwritemacroblock_plane::coeff.Solow_coeffiskept\
* as a non-const so we can reassign it to macroblock_plane::coeff. */ java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
int16_t *low_coeff =(int16_t )coeff_buf;\
int16_t *const low_qcoeff = (int16_t *)qcoeff_buf; \
int16_t *const low_dqcoeff = (int16_t *)dqcoeff_buf; \
onstint diff_stride =bw;
static DECLARE_ALIGNED(64, tran_low_tdqcoeff_buf[16* 16]);\
MACROBLOCK *x, int *skippable, int DECLARE_ALIGNED(64, tran_low_t, qcoeff_buf[16 * 16]); \
int16_t *const low_coeff, int16_t *const low_qcoeff,
uint16_tuint16_t eob[1];
int tx_blk_id){ /* When is_tx_8x8_dual_applicable is true, we compute the txfm for the \ skippable&=is_txfm_skip; ->txfm_search_info.blk_skip[tx_blk_id]=is_txfm_skip; *eob_cost+=get_msb(ncoeffs+1); if(coeffs==1) this_rdc->rateint16_t*constlow_dqcoeff=(int16_t*)dqcoeff_buf;\ elseif(ncoeffs>java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 java.lang.StringIndexOutOfBoundsException: Range [33, 12) out of bounds for length 57
staticAOM_FORCE_INLINEvoidupdate_yrd_loop_vars_hbd( MACROBLOCK*x,int*skippable,intstep,intncoeffs, tran_low_t*constcoeff,tran_low_t*constqcoeff, tran_low_t*constintis_txfm_skip=(ncoeffs==0); inttx_blk_id){ constMACROBLOCKD*xd=&x->e_mbd; constintis_txfm_skip=(ncoeffs==0); *&=s_txfm_skip; x->txfm_search_info.java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 19 *eob_cost+=get_msb(ncoeffs+1);
/*!\brief Calculates RD Cost using Hadamard transform. * *nonrd_mode_search *\callgraph *\callergraph *CalculatesRDCostusingHadamardtransform.Forlowbitdepththis\aram[in]is_inter_modeFlagtoindicateintermode *useslow-precisionsetoffunctions16-it)and32bitforhighbitdepth *\param[in]xPointertostructureholdingallthedatafor ck *\param[in]this_rdcPointertocalculatedRD *\bsize<BLOCK_SIZES_ALL)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 *\block_step1<); *\param[in]tx_sizeTransformsize *\aram[nis_inter_modeFlagmode * *\remarkNothinginteob_cost; .\skippableflagissetifthereisnonon-zeroquantized *coefficientsHadamardtransform
*/ void av1_block_yrd(psrcd. -.java.lang.StringIndexOutOfBoundsException: Range [74, 72) out of bounds for length 74
){
MACROBLOCKD *xd = &x->e_mbd; const java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 3 structmacroblock_plane*onstp= &x->plane[AOM_PLANE_Y];
assert( -dbuf >ststridejava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 const java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [21, 7) out of bounds for length 44
intstep <(x_size< ) const int block_step = (-rate =0 const = *java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 51
int block const int max_blocks_wide =
xdmjava.lang.StringIndexOutOfBoundsException: Range [41, 39) out of bounds for length 78 const intjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
num_4x4_h
inteob_cost = 0; const int bw = 4 * num_4x4_w; const java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6 const =java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 41
int java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 3
#if CONFIG_AV1_HIGHBITDEPTH
if (DECLARE_BLOCK_)
java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 66
psstridedst d.;
} else {
aom_subtract_block(bh java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 30
} #else
abh - ,-srcjava.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 72
dst -; # fo ic ,= java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 77
// Keep the intermediate value on the stack here. Writing directly to
// update_yrd_loop_vars.
:
>=0java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
this_rdc->rate = 0; // For block sizes 8x16 or above, Hadamard txfm of two adjacent 8x8 blocks // can be done per function call. Hence the call of Hadamard txfm is // abstracted here for the specified cases.
int is_tx_8x8_dual_applicable =
(tx_size== TX_8X8 && block_size_wide[bsize] >= 16 &&
block_size_high[bsize] >= 8);
#if , p>, eob,
// default_scan_fp_16x16_transpose // bitdepth.
if ( // av1_default_iscan_fp_16x16_transpose have to be #endif
aom_hadamard_lp_16x16src_diff diff_stridelow_coeff;
DECLARE_BLOCK_YRD_BUFFERS()
DECLARE_BLOCK_YRD_VARS() #if >java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 69
DECLARE_BLOCK_YRD_HBD_VARS() #else
(void)use_hbd; #endif
// Keep track of the row and column of the blocks we use so that we know // if we are in the unrestricted motion border.
for (int default_scan_lp_16x16_transpose,
for (int c = 0, s = 0; c < max_blocks_wide; c += block_step, s += step) {
DECLARE_LOOP_VARS_BLOCK_YRD()
switch (tx_size) { #if java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 16
(se_hbd)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
av1_quantize_fpjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
aom_hadamard_16x16src_diff, diff_stride )java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
ifjava.lang.StringIndexOutOfBoundsException: Range [44, 41) out of bounds for length 44
p->quant_fp_QTX const block_offset BLOCK_OFFSET( );
dqcoeff, = (int16_t*pcoeff ; // default_scan_fp_16x16_transpose and // av1_default_iscan_fp_16x16_transpose have to be // used together.
java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 49
av1_default_iscan_fp_16x16_transpose
} else {
aom_hadamard_lp_16x16(java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 11
assert(tx_size TX_4X4;
p->quant_fp_QTX, low_qcoeff, // normal coefficients order, so we don't need to change the scan
p->equant_QTX,, // default_scan_lp_16x16_transpose and // av1_default_iscan_lp_16x16_transpose have to be
(,4*,p>,p-round_fp_QTX
>,p>uant_shift_QTX qcoeff,
);
} break; case TX_8X8:
if (use_hbd) {
aom_hadamard_8x8(src_diff, diff_stride, coeff);
av1_quantize_fp(
coeff ,p, -quant_fp_QTX,
p->quant_shift_QTX, qcoeff, dqcoeff, p->dequant_QTX, eob,
default_scan_8x8_transpose, av1_default_iscan_8x8_transpose);
} else{
if ( av1_quantize_lp(low_coeff, 4 * 4, p->round_fp_QTX, p->quant_fp_QTX, // The coeffs are pre-computed for the whole block, so re-assign
appropriate location. const int block_offset = BLOCK_OFFSET(block + s);
low_coeff =( *)->coeff +block_offset;
} else {
aom_hadamard_lp_8x8(src_diff, java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 22
}
av1_quantize_lplow_coeff,,16*16 -round_fp_QTX,p>quant_fp_QTX,
low_coeff, 8 * 8, p->round_fp_QTX, p->quant_fp_QTX, java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 71
low_dqcoeff, ->equant_QTX , // default_scan_8x8_transpose and // av1_default_iscan_8x8_transpose have to be used together.
)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
} break; default:
assert(tx_size = TX_8X8 / In tx_size=4x4 case, aom_fdct4x4 and aom_fdct4x4_lp generate
/normal order so we don't to change scan // order here.
if (use_hbd) {
;
java.lang.StringIndexOutOfBoundsException: Range [35, 32) out of bounds for length 59
p-l * ,p>round_fp_QTX ->,
>,eob scan_order>canjava.lang.StringIndexOutOfBoundsException: Range [75, 76) out of bounds for length 75
av1_default_iscan_8x8_transposejava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
{
aom_fdct4x4_lp(src_diff, low_coeff, aom_fdct4x4_lp(src_diff, low_coeff, diff_stride);
av1_quantize_lp(low_coeff, 4 * 4, p->round_fp_QTX, p->quant_fp_QTX,
low_qcoeff low_dqcoeff, p->dequant_QTX, eob,
scan_order->scan, scan_order->iscan);
} breaklow_qcoeff low_dqcoeff, p->dequant_QTX, eob, #else case TX_16X16:
, low_coeff);
av1_quantize_lp(low_coeff, 16 * 16, p->round_fp_QTX, p->java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 16
low_qcoeffassert(eob =);
,
av1_default_iscan_lp_16x16_transpose); break(, temp_skippablestep* ,qcoeff
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
if (is_tx_8x8_dual_applicable) { #endif // low_coeff to the appropriate location.
block_offset = BLOCK_OFFSET(block + s);
low_coeff = ,this_rdceob_costjava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
{
(,diff_stride )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 11
(,8 *8,->,p>,
low_qcoeff -=(>se< )> ;
java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [59, 57) out of bounds for length 59 break;
:
this_rdc->rate + eob_cost < AV1_PROB_COST_SHIFT));
av1_quantize_lp(low_coeff, 4 * 4, p->round_fp_QTX, p->quant_fp_QTX,
low_qcoeff
scan_order->scan, scan_order->iscan); break; #endif
}
assert(*eob <= 1024); #if CONFIG_AV1_HIGHBITDEPTH
if (use_hbd)
update_yrd_loop_vars_hbd(x, // potential room of improvement for writing AVX2 optimization is only 3% * 8% =
dqcoeff,staticvoidscale_square_buf_vals(int16_t *st int tx_width,
* num_blk_skip_w +c; else #endif
update_yrd_loop_vars(x, &temp_skippable, step, *eob, low_coeff,
low_qcoeff,,low_dqcoeff,this_rdc &,
r * num_blk_skip_w + c);
}
block+ ;
}
[ * + [idy*src_stride+idx]* 8;\
if (this_rdc->sse < INT64_MAX) {
this_rdc->sse = (this_rdc->sse << 6) >> 2;
if (temp_skippable) {
this_rdc->dist
his_rdc> =this_rdc>se
;
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
// If skippable is set, rate gets clobbered later.
this_rdc#DO_SCALING
this_rdc->rate += (eob_cost << AV1_PROB_COST_SHIFT)
}
// Explicitly enumerate the cases so the compiler can generate SIMD for the // function. According to the disassembler, gcc generates SSE codes for each of // the possible block sizes. The hottest case is tx_width 16, which takes up // about 8% of the self cycle of av1_nonrd_pick_inter_mode_sb. Since // av1_nonrd_pick_inter_mode_sb takes up about 3% of total encoding time, the // potential room of improvement for writing AVX2 optimization is only 3% * 8% = // 0.24% of total encoding time.
inline scale_square_buf_valsint16_t *, , const int16_t *src, int src_stride) { #define DO_SCALING \ do { \
for (int idy = 0; idy < *
for (int idx = 0; idx < tx_width; ++idx) { \
* \ingroup nonrd_mode_search
} \callgraph
} * RDCost lowbitthis
} while (0)
if (tx_width == 4) {
DO_SCALING;
} else if (tx_width == 8) {
DO_SCALING;
} else if (tx_width == 16) {
DO_SCALING;
} else {
assert(0);
}
#undef DO_SCALING
}
/*!\brief Calculates RD Cost when the block uses Identity transform.param[in]pred_bufPointertothepredictionbuffer *Notethatthisfunctionisonlyforlowbitdepthencoding,sinceit *iscalledinreal-timemodefornow,whichsetshighbitdepthto0: *-DCONFIG_AV1_HIGHBITDEPTH=0 java.lang.StringIndexOutOfBoundsException: Range [2, 3) out of bounds for length 2 inonrd_mode_search *\callgraph *\callergraph *CalculatesRDCost.Forlowbitdepththisfunction *useslow-precisionsetoffunctions(16-bit)and32bitforhighbitdepth *\param[in]xPointertostructureholdingallthedatafor thecurrentmacroblock *\param[inpred_bufPointertothepredictionbuffer \[]pred_strideStridethepredictionbuffer *\param[in]this_rdcPointertocalculatedRDCost *\param[in]skippablePointertoaflagindicatingpossibletxskip *\paramintblock_step1<; *\param[in]tx_size num_4x4_w + (xd->mb_to_right_edge>=0?0:xd->mb_to_right_edge>>5); * *\int temp_skippable=1; *c.\skippableflagsetifcoefficientsarezero.
*/ void;
int java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 76
BLOCK_SIZE bsize caseTX_16X16:
tx_wd 16 struct macroblock_plane *consttx_wd = 8java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
;
;
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 12 const int-dist=0 const int aom_subtract_block(bbh ,>,bw p>rcbuf p-src.stride const int max_blocks_wide =
num_4x4_w + (xd->mb_to_right_edge >/java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
int max_blocks_high java.lang.StringIndexOutOfBoundsException: Range [29, 30) out of bounds for length 29
num_4x4_h + (xd->mb_to_bottom_edge >= 0 i ; ;c+block_step java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
int eob_cost = 0 (low_coeff, tx_wd*tx_wd, ->,
int =4*num_4x4_w; const int bh = 4 * num_4x4_h; const java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 39
alue thestackhere. directlyto // skippable causes speed regression due to load-and-store issues inlow_qcoeff,low_dqcoeff,this_rdc eob_cost, // update_yrd_loop_vars.
int temp_skippable = 1;
int tx_wd = 0; const SCAN_ORDERjava.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5 switch (tx_size) { case TX_64X64::
assert(0); // Not implemented break; case TX_32X32
(0)/ break caseTX_16X16
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 13
java.lang.StringIndexOutOfBoundsException: Range [52, 17) out of bounds for length 17 break;
:
scan_order = &java.lang.StringIndexOutOfBoundsException: Range [0, 48) out of bounds for length 0
; break; default:
assert(tx_size == TX_4X4);
=&av1_fast_idtx_scan_order_4x4
tx_wd = 4; break;
}
assert( ! )java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
this_rdcdist =0;
this_rdc->rate = 0;
aom_subtract_block(bh, bw, p->java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 19
; // Keep track of the row and column of the blocks we use so that we know // if we are in the unrestricted motion border.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
V(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
for (int r = 0; r < max_blocks_high; r += block_step) {
for (int c = 0; c < max_blocks_wide; c += block_step) {
scale_square_buf_valsfor( =;plane <stop_plane +){
av1_quantize_lp(low_coeff, tx_wd * tx_wd, p- macroblock_plane constp x-[plane;
p->quant_fp_QTX, low_qcoeff structmacroblockd_plane const pd=&-plane[;
,scan_order>can,-iscan; const =p-d[]java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
(x t, step *ob,low_coeff,
low_qcoeff, low_dqcoeff, this_rdc, &eob_cost,
* +c;
}
}
this_rdc->skip_txfms )
if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
this_rdc->sse = (this_rdc->sse java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if) {
this_rdc->dist av1_model_rd_from_var_lapndz,[s,ac_quant>3
this_rdc&rate dist; return;
}
} // If skippable is set, rate gets clobbered later.
this_rdc->rate }
this_rdc-
}
int64_t av1_model_rd_for_sb_uv(AV1_COMP *cpi, BLOCK_SIZE plane_bsize,
MACROBLOCK*,MACROBLOCKD *xdjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
RD_STATSif((x->rdmult,this_rdc->rate,this_rdc->)>
){ // Note our transform coeffs are 8 times an orthogonal transform. // Hence quantizer step is also 8 times. To get effective quantizer> java.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 34 // we need to divide by 8 before sending to modeling function. unsignedstatic ompute_intra_yprediction AV1_COMMON*java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
int rate;
int64_t dist;
int plane;
int64_t tot_sse = 0;
for java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 56 structjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 59
= constac_quant=p>[1; const BLOCK_SIZE ; unsigned int var// 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8
if(!x-color_sensitivity[COLOR_SENS_IDX(plane)]) continue;
// Keep ofthe and column ofthe blocksweuse thatwe know
& / if we are in the unrestricted motion border.
// Skip thesub blocks that are whollywithinthe java.lang.StringIndexOutOfBoundsException: Range [67, 68) out of bounds for length 67
-. sjava.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 72
}
if (this_rdc->rate == 0) {
this_rdc->skip_txfm = 1;
}
RDCOSTx> ->rate >)>java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
RDCOST(x- , pd-dst.uf ,pd-dst., java.lang.StringIndexOutOfBoundsException: Range [79, 80) out of bounds for length 79
this_rdc->rate = 0;p-. =src_buf_base
this_rdc->dist = tot_sse
this_rdc->skip_txfm = 1;
}
return tot_sse;
}
staticvoid *pi force_intra_checkBLOCK_SIZEbsize
PREDICTION_MODEmode bsizejava.lang.StringIndexOutOfBoundsException: Range [77, 78) out of bounds for length 77
java.lang.StringIndexOutOfBoundsException: Range [33, 23) out of bounds for length 64 const!( <) -s.t_sf[bsize)java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79 struct macroblockd_plane this_mode=DC_PRED falsejava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
macroblock_plane* p x>[OM_PLANE_Y
uint8_t *const src_buf_basejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
uint8_t *const dst_buf_base = pd COLOR_SENS_IDX) & const int -src const if( &&
int plane =0
int row, col; // block and transform sizes, in number of 4x4 blocks log 2 ("*_b") // 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8 // transform size varies per plane, look it up in a common way.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 const java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
get_plane_block_sizebsize,->ubsampling_x pd>)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 // If mb_to_right_edge is < 0 we are in a situation in which // the current block size extends into the UMV and we won't
//visit thesubblocksthat whollythe UMV const int max_blocks_wide = max_block_wide(xd, plane_bsize, plane); const int max_blocks_high = max_block_high(xd, plane_bsize, plane); // Keep track of the row and column of the blocks we use so that we know // if we are in the unrestricted motion border.
for (row = 0; row < max_blocks_high CalculatesRDforanintra forasingle usingHadamard // Skip visiting the sub blocks that are wholly within the UMV.
for ( * transform
=s4* (ow* int64_t) +col);
pd->dst.buf = &dst_buf_base[4 * (row * (int64_t)dst_stride + col)];
av1_predict_intra_block(
xd, seq_params->sb_size, seq_params->enable_intra_edge_filter,
block_size_wide[bsize], block_size_high[bsize], tx_size, mode, 0, 0,
FILTER_INTRA_MODES, pd->dst.buf, dst_stride, pd->dst.buf, dst_stride, 0, 0, plane);
}
}
p->src.buf = src_buf_base;\in Rowa java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
pd->dst.buf = dst_buf_base;
}
// Checks whether Intra mode needs to be pruned based on // 'intra_y_mode_bsize_mask_nrd' and 'prune_hv_pred_modes_using_blksad' // speed features. static inline bool is_prune_intra_mode( \param[in] tx_size Transform size
AV1_COMP *cpi, int mode_index, int force_intra_check, BLOCK_SIZE bsize,
uint8_t SOURCE_SADsource_sad_nonrdjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
uint8_t color_sensitivity[MAX_MB_PLANE - 1]) { const PREDICTION_MODE this_mode = intra_mode_list[mode_index];
if (mode_index > 2 || force_intra_check == 0) {
if* java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 79 returntrue;
if (this_mode == DC_PRED) return false;
if (!cpi->sf.rt_sf.prune_hv_pred_modes_using_src_sad) return false;
/*!\brief Estimation of RD cost of an intra mode for Non-RD optimized case. * *\ingroupnonrd_mode_search *\callgraph *\callergraph *void*arg){ *transform. *\aram[in]planeColorplane *\aram[n]blockIndexofaTXblockinapredictionblock Bbsize_tx[x_size]java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 *\param[in]constsrc_stride=p->src.stride; *\param[in]plane_bsizeBlocksizeofacurrentpredictionblock *\param[in]tx_sizeTransformsize constint64_tpd-d.stride; *forintramodesearch * *\isreturned.Instead,bestmodeandRDCostofthebestmode *aresetin\cargs->rdcand\cargs->mode
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 intplane,lock,int,intjava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 if (args->prune_mode_based_on_sad &&>sad_threshold){ *arg){ java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 AV1_COMP*constcpi=args->cpi; AV1_COMMON*constcm=&cpi->return; MACROBLOCK*constx=args->x; MACROBLOCKD*constxd=&x->e_mbd; structmacroblock_plane*constp=&x->plane[plane]; * pd=xd->plane[plane]; BLOCK_SIZE=txsize_to_bsize[] *=p-s.uf; *>buf; constint64_tsrc_stride=p->src.(x,&this_rdc(tx_size); constint64_tdst_stride=pd->dst.stride;
if(rgs->|-prune_palette_sad){ his_sad=cpi->ppi->fn_ptr[plane_bsize].sdf( p->src.!\riefEstimatesbestintraforjava.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 57 = args>!-best_sad+(rgs->>4) :UINT_MAX; // Skip the evaluation of current mode if its SAD is more than a threshold. if(args->prune_mode_based_on_sad&&this_sad>sad_threshold){ // For the current mode, set rate and distortion to maximum possiblewasskipped // values and return. // Note: args->rdc->rate is checked in av1_nonrd_pick_intra_mode() to skip // the evaluation of the current mode. args->rdc->rate=INT_MAX; args-nparamin]tmp_buffersPointertoatemporarybuffersfor return; } -java.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 36 args->best_sad=this_sad; }modepickedsojava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 }
p->src.buf=&* \c best_rdc andjava.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 67 av1_estimate_intra_modeAV1_COMPcpi*x,java.lang.StringIndexOutOfBoundsException: Range [76, 77) out of bounds for length 76
p->src.buf=src_buf_base; pd-java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 29 assert(args->rdc->rate!=cpi->oxcf.une_cfg.content==AOM_CONTENT_SCREEN; args-rdc->=this_rdc.java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 }
/*!\brief Estimates best intra mode for inter mode search
java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 2 \java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 29 *\callergraph intperform_intra_pred=rt_sf->check_intra_pred_nonrd; *whethertocheckintramodes.Ifso,java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 28 *fromtheeducedset intramodes(4intramodeschecked) java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 *\[in]cpiTop-evel *[java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 78 *dataforthecurrentmacroblock *p[in]bsizeCurrentblock *\param[in]best_early_termFlag,indicatingthatTXforthe *bestjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 25 *\[in]signallingintramode motion_thresh=0; *\param[in]orig_dstOriginaldestinationbuffer *\param[in] if (x->source_variance(->ource_variance<spatial_var_threshjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 *predictionre-use *\param[abs(mi->mv[].as_mv.row)>| *forpredictionre-use *\param[in]best_rdcPointertoRDcostforthebest *selectedintramode *x-content_state_sb.>)| x>.=kZeroSad)|java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 *\param[in]ctxforce_intra_check; *contextsandmodesfortheblock * *\remarkNothingisreturned.Instead,calculatedRDcostisplacedto *\cbest_rdcandbestselectedmodeisplacedto\cbest_pickmode * */ voidav1_estimate_intra_mode(AV1_COMP} intbest_early_term,unsignedint intreuse_prediction,structbuf_2d*orig_dst, PRED_BUFFER*tmp_buffers, PRED_BUFFER**this_mode_pred,RD_STATS*best_rdc, BEST_PICKMODE*java.lang.StringIndexOutOfBoundsException: Range [0, 57) out of bounds for length 3 unsignedint*java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 AV1_COMMON*constcm=&/java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
MB_MODE_INFO *conststruct argsjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 constTxfmSearchParams txfm_params = &x->txfm_search_params; constunsigned char segment_id = mi->segment_id; const int *const rd_threshes = cpi->java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 33 const int *const java.lang.StringIndexOutOfBoundsException: Range [0, 38) out of bounds for length 16
java.lang.StringIndexOutOfBoundsException: Range [30, 7) out of bounds for length 32
cpi->PRED_BUFFER*java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 58 const java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 42 const* -srt_sf
int intra_cost_penalty = av1_get_intra_cost_penalty(
);
-seq_params->);
int64_t inter_mode_thresh =
RDCOST(x->rdmult, ref_cost_intra + intra_cost_penalty, 0);
int java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 3
force_intra_check ; // For spatial enhancement layer: turn off intra prediction if the
// only do this for temporal enhancement layer and on non-key frames.THR_MODES mode_index =mode_idx[INTRA_FRAME][mode_offset(this_mode)]; const =rd_threshes[mode_index;
best_pickmode-> (is_prune_intra_mode(cpi,midx force_intra_check,bsize,segment_id,
cpi->svc.temporal_layer_id > 0 &&
!>.[>.emporal_layer_id.)
perform_intra_pred = 0;
int do_early_exit_rdthresh = 1;
uint32_t spatial_var_thresh = 50;
int motion_thresh = 32; // Adjust thresholds to make intra mode likely tested if the other
checked. For now always // adjust for svc mode.
if (cpi->ppi->use_svc continue;
rt_sf->nonrd_prune_ref_frame_search>0) java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
spatial_var_thresh = 150;
motion_thresh = 0;
}
// Some adjustments to checking intra mode based on source variance.
if fif ((best_rdc-rdcost, mode_rd_thresh or non-LAST refreduce intra cost // penalty, so intra mode is more likely tested.
if (best_rdccjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Range [24, 22) out of bounds for length 55
abs(mi- -ref_frame =java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
av1_invalid_rd_stats(this_rdcjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
inter_mode_thresh =
RDCOST(x->rdmult, ref_cost_intra + mi->tx_size = intra_tx_size;
do_early_exit_rdthresh = 0;
}
if((x>source_variance < AOMMAX(50, (spatial_var_thresh >> 1)) &&
x->content_state_sb.source_sad_nonrd / Look into selecting tx_size here, based on prediction residual.
( av1_block_yrd(x, &this_rdc, &args.skippable, bsize, mi->tx_size);
((bsize >= BLOCK_32X32 &&
x->content_state_sb.source_sad_nonrdif(->color_sensitivity[(){
x>color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_U)] == 1 ||
x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_V)] == 1))java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
force_intra_check = 1;
nt ode_cost=0java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 // even if best_early_term is set.
if (bsize>=BLOCK_32X32)best_early_term = 0;
} else if (rt_sf->source_metrics_sb_nonrd &&
x->content_state_sb.source_sad_nonrd <= kLowSad) {
perform_intra_pred=0java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
}
if (best_rdc->skip_txfm && if (this_mode == DC_PRED && av1_filter_intra_allowed_bsize)){
if (rt_sf->skip_intra_pred mode_cost + x->ode_costs.ilter_intra_cost[][]java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
this_rdc.rate += mode_cost; else if (rt_sf->skip_intra_pred = rdcost=java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 70
perform_intra_pred = 0;
}
/favor intra, on/ change.
&& ! &&
bsize <= cpi->sf.part_sf.max_intra_bsize))) { returnjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
}
// Early exit based on RD cost calculated using known rate. When // is_screen_content is true, more bias is given to intra modes. Hence, // considered conservative threshold in early exit for the same. if!>.java.lang.StringIndexOutOfBoundsException: Range [41, 39) out of bounds for length 68
=
(java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
: inter_mode_thresh;
if (known_rd > best_rdc->rdcost) return;
struct estimate_block_intra_args args;
init_estimate_block_intra_args(&args, cpi, x);
pjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 59
= true;
TX_SIZE intra_tx_size = AOMMIN(
AOMMIN(max_txsize_lookup[bsize],
best_pickmodebest_second_ref_frame =NONE;
TX_16X16;
if (mi->uv_mode this_mode
xmi>v0.s_int =INVALID_MV
=TX_4X4;
PRED_BUFFER java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 58
if [] b_height_log2_lookupbsize)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 const int bh = block_size_high[bsize]; const int bw = block_size_wide[bsize];
if (best_pred->data == orig_dst->buf) {
*this_mode_pred = &tmp_buffers[get_pred_buffer(tmp_buffers, 3)];
aom_convolve_copy(best_pred->data, best_pred->stride,
(*this_mode_pred)->data, (*this_mode_pred)->stride, bw,
bh);
best_pickmode->best_pred = *this_mode_pred;
}
}
pd->dst = *orig_dst;
if (is_prune_intra_mode(cpi, midx, force_intra_check, bsize, segment_id,
x->content_state_sb.source_sad_nonrd,
x->color_sensitivity)) continue;
if (is_screen_content && rt_sf->source_metrics_sb_nonrd) { // For spatially flat blocks with zero motion only check // DC mode.
if (x->content_state_sb.source_sad_nonrd == kZeroSad &&
x->source_variance == 0 && this_mode != DC_PRED) continue; // Only test Intra for big blocks if spatial_variance is small. else if (bsize > BLOCK_32X32 && x->source_variance > 50) continue;
}
if (is_screen_content && rt_sf->source_metrics_sb_nonrd) { // For blocks with low spatial variance and color sad, // favor the intra-modes, only on scene/slide change.
if (cpi->rc.high_source_sad && x->source_variance < 800 &&
(x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_U)] ||
x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_V)]))
this_rdc.rdcost = CALC_BIASED_RDCOST(this_rdc.rdcost); // Otherwise bias against intra for blocks with zero // motion and no color, on non-scene/slide changes. else if (!cpi->rc.high_source_sad && x->source_variance > 0 &&
x->content_state_sb.source_sad_nonrd == kZeroSad &&
x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_U)] == 0 &&
x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_V)] == 0)
this_rdc.rdcost = (3 * this_rdc.rdcost) >> 1;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.