int av1_get_eob_pos_token(const int eob, int *const extra);
/*!\endcond */ /*!\brief Allocate the memory resources for all the macro blocks in the current *codingframe. *\ingroupcoefficient_coding * *Eachmacroblockwillneeda\refCB_COEFF_BUFFERtostoreinformationfor *rate-distortionoptimizationandentropycodingoftransformcoefficients. * *\param[in]cpiTop-levelencoderstructure
*/ void av1_alloc_txb_buf(AV1_COMP *cpi); /*!\brief Free the memory resources for all the macro blocks in the current *codingframe. *\ingroupcoefficient_coding * *See\refav1_alloc_txb_bufand\refCB_COEFF_BUFFERformoredetails. * *\param[in]cpiTop-levelencoderstructure
*/ void av1_free_txb_buf(AV1_COMP *cpi);
/*!\brief Write quantized coefficients in a transform block into bitstream using *entropycoding. * *\ingroupcoefficient_coding * *Thisfunctionwillwritethequantizedcoefficientsinatransformblockinto *thebitstreamusingentropycoding. * *Thecodingstepsareasfollows. * *1)Codetheendofblockposition"eob",whichisthescanindexofthe *lastnon-zerocoefficientplusone. * *2)Codethelowermagnitudelevel(<=COEFF_BASE_RANGE+NUM_BASE_LEVELS) *foreachcoefficientinreversedscanorder. * *3)Codethesignandhighermagnitudelevel *(>COEFF_BASE_RANGE+NUM_BASE_LEVELS)inforwardscanorder. * *\param[in]cmTop-levelstructuresharedbyencoderand *decoder *\param[in]xPointertostructureholdingthedataforthe currentencodingmacroblock *\param[in]wEntropycodingwritepointer *\param[in]blk_rowTherowindexofthecurrenttransformblock *inthemacroblock.Eachunithas4pixelsinyplane *\param[in]blk_colThecolindexofthecurrenttransformblock *inthemacroblock.Eachunithas4pixelsinyplane *\param[in]planeTheindexofthecurrentplane *\param[in]blockTheindexofthecurrenttransformblockinthe *macroblock.It'sdefinedbynumberof4x4unitsthathavebeencodedbefore *thecurrernttransformblock *\param[in]tx_sizeThegiventransformsize
*/ void av1_write_coeffs_txb(const AV1_COMMON *const cm, MACROBLOCK *const x,
aom_writer *w, int blk_row, int blk_col, int plane,
int block, TX_SIZE tx_size);
/*!\brief Write quantized coefficients of all transform blocks in an intra *macroblockintothebitstreamusingentropycoding. * *\ingroupcoefficient_coding * *Alltransformblocksintheintramacroblocksharethesametransformsize. * *Thisfunctionuse\refav1_write_coeffs_txb()tocodeeachtransformblockin *rasterorder. * *\param[in]cmTop-levelstructuresharedbyencoderand *decoder *\param[in]xPointertostructureholdingthedataforthe currentencodingmacroblock *\param[in]wEntropycodingwritepointer *\param[in]bsizeBlocksizeofthecurrentmacroblock
*/ void av1_write_intra_coeffs_mb(const AV1_COMMON *const cm, MACROBLOCK *x,
aom_writer *w, BLOCK_SIZE bsize);
/*!\brief Pack the context info of the current transform block into an uint8_t. *\ingroupcoefficient_coding * *Thiscontextinfowillbecollectedandconsolidatedbyitsneighbor *transformblocksforcodingtransformblockskipflag(tx_skip)and *thesignofDCcoefficient(dc_sign). * *\param[in]qcoeffBufferofquantizedcoefficients *\param[in]scan_orderCodingorderofcoefficientsinthetransform *block *\param[in]eobThescanindexoflastnon-zerocoefficientplus *one
*/
uint8_t av1_get_txb_entropy_context(const tran_low_t *qcoeff, const SCAN_ORDER *scan_order, int eob);
/*!\brief Update the probability model (cdf) and the entropy context related to *coefficientcodingforalltransformblocksintheintramacroblock. * *\ingroupcoefficient_coding * *Thisfunctionwillgothrougheachtransformblockintheintramacorblock *andcall\refav1_update_and_record_txb_contexttoupdatetheprobability *modelandentropycontextproperly. * *\param[in]cpiTop-levelencoderstructure *\param[in]tdTop-levelmultithreadingstructure *\param[in]dry_runWhetherthisisadryrun. *\param[in]bsizeBlocksizeofthecurrentmacroblock *\param[in]allow_update_cdfAllowedtoupdateprobabilitymodel(cdf)or *not.
*/ void av1_update_intra_mb_txb_context(const AV1_COMP *cpi, ThreadData *td,
RUN_TYPE dry_run, BLOCK_SIZE bsize,
uint8_t allow_update_cdf);
/*!\brief Update the probability model (cdf) and the entropy context related to *coefficientcodingforatransformblock. * *\ingroupcoefficient_coding * *Thereareregularmodeanddryrunforthisfuntion. * *Regularmode: * *Theprobabilitymodel(cdf)foreachcodingsymbolinthe *transformblockwillbeupdated. * *Theentropycontextofthistransformblockwillbeupdated. * *Dryrun: * *Theprobabilitymodelupdatewillbeskipped. * *Theentropycontextofthistransformblockwillbeupdated. * *\param[in]planeTheindexofthecurrentplane. *\param[in]blockTheindexofthecurrenttransformblockinthe *macroblock.It'sdefinedbynumberof4x4unitsthathavebeencodedbefore *thecurrernttransformblock. *\param[in]blk_rowTherowindexofthecurrenttransformblock *inthemacroblock.Eachunithas4pixelsinyplane. *\param[in]blk_colThecolindexofthecurrenttransformblock *inthemacroblock.Eachunithas4pixelsinyplane. *\param[in]plane_bsizeBlocksizeforthisplane.Whenthevideosource *useschromasubsampling,theblocksizeofUVplaneswillbesmallerthanthe *blocksizeofYplane. *\param[in]tx_sizeThegiventransformsize. *\param[in]argThisparameterwillbetranslatedinto *tokenize_b_args,inwhichRUN_TYPEindicatesusingregularmodeordryrun.
*/ void av1_update_and_record_txb_context(int plane, int block, int blk_row,
int blk_col, BLOCK_SIZE plane_bsize,
TX_SIZE tx_size, void *arg);
/*!\brief Update the entropy context related to coefficient coding for a *transformblock. * *\ingroupcoefficient_coding * *Thereareregularmodeanddryrunforthisfunction. * *Regularmode: * *Theentropycontextofthistransformblockwillbeupdated. * *Dryrun: * *Theprobabilitymodelupdatewillbeskipped. * *Theentropycontextofthistransformblockwillbeupdated. * *\param[in]planeTheindexofthecurrentplane. *\param[in]blockTheindexofthecurrenttransformblockinthe *macroblock.It'sdefinedbynumberof4x4unitsthathavebeencodedbefore *thecurrernttransformblock. *\param[in]blk_rowTherowindexofthecurrenttransformblock *inthemacroblock.Eachunithas4pixelsinyplane. *\param[in]blk_colThecolindexofthecurrenttransformblock *inthemacroblock.Eachunithas4pixelsinyplane. *\param[in]plane_bsizeBlocksizeforthisplane.Whenthevideosource *useschromasubsampling,theblocksizeofUVplaneswillbesmallerthanthe *blocksizeofYplane. *\param[in]tx_sizeThegiventransformsize. *\param[in]argThisparameterwillbetranslatedinto *tokenize_b_args,inwhichRUN_TYPEindicatesusingregularmodeordryrun.
*/ void av1_record_txb_context(int plane, int block, int blk_row, int blk_col,
BLOCK_SIZE plane_bsize, TX_SIZE tx_size, void *arg);
/*!\brief Get the corresponding \ref CB_COEFF_BUFFER of the current macro block. * *\ingroupcoefficient_coding * *Themacroblock'slocationisdescribedbymi_rowandmi_col,rowandcolumn *miindexesinthecodingframe. * *Eachmiunitisa4x4pixelblock. * *\param[in]cpiTop-levelencoderstructure. *\param[in]mi_rowRowmiindexofthecurrenttransformblock *intheframe. *\param[in]mi_colColumnmiindexofthecurrenttransform *blockintheframe. *\returnCB_COEFF_BUFFER*Pointerof\refCB_COEFF_BUFFERassociated *tothismacroblock.
*/
CB_COEFF_BUFFER *av1_get_cb_coeff_buffer(conststruct AV1_COMP *cpi, int mi_row,
int mi_col);
/*!\brief Returns the entropy cost associated with skipping the current *transformblock. * *\ingroupcoefficient_coding * *\param[in]coeff_costsTableofentropycostforcoefficientcoding. *\param[in]txb_ctxContextinfoforentropycodingtransformblock *skipflag(tx_skip)andthesignofDCcoefficient(dc_sign). *\param[in]planeTheindexofthecurrentplane *\param[in]tx_sizeThetransformsize
*/ static inline int av1_cost_skip_txb(const CoeffCosts *coeff_costs, const TXB_CTX *const txb_ctx, int plane,
TX_SIZE tx_size) { const TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size); const PLANE_TYPE plane_type = get_plane_type(plane); const LV_MAP_COEFF_COST *const coeff_costs_ =
&coeff_costs->coeff_costs[txs_ctx][plane_type]; return coeff_costs_->txb_skip_cost[txb_ctx->txb_skip_ctx][1];
}
/*!\cond */ // These numbers are empirically obtained. staticconst int plane_rd_mult_chroma[REF_TYPES][PLANE_TYPES] = {
{ 17, 13 },
{ 16, 10 },
}; staticconst int plane_rd_mult[REF_TYPES][PLANE_TYPES] = {
{ 17, 20 },
{ 16, 20 },
}; /*!\endcond */
#ifdef __cplusplus
} #endif
#endif// AOM_AV1_ENCODER_ENCODETXB_H_
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.11Angebot
¤
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.