/work/svt-av1/Source/Lib/Codec/entropy_coding.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright(c) 2019 Intel Corporation |
3 | | * Copyright (c) 2016, Alliance for Open Media. All rights reserved |
4 | | * |
5 | | * This source code is subject to the terms of the BSD 2 Clause License and |
6 | | * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
7 | | * was not distributed with this source code in the LICENSE file, you can |
8 | | * obtain it at https://www.aomedia.org/license/software-license. If the Alliance for Open |
9 | | * Media Patent License 1.0 was not distributed with this source code in the |
10 | | * PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license. |
11 | | */ |
12 | | |
13 | | #ifndef EbEntropyCoding_h |
14 | | #define EbEntropyCoding_h |
15 | | |
16 | | #include "definitions.h" |
17 | | #include "ec_process.h" |
18 | | #include "coding_unit.h" |
19 | | #include "pic_buffer_desc.h" |
20 | | #include "sequence_control_set.h" |
21 | | #include "pcs.h" |
22 | | #include "cabac_context_model.h" |
23 | | #include "mode_decision.h" |
24 | | #include "enc_intra_prediction.h" |
25 | | #include "bitstream_unit.h" |
26 | | #include "packetization_process.h" |
27 | | #include "md_process.h" |
28 | | #include "inter_prediction.h" |
29 | | #include "EbSvtAv1Metadata.h" |
30 | | #include "common_utils.h" |
31 | | #ifdef __cplusplus |
32 | | extern "C" { |
33 | | #endif |
34 | | |
35 | | /************************************** |
36 | | * Extern Function Declarations |
37 | | **************************************/ |
38 | | void svt_aom_write_modes_sb(EntropyCodingContext* ec_ctx, SuperBlock* sb_ptr, PictureControlSet* pcs, uint16_t tile_idx, |
39 | | EntropyCoder* ec, EbPictureBufferDesc* coeff_ptr, struct PARTITION_TREE* ptree, int mi_row, |
40 | | int mi_col); |
41 | | |
42 | | int svt_aom_get_wedge_params_bits(BlockSize bsize); |
43 | | |
44 | | EbErrorType svt_aom_encode_slice_finish(EntropyCoder* ec); |
45 | | |
46 | | EbErrorType svt_aom_reset_entropy_coder(EncodeContext* enc_ctx, EntropyCoder* ec, uint32_t qp, SliceType slice_type); |
47 | | EbErrorType svt_aom_txb_estimate_coeff_bits(ModeDecisionContext* ctx, uint8_t allow_update_cdf, FRAME_CONTEXT* ec_ctx, |
48 | | PictureControlSet* pcs, ModeDecisionCandidateBuffer* cand_bf, |
49 | | uint32_t txb_origin_index, uint32_t txb_chroma_origin_index, |
50 | | EbPictureBufferDesc* coeff_buffer_sb, uint32_t y_eob, uint32_t cb_eob, |
51 | | uint32_t cr_eob, uint64_t* y_txb_coeff_bits, uint64_t* cb_txb_coeff_bits, |
52 | | uint64_t* cr_txb_coeff_bits, TxSize txsize, TxSize txsize_uv, |
53 | | TxType tx_type, TxType tx_type_uv, COMPONENT_TYPE component_type); |
54 | | |
55 | | EbErrorType svt_aom_txb_estimate_coeff_bits_light_pd0(ModeDecisionContext* ctx, ModeDecisionCandidateBuffer* cand_bf, |
56 | | uint32_t txb_origin_index, EbPictureBufferDesc* coeff_buffer_sb, |
57 | | uint32_t y_eob, uint64_t* y_txb_coeff_bits, TxSize txsize); |
58 | | |
59 | | //**********************************************************************************************************// |
60 | | // onyxc_int.h |
61 | 1.42k | static INLINE int32_t frame_is_intra_only(const PictureParentControlSet* const pcs) { |
62 | 1.42k | return pcs->frm_hdr.frame_type == KEY_FRAME || pcs->frm_hdr.frame_type == INTRA_ONLY_FRAME; |
63 | 1.42k | } Unexecuted instantiation: resize.c:frame_is_intra_only Unexecuted instantiation: enc_handle.c:frame_is_intra_only Unexecuted instantiation: enc_settings.c:frame_is_intra_only Unexecuted instantiation: av1me.c:frame_is_intra_only Unexecuted instantiation: cdef_process.c:frame_is_intra_only Unexecuted instantiation: dlf_process.c:frame_is_intra_only Unexecuted instantiation: enc_cdef.c:frame_is_intra_only Unexecuted instantiation: enc_dec_process.c:frame_is_intra_only Unexecuted instantiation: enc_inter_prediction.c:frame_is_intra_only Unexecuted instantiation: enc_intra_prediction.c:frame_is_intra_only Unexecuted instantiation: enc_mode_config.c:frame_is_intra_only entropy_coding.c:frame_is_intra_only Line | Count | Source | 61 | 948 | static INLINE int32_t frame_is_intra_only(const PictureParentControlSet* const pcs) { | 62 | 948 | return pcs->frm_hdr.frame_type == KEY_FRAME || pcs->frm_hdr.frame_type == INTRA_ONLY_FRAME; | 63 | 948 | } |
Unexecuted instantiation: ec_process.c:frame_is_intra_only Unexecuted instantiation: full_loop.c:frame_is_intra_only Unexecuted instantiation: md_rate_estimation.c:frame_is_intra_only Unexecuted instantiation: mode_decision.c:frame_is_intra_only Unexecuted instantiation: md_config_process.c:frame_is_intra_only Unexecuted instantiation: md_process.c:frame_is_intra_only Unexecuted instantiation: motion_estimation.c:frame_is_intra_only Unexecuted instantiation: me_process.c:frame_is_intra_only Unexecuted instantiation: packetization_process.c:frame_is_intra_only Unexecuted instantiation: pcs.c:frame_is_intra_only Unexecuted instantiation: pd_process.c:frame_is_intra_only Unexecuted instantiation: pic_manager_process.c:frame_is_intra_only Unexecuted instantiation: product_coding_loop.c:frame_is_intra_only Unexecuted instantiation: rc_process.c:frame_is_intra_only Unexecuted instantiation: rc_rtc_cbr.c:frame_is_intra_only Unexecuted instantiation: rc_vbr_cbr.c:frame_is_intra_only Unexecuted instantiation: rd_cost.c:frame_is_intra_only Unexecuted instantiation: reference_object.c:frame_is_intra_only Unexecuted instantiation: resource_coordination_process.c:frame_is_intra_only Unexecuted instantiation: rest_process.c:frame_is_intra_only Unexecuted instantiation: restoration_pick.c:frame_is_intra_only Unexecuted instantiation: src_ops_process.c:frame_is_intra_only Unexecuted instantiation: transforms.c:frame_is_intra_only Unexecuted instantiation: encode_txb_ref_c.c:frame_is_intra_only Unexecuted instantiation: adaptive_mv_pred.c:frame_is_intra_only Unexecuted instantiation: coding_loop.c:frame_is_intra_only Unexecuted instantiation: coding_unit.c:frame_is_intra_only Unexecuted instantiation: deblocking_filter.c:frame_is_intra_only Unexecuted instantiation: global_me_cost.c:frame_is_intra_only rc_crf_cqp.c:frame_is_intra_only Line | Count | Source | 61 | 474 | static INLINE int32_t frame_is_intra_only(const PictureParentControlSet* const pcs) { | 62 | 474 | return pcs->frm_hdr.frame_type == KEY_FRAME || pcs->frm_hdr.frame_type == INTRA_ONLY_FRAME; | 63 | 474 | } |
|
64 | | |
65 | 474 | static INLINE int32_t frame_is_sframe(const PictureParentControlSet* pcs) { |
66 | 474 | return pcs->frm_hdr.frame_type == S_FRAME; |
67 | 474 | } Unexecuted instantiation: enc_handle.c:frame_is_sframe Unexecuted instantiation: enc_settings.c:frame_is_sframe Unexecuted instantiation: av1me.c:frame_is_sframe Unexecuted instantiation: cdef_process.c:frame_is_sframe Unexecuted instantiation: dlf_process.c:frame_is_sframe Unexecuted instantiation: enc_cdef.c:frame_is_sframe Unexecuted instantiation: enc_dec_process.c:frame_is_sframe Unexecuted instantiation: enc_inter_prediction.c:frame_is_sframe Unexecuted instantiation: enc_intra_prediction.c:frame_is_sframe Unexecuted instantiation: enc_mode_config.c:frame_is_sframe entropy_coding.c:frame_is_sframe Line | Count | Source | 65 | 474 | static INLINE int32_t frame_is_sframe(const PictureParentControlSet* pcs) { | 66 | 474 | return pcs->frm_hdr.frame_type == S_FRAME; | 67 | 474 | } |
Unexecuted instantiation: ec_process.c:frame_is_sframe Unexecuted instantiation: full_loop.c:frame_is_sframe Unexecuted instantiation: md_rate_estimation.c:frame_is_sframe Unexecuted instantiation: mode_decision.c:frame_is_sframe Unexecuted instantiation: md_config_process.c:frame_is_sframe Unexecuted instantiation: md_process.c:frame_is_sframe Unexecuted instantiation: motion_estimation.c:frame_is_sframe Unexecuted instantiation: me_process.c:frame_is_sframe Unexecuted instantiation: packetization_process.c:frame_is_sframe Unexecuted instantiation: pcs.c:frame_is_sframe Unexecuted instantiation: pd_process.c:frame_is_sframe Unexecuted instantiation: pic_manager_process.c:frame_is_sframe Unexecuted instantiation: product_coding_loop.c:frame_is_sframe Unexecuted instantiation: rc_process.c:frame_is_sframe Unexecuted instantiation: rc_rtc_cbr.c:frame_is_sframe Unexecuted instantiation: rc_vbr_cbr.c:frame_is_sframe Unexecuted instantiation: rd_cost.c:frame_is_sframe Unexecuted instantiation: reference_object.c:frame_is_sframe Unexecuted instantiation: resource_coordination_process.c:frame_is_sframe Unexecuted instantiation: rest_process.c:frame_is_sframe Unexecuted instantiation: restoration_pick.c:frame_is_sframe Unexecuted instantiation: src_ops_process.c:frame_is_sframe Unexecuted instantiation: transforms.c:frame_is_sframe Unexecuted instantiation: encode_txb_ref_c.c:frame_is_sframe Unexecuted instantiation: adaptive_mv_pred.c:frame_is_sframe Unexecuted instantiation: coding_loop.c:frame_is_sframe Unexecuted instantiation: coding_unit.c:frame_is_sframe Unexecuted instantiation: deblocking_filter.c:frame_is_sframe Unexecuted instantiation: global_me_cost.c:frame_is_sframe Unexecuted instantiation: rc_crf_cqp.c:frame_is_sframe |
68 | | |
69 | | // Returns 1 if this frame might allow mvs from some reference frame. |
70 | | |
71 | 0 | static INLINE int32_t frame_might_allow_ref_frame_mvs(const PictureParentControlSet* pcs, SequenceControlSet* scs) { |
72 | 0 | return !pcs->frm_hdr.error_resilient_mode && scs->seq_header.order_hint_info.enable_ref_frame_mvs && |
73 | 0 | scs->seq_header.order_hint_info.enable_order_hint && !frame_is_intra_only(pcs); |
74 | 0 | } Unexecuted instantiation: enc_handle.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: enc_settings.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: av1me.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cdef_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: dlf_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: enc_cdef.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: enc_dec_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: enc_inter_prediction.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: enc_intra_prediction.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: enc_mode_config.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: entropy_coding.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: ec_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: full_loop.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: md_rate_estimation.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: mode_decision.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: md_config_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: md_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: motion_estimation.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: me_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: packetization_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: pcs.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: pd_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: pic_manager_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: product_coding_loop.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: rc_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: rc_rtc_cbr.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: rc_vbr_cbr.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: rd_cost.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: reference_object.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: resource_coordination_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: rest_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: restoration_pick.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: src_ops_process.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: transforms.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: encode_txb_ref_c.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: adaptive_mv_pred.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: coding_loop.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: coding_unit.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: deblocking_filter.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: global_me_cost.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: rc_crf_cqp.c:frame_might_allow_ref_frame_mvs |
75 | | |
76 | | // Returns 1 if this frame might use warped_motion |
77 | 474 | static INLINE int32_t frame_might_allow_warped_motion(const PictureParentControlSet* pcs, SequenceControlSet* scs) { |
78 | 474 | return !pcs->frm_hdr.error_resilient_mode && !frame_is_intra_only(pcs) && scs->seq_header.enable_warped_motion; |
79 | 474 | } Unexecuted instantiation: enc_handle.c:frame_might_allow_warped_motion Unexecuted instantiation: enc_settings.c:frame_might_allow_warped_motion Unexecuted instantiation: av1me.c:frame_might_allow_warped_motion Unexecuted instantiation: cdef_process.c:frame_might_allow_warped_motion Unexecuted instantiation: dlf_process.c:frame_might_allow_warped_motion Unexecuted instantiation: enc_cdef.c:frame_might_allow_warped_motion Unexecuted instantiation: enc_dec_process.c:frame_might_allow_warped_motion Unexecuted instantiation: enc_inter_prediction.c:frame_might_allow_warped_motion Unexecuted instantiation: enc_intra_prediction.c:frame_might_allow_warped_motion Unexecuted instantiation: enc_mode_config.c:frame_might_allow_warped_motion entropy_coding.c:frame_might_allow_warped_motion Line | Count | Source | 77 | 474 | static INLINE int32_t frame_might_allow_warped_motion(const PictureParentControlSet* pcs, SequenceControlSet* scs) { | 78 | 474 | return !pcs->frm_hdr.error_resilient_mode && !frame_is_intra_only(pcs) && scs->seq_header.enable_warped_motion; | 79 | 474 | } |
Unexecuted instantiation: ec_process.c:frame_might_allow_warped_motion Unexecuted instantiation: full_loop.c:frame_might_allow_warped_motion Unexecuted instantiation: md_rate_estimation.c:frame_might_allow_warped_motion Unexecuted instantiation: mode_decision.c:frame_might_allow_warped_motion Unexecuted instantiation: md_config_process.c:frame_might_allow_warped_motion Unexecuted instantiation: md_process.c:frame_might_allow_warped_motion Unexecuted instantiation: motion_estimation.c:frame_might_allow_warped_motion Unexecuted instantiation: me_process.c:frame_might_allow_warped_motion Unexecuted instantiation: packetization_process.c:frame_might_allow_warped_motion Unexecuted instantiation: pcs.c:frame_might_allow_warped_motion Unexecuted instantiation: pd_process.c:frame_might_allow_warped_motion Unexecuted instantiation: pic_manager_process.c:frame_might_allow_warped_motion Unexecuted instantiation: product_coding_loop.c:frame_might_allow_warped_motion Unexecuted instantiation: rc_process.c:frame_might_allow_warped_motion Unexecuted instantiation: rc_rtc_cbr.c:frame_might_allow_warped_motion Unexecuted instantiation: rc_vbr_cbr.c:frame_might_allow_warped_motion Unexecuted instantiation: rd_cost.c:frame_might_allow_warped_motion Unexecuted instantiation: reference_object.c:frame_might_allow_warped_motion Unexecuted instantiation: resource_coordination_process.c:frame_might_allow_warped_motion Unexecuted instantiation: rest_process.c:frame_might_allow_warped_motion Unexecuted instantiation: restoration_pick.c:frame_might_allow_warped_motion Unexecuted instantiation: src_ops_process.c:frame_might_allow_warped_motion Unexecuted instantiation: transforms.c:frame_might_allow_warped_motion Unexecuted instantiation: encode_txb_ref_c.c:frame_might_allow_warped_motion Unexecuted instantiation: adaptive_mv_pred.c:frame_might_allow_warped_motion Unexecuted instantiation: coding_loop.c:frame_might_allow_warped_motion Unexecuted instantiation: coding_unit.c:frame_might_allow_warped_motion Unexecuted instantiation: deblocking_filter.c:frame_might_allow_warped_motion Unexecuted instantiation: global_me_cost.c:frame_might_allow_warped_motion Unexecuted instantiation: rc_crf_cqp.c:frame_might_allow_warped_motion |
80 | | |
81 | 474 | static INLINE uint8_t major_minor_to_seq_level_idx(BitstreamLevel bl) { |
82 | 474 | assert(bl.major >= LEVEL_MAJOR_MIN && bl.major <= LEVEL_MAJOR_MAX); |
83 | 474 | return ((bl.major - LEVEL_MAJOR_MIN) << LEVEL_MINOR_BITS) + bl.minor; |
84 | 474 | } Unexecuted instantiation: enc_handle.c:major_minor_to_seq_level_idx Unexecuted instantiation: enc_settings.c:major_minor_to_seq_level_idx Unexecuted instantiation: av1me.c:major_minor_to_seq_level_idx Unexecuted instantiation: cdef_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: dlf_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: enc_cdef.c:major_minor_to_seq_level_idx Unexecuted instantiation: enc_dec_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: enc_inter_prediction.c:major_minor_to_seq_level_idx Unexecuted instantiation: enc_intra_prediction.c:major_minor_to_seq_level_idx Unexecuted instantiation: enc_mode_config.c:major_minor_to_seq_level_idx entropy_coding.c:major_minor_to_seq_level_idx Line | Count | Source | 81 | 474 | static INLINE uint8_t major_minor_to_seq_level_idx(BitstreamLevel bl) { | 82 | 474 | assert(bl.major >= LEVEL_MAJOR_MIN && bl.major <= LEVEL_MAJOR_MAX); | 83 | 474 | return ((bl.major - LEVEL_MAJOR_MIN) << LEVEL_MINOR_BITS) + bl.minor; | 84 | 474 | } |
Unexecuted instantiation: ec_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: full_loop.c:major_minor_to_seq_level_idx Unexecuted instantiation: md_rate_estimation.c:major_minor_to_seq_level_idx Unexecuted instantiation: mode_decision.c:major_minor_to_seq_level_idx Unexecuted instantiation: md_config_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: md_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: motion_estimation.c:major_minor_to_seq_level_idx Unexecuted instantiation: me_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: packetization_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: pcs.c:major_minor_to_seq_level_idx Unexecuted instantiation: pd_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: pic_manager_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: product_coding_loop.c:major_minor_to_seq_level_idx Unexecuted instantiation: rc_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: rc_rtc_cbr.c:major_minor_to_seq_level_idx Unexecuted instantiation: rc_vbr_cbr.c:major_minor_to_seq_level_idx Unexecuted instantiation: rd_cost.c:major_minor_to_seq_level_idx Unexecuted instantiation: reference_object.c:major_minor_to_seq_level_idx Unexecuted instantiation: resize.c:major_minor_to_seq_level_idx Unexecuted instantiation: resource_coordination_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: rest_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: restoration_pick.c:major_minor_to_seq_level_idx Unexecuted instantiation: segmentation.c:major_minor_to_seq_level_idx Unexecuted instantiation: src_ops_process.c:major_minor_to_seq_level_idx Unexecuted instantiation: transforms.c:major_minor_to_seq_level_idx Unexecuted instantiation: encode_txb_ref_c.c:major_minor_to_seq_level_idx Unexecuted instantiation: adaptive_mv_pred.c:major_minor_to_seq_level_idx Unexecuted instantiation: coding_loop.c:major_minor_to_seq_level_idx Unexecuted instantiation: coding_unit.c:major_minor_to_seq_level_idx Unexecuted instantiation: deblocking_filter.c:major_minor_to_seq_level_idx Unexecuted instantiation: firstpass.c:major_minor_to_seq_level_idx Unexecuted instantiation: global_me_cost.c:major_minor_to_seq_level_idx Unexecuted instantiation: mcomp.c:major_minor_to_seq_level_idx Unexecuted instantiation: pass2_strategy.c:major_minor_to_seq_level_idx Unexecuted instantiation: rc_crf_cqp.c:major_minor_to_seq_level_idx |
85 | | |
86 | 16.5k | static INLINE void set_dc_sign(int32_t* cul_level, int32_t dc_val) { |
87 | 16.5k | if (dc_val < 0) { |
88 | 16.5k | *cul_level |= 1 << COEFF_CONTEXT_BITS; |
89 | 16.5k | } else if (dc_val > 0) { |
90 | 0 | *cul_level += 2 << COEFF_CONTEXT_BITS; |
91 | 0 | } |
92 | 16.5k | } Unexecuted instantiation: enc_handle.c:set_dc_sign Unexecuted instantiation: enc_settings.c:set_dc_sign Unexecuted instantiation: av1me.c:set_dc_sign Unexecuted instantiation: cdef_process.c:set_dc_sign Unexecuted instantiation: dlf_process.c:set_dc_sign Unexecuted instantiation: enc_cdef.c:set_dc_sign Unexecuted instantiation: enc_dec_process.c:set_dc_sign Unexecuted instantiation: enc_inter_prediction.c:set_dc_sign Unexecuted instantiation: enc_intra_prediction.c:set_dc_sign Unexecuted instantiation: enc_mode_config.c:set_dc_sign entropy_coding.c:set_dc_sign Line | Count | Source | 86 | 16.5k | static INLINE void set_dc_sign(int32_t* cul_level, int32_t dc_val) { | 87 | 16.5k | if (dc_val < 0) { | 88 | 16.5k | *cul_level |= 1 << COEFF_CONTEXT_BITS; | 89 | 16.5k | } else if (dc_val > 0) { | 90 | 0 | *cul_level += 2 << COEFF_CONTEXT_BITS; | 91 | 0 | } | 92 | 16.5k | } |
Unexecuted instantiation: ec_process.c:set_dc_sign Unexecuted instantiation: full_loop.c:set_dc_sign Unexecuted instantiation: md_rate_estimation.c:set_dc_sign Unexecuted instantiation: mode_decision.c:set_dc_sign Unexecuted instantiation: md_config_process.c:set_dc_sign Unexecuted instantiation: md_process.c:set_dc_sign Unexecuted instantiation: motion_estimation.c:set_dc_sign Unexecuted instantiation: me_process.c:set_dc_sign Unexecuted instantiation: packetization_process.c:set_dc_sign Unexecuted instantiation: pcs.c:set_dc_sign Unexecuted instantiation: pd_process.c:set_dc_sign Unexecuted instantiation: pic_manager_process.c:set_dc_sign Unexecuted instantiation: product_coding_loop.c:set_dc_sign Unexecuted instantiation: rc_process.c:set_dc_sign Unexecuted instantiation: rc_rtc_cbr.c:set_dc_sign Unexecuted instantiation: rc_vbr_cbr.c:set_dc_sign Unexecuted instantiation: rd_cost.c:set_dc_sign Unexecuted instantiation: reference_object.c:set_dc_sign Unexecuted instantiation: resize.c:set_dc_sign Unexecuted instantiation: resource_coordination_process.c:set_dc_sign Unexecuted instantiation: rest_process.c:set_dc_sign Unexecuted instantiation: restoration_pick.c:set_dc_sign Unexecuted instantiation: src_ops_process.c:set_dc_sign Unexecuted instantiation: transforms.c:set_dc_sign Unexecuted instantiation: encode_txb_ref_c.c:set_dc_sign Unexecuted instantiation: adaptive_mv_pred.c:set_dc_sign Unexecuted instantiation: coding_loop.c:set_dc_sign Unexecuted instantiation: coding_unit.c:set_dc_sign Unexecuted instantiation: deblocking_filter.c:set_dc_sign Unexecuted instantiation: global_me_cost.c:set_dc_sign Unexecuted instantiation: rc_crf_cqp.c:set_dc_sign |
93 | | |
94 | | extern const uint8_t eob_to_pos_small[33]; |
95 | | extern const int16_t eob_group_start[12]; |
96 | | extern const int16_t svt_aom_eob_offset_bits[12]; |
97 | | extern const uint8_t eob_to_pos_large[17]; |
98 | | |
99 | 37.8k | static INLINE int get_eob_pos_token(const int eob, int* const extra) { |
100 | 37.8k | int t; |
101 | | |
102 | 37.8k | if (eob < 33) { |
103 | 37.8k | t = eob_to_pos_small[eob]; |
104 | 37.8k | } else { |
105 | 2 | const int e = MIN((eob - 1) >> 5, 16); |
106 | 2 | t = eob_to_pos_large[e]; |
107 | 2 | } |
108 | | |
109 | 37.8k | *extra = eob - eob_group_start[t]; |
110 | | |
111 | 37.8k | return t; |
112 | 37.8k | } Unexecuted instantiation: enc_handle.c:get_eob_pos_token Unexecuted instantiation: enc_settings.c:get_eob_pos_token Unexecuted instantiation: av1me.c:get_eob_pos_token Unexecuted instantiation: cdef_process.c:get_eob_pos_token Unexecuted instantiation: dlf_process.c:get_eob_pos_token Unexecuted instantiation: enc_cdef.c:get_eob_pos_token Unexecuted instantiation: enc_dec_process.c:get_eob_pos_token Unexecuted instantiation: enc_inter_prediction.c:get_eob_pos_token Unexecuted instantiation: enc_intra_prediction.c:get_eob_pos_token Unexecuted instantiation: enc_mode_config.c:get_eob_pos_token entropy_coding.c:get_eob_pos_token Line | Count | Source | 99 | 16.5k | static INLINE int get_eob_pos_token(const int eob, int* const extra) { | 100 | 16.5k | int t; | 101 | | | 102 | 16.5k | if (eob < 33) { | 103 | 16.5k | t = eob_to_pos_small[eob]; | 104 | 16.5k | } else { | 105 | 0 | const int e = MIN((eob - 1) >> 5, 16); | 106 | 0 | t = eob_to_pos_large[e]; | 107 | 0 | } | 108 | | | 109 | 16.5k | *extra = eob - eob_group_start[t]; | 110 | | | 111 | 16.5k | return t; | 112 | 16.5k | } |
Unexecuted instantiation: ec_process.c:get_eob_pos_token Unexecuted instantiation: full_loop.c:get_eob_pos_token Unexecuted instantiation: md_rate_estimation.c:get_eob_pos_token Unexecuted instantiation: mode_decision.c:get_eob_pos_token Unexecuted instantiation: md_config_process.c:get_eob_pos_token Unexecuted instantiation: md_process.c:get_eob_pos_token Unexecuted instantiation: motion_estimation.c:get_eob_pos_token Unexecuted instantiation: me_process.c:get_eob_pos_token Unexecuted instantiation: packetization_process.c:get_eob_pos_token Unexecuted instantiation: pcs.c:get_eob_pos_token Unexecuted instantiation: pd_process.c:get_eob_pos_token Unexecuted instantiation: pic_manager_process.c:get_eob_pos_token Unexecuted instantiation: product_coding_loop.c:get_eob_pos_token Unexecuted instantiation: rc_process.c:get_eob_pos_token Unexecuted instantiation: rc_rtc_cbr.c:get_eob_pos_token Unexecuted instantiation: rc_vbr_cbr.c:get_eob_pos_token rd_cost.c:get_eob_pos_token Line | Count | Source | 99 | 21.2k | static INLINE int get_eob_pos_token(const int eob, int* const extra) { | 100 | 21.2k | int t; | 101 | | | 102 | 21.2k | if (eob < 33) { | 103 | 21.2k | t = eob_to_pos_small[eob]; | 104 | 21.2k | } else { | 105 | 2 | const int e = MIN((eob - 1) >> 5, 16); | 106 | 2 | t = eob_to_pos_large[e]; | 107 | 2 | } | 108 | | | 109 | 21.2k | *extra = eob - eob_group_start[t]; | 110 | | | 111 | 21.2k | return t; | 112 | 21.2k | } |
Unexecuted instantiation: reference_object.c:get_eob_pos_token Unexecuted instantiation: resize.c:get_eob_pos_token Unexecuted instantiation: resource_coordination_process.c:get_eob_pos_token Unexecuted instantiation: rest_process.c:get_eob_pos_token Unexecuted instantiation: restoration_pick.c:get_eob_pos_token Unexecuted instantiation: segmentation.c:get_eob_pos_token Unexecuted instantiation: src_ops_process.c:get_eob_pos_token Unexecuted instantiation: transforms.c:get_eob_pos_token Unexecuted instantiation: encode_txb_ref_c.c:get_eob_pos_token Unexecuted instantiation: adaptive_mv_pred.c:get_eob_pos_token Unexecuted instantiation: coding_loop.c:get_eob_pos_token Unexecuted instantiation: coding_unit.c:get_eob_pos_token Unexecuted instantiation: deblocking_filter.c:get_eob_pos_token Unexecuted instantiation: firstpass.c:get_eob_pos_token Unexecuted instantiation: global_me_cost.c:get_eob_pos_token Unexecuted instantiation: mcomp.c:get_eob_pos_token Unexecuted instantiation: pass2_strategy.c:get_eob_pos_token Unexecuted instantiation: rc_crf_cqp.c:get_eob_pos_token |
113 | | |
114 | | //**********************************************************************************************************// |
115 | | //encoder.h |
116 | 0 | static INLINE int32_t get_ref_frame_map_idx(const PictureParentControlSet* pcs, MvReferenceFrame ref_frame) { |
117 | 0 | return pcs->av1_ref_signal.ref_dpb_index[ref_frame - LAST_FRAME]; //LAST-LAST2-LAST3-GOLDEN-BWD-ALT2-ALT |
118 | 0 | } Unexecuted instantiation: enc_handle.c:get_ref_frame_map_idx Unexecuted instantiation: enc_settings.c:get_ref_frame_map_idx Unexecuted instantiation: av1me.c:get_ref_frame_map_idx Unexecuted instantiation: cdef_process.c:get_ref_frame_map_idx Unexecuted instantiation: dlf_process.c:get_ref_frame_map_idx Unexecuted instantiation: enc_cdef.c:get_ref_frame_map_idx Unexecuted instantiation: enc_dec_process.c:get_ref_frame_map_idx Unexecuted instantiation: enc_inter_prediction.c:get_ref_frame_map_idx Unexecuted instantiation: enc_intra_prediction.c:get_ref_frame_map_idx Unexecuted instantiation: enc_mode_config.c:get_ref_frame_map_idx Unexecuted instantiation: entropy_coding.c:get_ref_frame_map_idx Unexecuted instantiation: ec_process.c:get_ref_frame_map_idx Unexecuted instantiation: full_loop.c:get_ref_frame_map_idx Unexecuted instantiation: md_rate_estimation.c:get_ref_frame_map_idx Unexecuted instantiation: mode_decision.c:get_ref_frame_map_idx Unexecuted instantiation: md_config_process.c:get_ref_frame_map_idx Unexecuted instantiation: md_process.c:get_ref_frame_map_idx Unexecuted instantiation: motion_estimation.c:get_ref_frame_map_idx Unexecuted instantiation: me_process.c:get_ref_frame_map_idx Unexecuted instantiation: packetization_process.c:get_ref_frame_map_idx Unexecuted instantiation: pcs.c:get_ref_frame_map_idx Unexecuted instantiation: pd_process.c:get_ref_frame_map_idx Unexecuted instantiation: pic_manager_process.c:get_ref_frame_map_idx Unexecuted instantiation: product_coding_loop.c:get_ref_frame_map_idx Unexecuted instantiation: rc_process.c:get_ref_frame_map_idx Unexecuted instantiation: rc_rtc_cbr.c:get_ref_frame_map_idx Unexecuted instantiation: rc_vbr_cbr.c:get_ref_frame_map_idx Unexecuted instantiation: rd_cost.c:get_ref_frame_map_idx Unexecuted instantiation: reference_object.c:get_ref_frame_map_idx Unexecuted instantiation: resource_coordination_process.c:get_ref_frame_map_idx Unexecuted instantiation: rest_process.c:get_ref_frame_map_idx Unexecuted instantiation: restoration_pick.c:get_ref_frame_map_idx Unexecuted instantiation: src_ops_process.c:get_ref_frame_map_idx Unexecuted instantiation: transforms.c:get_ref_frame_map_idx Unexecuted instantiation: encode_txb_ref_c.c:get_ref_frame_map_idx Unexecuted instantiation: adaptive_mv_pred.c:get_ref_frame_map_idx Unexecuted instantiation: coding_loop.c:get_ref_frame_map_idx Unexecuted instantiation: coding_unit.c:get_ref_frame_map_idx Unexecuted instantiation: deblocking_filter.c:get_ref_frame_map_idx Unexecuted instantiation: global_me_cost.c:get_ref_frame_map_idx Unexecuted instantiation: rc_crf_cqp.c:get_ref_frame_map_idx |
119 | | |
120 | 34.1k | static INLINE TxSize get_txsize_entropy_ctx(TxSize txsize) { |
121 | 34.1k | return (TxSize)((txsize_sqr_map[txsize] + txsize_sqr_up_map[txsize] + 1) >> 1); |
122 | 34.1k | } Unexecuted instantiation: enc_handle.c:get_txsize_entropy_ctx Unexecuted instantiation: enc_settings.c:get_txsize_entropy_ctx Unexecuted instantiation: av1me.c:get_txsize_entropy_ctx Unexecuted instantiation: cdef_process.c:get_txsize_entropy_ctx Unexecuted instantiation: dlf_process.c:get_txsize_entropy_ctx Unexecuted instantiation: enc_cdef.c:get_txsize_entropy_ctx Unexecuted instantiation: enc_dec_process.c:get_txsize_entropy_ctx Unexecuted instantiation: enc_inter_prediction.c:get_txsize_entropy_ctx Unexecuted instantiation: enc_intra_prediction.c:get_txsize_entropy_ctx Unexecuted instantiation: enc_mode_config.c:get_txsize_entropy_ctx entropy_coding.c:get_txsize_entropy_ctx Line | Count | Source | 120 | 23.8k | static INLINE TxSize get_txsize_entropy_ctx(TxSize txsize) { | 121 | 23.8k | return (TxSize)((txsize_sqr_map[txsize] + txsize_sqr_up_map[txsize] + 1) >> 1); | 122 | 23.8k | } |
Unexecuted instantiation: ec_process.c:get_txsize_entropy_ctx full_loop.c:get_txsize_entropy_ctx Line | Count | Source | 120 | 10.3k | static INLINE TxSize get_txsize_entropy_ctx(TxSize txsize) { | 121 | 10.3k | return (TxSize)((txsize_sqr_map[txsize] + txsize_sqr_up_map[txsize] + 1) >> 1); | 122 | 10.3k | } |
Unexecuted instantiation: md_rate_estimation.c:get_txsize_entropy_ctx Unexecuted instantiation: mode_decision.c:get_txsize_entropy_ctx Unexecuted instantiation: md_config_process.c:get_txsize_entropy_ctx Unexecuted instantiation: md_process.c:get_txsize_entropy_ctx Unexecuted instantiation: motion_estimation.c:get_txsize_entropy_ctx Unexecuted instantiation: me_process.c:get_txsize_entropy_ctx Unexecuted instantiation: packetization_process.c:get_txsize_entropy_ctx Unexecuted instantiation: pcs.c:get_txsize_entropy_ctx Unexecuted instantiation: pd_process.c:get_txsize_entropy_ctx Unexecuted instantiation: pic_manager_process.c:get_txsize_entropy_ctx Unexecuted instantiation: product_coding_loop.c:get_txsize_entropy_ctx Unexecuted instantiation: rc_process.c:get_txsize_entropy_ctx Unexecuted instantiation: rc_rtc_cbr.c:get_txsize_entropy_ctx Unexecuted instantiation: rc_vbr_cbr.c:get_txsize_entropy_ctx Unexecuted instantiation: rd_cost.c:get_txsize_entropy_ctx Unexecuted instantiation: reference_object.c:get_txsize_entropy_ctx Unexecuted instantiation: resource_coordination_process.c:get_txsize_entropy_ctx Unexecuted instantiation: rest_process.c:get_txsize_entropy_ctx Unexecuted instantiation: restoration_pick.c:get_txsize_entropy_ctx Unexecuted instantiation: src_ops_process.c:get_txsize_entropy_ctx Unexecuted instantiation: transforms.c:get_txsize_entropy_ctx Unexecuted instantiation: encode_txb_ref_c.c:get_txsize_entropy_ctx Unexecuted instantiation: adaptive_mv_pred.c:get_txsize_entropy_ctx Unexecuted instantiation: coding_loop.c:get_txsize_entropy_ctx Unexecuted instantiation: coding_unit.c:get_txsize_entropy_ctx Unexecuted instantiation: deblocking_filter.c:get_txsize_entropy_ctx Unexecuted instantiation: global_me_cost.c:get_txsize_entropy_ctx Unexecuted instantiation: rc_crf_cqp.c:get_txsize_entropy_ctx |
123 | | |
124 | | //*******************************************************************************************// |
125 | | // bitwriter_buffer.h |
126 | | typedef struct AomWriteBitBuffer { |
127 | | uint8_t* bit_buffer; |
128 | | uint32_t bit_offset; |
129 | | } AomWriteBitBuffer; |
130 | | |
131 | | int32_t svt_aom_wb_is_byte_aligned(const AomWriteBitBuffer* wb); |
132 | | uint32_t svt_aom_wb_bytes_written(const AomWriteBitBuffer* wb); |
133 | | |
134 | | void svt_aom_wb_write_bit(AomWriteBitBuffer* wb, int32_t bit); |
135 | | void svt_aom_wb_write_literal(AomWriteBitBuffer* wb, int32_t data, int32_t bits); |
136 | | |
137 | | void svt_aom_wb_write_inv_signed_literal(AomWriteBitBuffer* wb, int32_t data, int32_t bits); |
138 | | |
139 | | //*******************************************************************************************// |
140 | | // blockd.h |
141 | | |
142 | | void svt_aom_get_txb_ctx(PictureControlSet* pcs, const int32_t plane, |
143 | | NeighborArrayUnit* dc_sign_level_coeff_neighbor_array, uint32_t blk_org_x, uint32_t blk_org_y, |
144 | | const BlockSize plane_bsize, const TxSize tx_size, int16_t* const txb_skip_ctx, |
145 | | int16_t* const dc_sign_ctx); |
146 | | |
147 | | void svt_aom_collect_neighbors_ref_counts_new(MacroBlockD* const xd); |
148 | | |
149 | | // == Context functions for comp ref == |
150 | | // |
151 | | // Returns a context number for the given MB prediction signal |
152 | | // Signal the first reference frame for a compound mode be either |
153 | | // GOLDEN/LAST3, or LAST/LAST2. |
154 | | int32_t svt_av1_get_pred_context_comp_ref_p(const MacroBlockD* xd); |
155 | | |
156 | | // Returns a context number for the given MB prediction signal |
157 | | // Signal the first reference frame for a compound mode be LAST, |
158 | | // conditioning on that it is known either LAST/LAST2. |
159 | | int32_t svt_av1_get_pred_context_comp_ref_p1(const MacroBlockD* xd); |
160 | | |
161 | | // Returns a context number for the given MB prediction signal |
162 | | // Signal the first reference frame for a compound mode be GOLDEN, |
163 | | // conditioning on that it is known either GOLDEN or LAST3. |
164 | | int32_t svt_av1_get_pred_context_comp_ref_p2(const MacroBlockD* xd); |
165 | | |
166 | | // Signal the 2nd reference frame for a compound mode be either |
167 | | // ALTREF, or ALTREF2/BWDREF. |
168 | | int32_t svt_av1_get_pred_context_comp_bwdref_p(const MacroBlockD* xd); |
169 | | |
170 | | // Signal the 2nd reference frame for a compound mode be either |
171 | | // ALTREF2 or BWDREF. |
172 | | int32_t svt_av1_get_pred_context_comp_bwdref_p1(const MacroBlockD* xd); |
173 | | // == Context functions for single ref == |
174 | | // |
175 | | // For the bit to signal whether the single reference is a forward reference |
176 | | // frame or a backward reference frame. |
177 | | int32_t svt_av1_get_pred_context_single_ref_p1(const MacroBlockD* xd); |
178 | | |
179 | | // For the bit to signal whether the single reference is ALTREF_FRAME or |
180 | | // non-ALTREF backward reference frame, knowing that it shall be either of |
181 | | // these 2 choices. |
182 | | int32_t svt_av1_get_pred_context_single_ref_p2(const MacroBlockD* xd); |
183 | | |
184 | | // For the bit to signal whether the single reference is LAST3/GOLDEN or |
185 | | // LAST2/LAST, knowing that it shall be either of these 2 choices. |
186 | | int32_t svt_av1_get_pred_context_single_ref_p3(const MacroBlockD* xd); |
187 | | |
188 | | // For the bit to signal whether the single reference is LAST2_FRAME or |
189 | | // LAST_FRAME, knowing that it shall be either of these 2 choices. |
190 | | int32_t svt_av1_get_pred_context_single_ref_p4(const MacroBlockD* xd); |
191 | | |
192 | | // For the bit to signal whether the single reference is GOLDEN_FRAME or |
193 | | // LAST3_FRAME, knowing that it shall be either of these 2 choices. |
194 | | int32_t svt_av1_get_pred_context_single_ref_p5(const MacroBlockD* xd); |
195 | | |
196 | | // For the bit to signal whether the single reference is ALTREF2_FRAME or |
197 | | // BWDREF_FRAME, knowing that it shall be either of these 2 choices. |
198 | | int32_t svt_av1_get_pred_context_single_ref_p6(const MacroBlockD* xd); |
199 | | |
200 | | /*!\brief Writes a valid metadata object to the AV1 bitstream. |
201 | | * \param[in] bitstream_ptr AV1 bitstream |
202 | | * \param[in] metadata Metadata array object |
203 | | * \param[in] type Metadata type descriptor |
204 | | */ |
205 | | EbErrorType svt_aom_write_metadata_av1(Bitstream* bitstream_ptr, SvtMetadataArrayT* metadata, |
206 | | const EbAv1MetadataType type); |
207 | | EbErrorType svt_aom_write_frame_header_av1(Bitstream* bitstream_ptr, SequenceControlSet* scs, PictureControlSet* pcs, |
208 | | uint8_t show_existing); |
209 | | EbErrorType svt_aom_encode_td_av1(uint8_t* bitstream_ptr); |
210 | | EbErrorType svt_aom_encode_sps_av1(Bitstream* bitstream_ptr, SequenceControlSet* scs); |
211 | | |
212 | | //*******************************************************************************************// |
213 | | MotionMode svt_aom_motion_mode_allowed(const PictureControlSet* pcs, uint16_t num_proj_ref, |
214 | | uint32_t overlappable_neighbors, const BlockSize bsize, MvReferenceFrame rf0, |
215 | | MvReferenceFrame rf1, PredictionMode mode); |
216 | | int svt_aom_is_masked_compound_type(COMPOUND_TYPE type); |
217 | | |
218 | | int32_t svt_aom_count_primitive_subexpfin(uint16_t n, uint16_t k, uint16_t v); |
219 | | int32_t svt_aom_count_primitive_refsubexpfin(uint16_t n, uint16_t k, uint16_t ref, uint16_t v); |
220 | | int svt_aom_get_comp_index_context_enc(PictureParentControlSet* pcs, int cur_frame_index, int bck_frame_index, |
221 | | int fwd_frame_index, const MacroBlockD* xd); |
222 | | int svt_aom_get_pred_context_switchable_interp(MvReferenceFrame rf0, MvReferenceFrame rf1, const MacroBlockD* xd, |
223 | | int dir); |
224 | | int svt_aom_is_nontrans_global_motion(const BlockModeInfo* block_mi, const BlockSize bsize, |
225 | | PictureParentControlSet* pcs); |
226 | | uint8_t svt_av1_get_intra_inter_context(const MacroBlockD* xd); |
227 | | void svt_aom_get_kf_y_mode_ctx(const MacroBlockD* xd, uint8_t* above_ctx, uint8_t* left_ctx); |
228 | | uint8_t av1_get_skip_mode_context(const MacroBlockD* xd); |
229 | | uint8_t av1_get_skip_context(const MacroBlockD* xd); |
230 | | void svt_av1_reset_loop_restoration(EntropyCodingContext* ctx); |
231 | | |
232 | | #ifdef __cplusplus |
233 | | } |
234 | | #endif |
235 | | #endif //EbEntropyCoding_h |