summaryrefslogtreecommitdiff
path: root/third_party/aom/av1/encoder/firstpass.h
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2020-04-07 23:30:51 -0400
committerMatt A. Tobin <email@mattatobin.com>2020-04-07 23:30:51 -0400
commitccf64c18670c1695c4fbdd45d9ca0c3e7c2973f2 (patch)
tree45d55e3e5e73c4255c4d71258d9be5b2d004d28f /third_party/aom/av1/encoder/firstpass.h
parent7d1f7918da802e6e35316f214594a336f83b6b1c (diff)
downloadaura-central-ccf64c18670c1695c4fbdd45d9ca0c3e7c2973f2.tar.gz
Move aom source to a sub-directory under media/libaom
There is no damned reason to treat this differently than any other media lib given its license and there never was.
Diffstat (limited to 'third_party/aom/av1/encoder/firstpass.h')
-rw-r--r--third_party/aom/av1/encoder/firstpass.h208
1 files changed, 0 insertions, 208 deletions
diff --git a/third_party/aom/av1/encoder/firstpass.h b/third_party/aom/av1/encoder/firstpass.h
deleted file mode 100644
index 4b7325ae2..000000000
--- a/third_party/aom/av1/encoder/firstpass.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * 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 AOM_AV1_ENCODER_FIRSTPASS_H_
-#define AOM_AV1_ENCODER_FIRSTPASS_H_
-
-#include "av1/common/enums.h"
-#include "av1/common/onyxc_int.h"
-#include "av1/encoder/lookahead.h"
-#include "av1/encoder/ratectrl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if CONFIG_FP_MB_STATS
-
-#define FPMB_DCINTRA_MASK 0x01
-
-#define FPMB_MOTION_ZERO_MASK 0x02
-#define FPMB_MOTION_LEFT_MASK 0x04
-#define FPMB_MOTION_RIGHT_MASK 0x08
-#define FPMB_MOTION_UP_MASK 0x10
-#define FPMB_MOTION_DOWN_MASK 0x20
-
-#define FPMB_ERROR_SMALL_MASK 0x40
-#define FPMB_ERROR_LARGE_MASK 0x80
-#define FPMB_ERROR_SMALL_TH 2000
-#define FPMB_ERROR_LARGE_TH 48000
-
-typedef struct {
- uint8_t *mb_stats_start;
- uint8_t *mb_stats_end;
-} FIRSTPASS_MB_STATS;
-#endif
-
-// Length of the bi-predictive frame group (BFG)
-// NOTE: Currently each BFG contains one backward ref (BWF) frame plus a certain
-// number of bi-predictive frames.
-#define BFG_INTERVAL 2
-// The maximum number of extra ALTREF's except ALTREF_FRAME
-#define MAX_EXT_ARFS (REF_FRAMES - BWDREF_FRAME - 1)
-
-#define MIN_EXT_ARF_INTERVAL 4
-
-#define MIN_ZERO_MOTION 0.95
-#define MAX_SR_CODED_ERROR 40
-#define MAX_RAW_ERR_VAR 2000
-#define MIN_MV_IN_OUT 0.4
-
-#define VLOW_MOTION_THRESHOLD 950
-
-typedef struct {
- double frame;
- double weight;
- double intra_error;
- double frame_avg_wavelet_energy;
- double coded_error;
- double sr_coded_error;
- double pcnt_inter;
- double pcnt_motion;
- double pcnt_second_ref;
- double pcnt_neutral;
- double intra_skip_pct;
- double inactive_zone_rows; // Image mask rows top and bottom.
- double inactive_zone_cols; // Image mask columns at left and right edges.
- double MVr;
- double mvr_abs;
- double MVc;
- double mvc_abs;
- double MVrv;
- double MVcv;
- double mv_in_out_count;
- double new_mv_count;
- double duration;
- double count;
- // standard deviation for (0, 0) motion prediction error
- double raw_error_stdev;
-} FIRSTPASS_STATS;
-
-typedef enum {
- KF_UPDATE = 0,
- LF_UPDATE = 1,
- GF_UPDATE = 2,
- ARF_UPDATE = 3,
- OVERLAY_UPDATE = 4,
- BRF_UPDATE = 5, // Backward Reference Frame
- LAST_BIPRED_UPDATE = 6, // Last Bi-predictive Frame
- BIPRED_UPDATE = 7, // Bi-predictive Frame, but not the last one
- INTNL_OVERLAY_UPDATE = 8, // Internal Overlay Frame
- INTNL_ARF_UPDATE = 9, // Internal Altref Frame (candidate for ALTREF2)
- FRAME_UPDATE_TYPES = 10
-} FRAME_UPDATE_TYPE;
-
-#define FC_ANIMATION_THRESH 0.15
-typedef enum {
- FC_NORMAL = 0,
- FC_GRAPHICS_ANIMATION = 1,
- FRAME_CONTENT_TYPES = 2
-} FRAME_CONTENT_TYPE;
-
-typedef struct {
- unsigned char index;
- RATE_FACTOR_LEVEL rf_level[(MAX_LAG_BUFFERS * 2) + 1];
- FRAME_UPDATE_TYPE update_type[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char arf_src_offset[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char arf_update_idx[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char arf_ref_idx[(MAX_LAG_BUFFERS * 2) + 1];
-#if USE_SYMM_MULTI_LAYER
- unsigned char arf_pos_in_gf[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char pyramid_level[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char pyramid_height;
- unsigned char pyramid_lvl_nodes[MAX_PYRAMID_LVL];
-#endif
- unsigned char brf_src_offset[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char bidir_pred_enabled[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char ref_fb_idx_map[(MAX_LAG_BUFFERS * 2) + 1][REF_FRAMES];
- unsigned char refresh_idx[(MAX_LAG_BUFFERS * 2) + 1];
- unsigned char refresh_flag[(MAX_LAG_BUFFERS * 2) + 1];
- int bit_allocation[(MAX_LAG_BUFFERS * 2) + 1];
-} GF_GROUP;
-
-typedef struct {
- unsigned int section_intra_rating;
- FIRSTPASS_STATS total_stats;
- FIRSTPASS_STATS this_frame_stats;
- const FIRSTPASS_STATS *stats_in;
- const FIRSTPASS_STATS *stats_in_start;
- const FIRSTPASS_STATS *stats_in_end;
- FIRSTPASS_STATS total_left_stats;
- int first_pass_done;
- int64_t bits_left;
- double modified_error_min;
- double modified_error_max;
- double modified_error_left;
- double mb_av_energy;
- double frame_avg_haar_energy;
-
-#if CONFIG_FP_MB_STATS
- uint8_t *frame_mb_stats_buf;
- uint8_t *this_frame_mb_stats;
- FIRSTPASS_MB_STATS firstpass_mb_stats;
-#endif
- // An indication of the content type of the current frame
- FRAME_CONTENT_TYPE fr_content_type;
-
- // Projected total bits available for a key frame group of frames
- int64_t kf_group_bits;
-
- // Error score of frames still to be coded in kf group
- int64_t kf_group_error_left;
-
- // The fraction for a kf groups total bits allocated to the inter frames
- double kfgroup_inter_fraction;
-
- int sr_update_lag;
-
- int kf_zeromotion_pct;
- int last_kfgroup_zeromotion_pct;
- int gf_zeromotion_pct;
- int active_worst_quality;
- int baseline_active_worst_quality;
- int extend_minq;
- int extend_maxq;
- int extend_minq_fast;
-
- GF_GROUP gf_group;
-} TWO_PASS;
-
-struct AV1_COMP;
-
-void av1_init_first_pass(struct AV1_COMP *cpi);
-void av1_rc_get_first_pass_params(struct AV1_COMP *cpi);
-void av1_first_pass(struct AV1_COMP *cpi, const struct lookahead_entry *source);
-void av1_end_first_pass(struct AV1_COMP *cpi);
-
-void av1_init_second_pass(struct AV1_COMP *cpi);
-void av1_rc_get_second_pass_params(struct AV1_COMP *cpi);
-void av1_configure_buffer_updates_firstpass(struct AV1_COMP *cpi,
- FRAME_UPDATE_TYPE update_type);
-
-// Post encode update of the rate control parameters for 2-pass
-void av1_twopass_postencode_update(struct AV1_COMP *cpi);
-
-static INLINE int get_number_of_extra_arfs(int interval, int arf_pending) {
- if (arf_pending && MAX_EXT_ARFS > 0)
- return interval >= MIN_EXT_ARF_INTERVAL * (MAX_EXT_ARFS + 1)
- ? MAX_EXT_ARFS
- : interval >= MIN_EXT_ARF_INTERVAL * MAX_EXT_ARFS
- ? MAX_EXT_ARFS - 1
- : 0;
- else
- return 0;
-}
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // AOM_AV1_ENCODER_FIRSTPASS_H_