Commit 1231638d authored by Marco Paniconi's avatar Marco Paniconi Committed by Gerrit Code Review
Browse files

Merge "Some code cleanup for cyclic refresh."

Showing with 31 additions and 37 deletions
...@@ -12,26 +12,45 @@ ...@@ -12,26 +12,45 @@
#ifndef VP9_ENCODER_VP9_CRAQ_H_ #ifndef VP9_ENCODER_VP9_CRAQ_H_
#define VP9_ENCODER_VP9_CRAQ_H_ #define VP9_ENCODER_VP9_CRAQ_H_
#include "vp9/encoder/vp9_onyx_int.h" #include "vp9/common/vp9_blockd.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// Check if we should turn off cyclic refresh based on bitrate condition. typedef struct {
static int apply_cyclic_refresh_bitrate(VP9_COMP *const cpi); // Target percentage of blocks per frame that are cyclicly refreshed.
int max_mbs_perframe;
// Maximum q-delta as percentage of base q.
int max_qdelta_perc;
// Block size below which we don't apply cyclic refresh.
BLOCK_SIZE min_block_size;
// Macroblock starting index (unit of 8x8) for cycling through the frame.
int mb_index;
// Controls how long a block will need to wait to be refreshed again.
int time_for_refresh;
// Actual number of blocks that were applied delta-q (segment 1).
int num_seg_blocks;
// Actual encoding bits for segment 1.
int actual_seg_bits;
// RD mult. parameters for segment 1.
int rdmult;
// Cyclic refresh map.
signed char *map;
// Projected rate and distortion for the current superblock.
int64_t projected_rate_sb;
int64_t projected_dist_sb;
// Thresholds applied to projected rate/distortion of the superblock.
int64_t thresh_rate_sb;
int64_t thresh_dist_sb;
} CYCLIC_REFRESH;
// Check if this coding block, of size bsize, should be considered for refresh struct VP9_COMP;
// (lower-qp coding).
static int candidate_refresh_aq(VP9_COMP *const cpi,
MODE_INFO *const mi,
int bsize,
int use_rd);
// Prior to coding a given prediction block, of size bsize at (mi_row, mi_col), // Prior to coding a given prediction block, of size bsize at (mi_row, mi_col),
// check if we should reset the segment_id, and update the cyclic_refresh map // check if we should reset the segment_id, and update the cyclic_refresh map
// and segmentation map. // and segmentation map.
void vp9_update_segment_aq(VP9_COMP *const cpi, void vp9_update_segment_aq(struct VP9_COMP *const cpi,
MODE_INFO *const mi, MODE_INFO *const mi,
int mi_row, int mi_row,
int mi_col, int mi_col,
...@@ -39,7 +58,7 @@ void vp9_update_segment_aq(VP9_COMP *const cpi, ...@@ -39,7 +58,7 @@ void vp9_update_segment_aq(VP9_COMP *const cpi,
int use_rd); int use_rd);
// Setup cyclic background refresh: set delta q and segmentation map. // Setup cyclic background refresh: set delta q and segmentation map.
void vp9_setup_cyclic_refresh_aq(VP9_COMP *const cpi); void vp9_setup_cyclic_refresh_aq(struct VP9_COMP *const cpi);
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "vp9/common/vp9_entropymode.h" #include "vp9/common/vp9_entropymode.h"
#include "vp9/common/vp9_onyxc_int.h" #include "vp9/common/vp9_onyxc_int.h"
#include "vp9/encoder/vp9_craq.h"
#include "vp9/encoder/vp9_encodemb.h" #include "vp9/encoder/vp9_encodemb.h"
#include "vp9/encoder/vp9_firstpass.h" #include "vp9/encoder/vp9_firstpass.h"
#include "vp9/encoder/vp9_lookahead.h" #include "vp9/encoder/vp9_lookahead.h"
...@@ -430,32 +431,6 @@ typedef enum { ...@@ -430,32 +431,6 @@ typedef enum {
USAGE_CONSTANT_QUALITY = 3, USAGE_CONSTANT_QUALITY = 3,
} END_USAGE; } END_USAGE;
typedef struct {
// Target percentage of blocks per frame that are cyclicly refreshed.
int max_mbs_perframe;
// Maximum q-delta as percentage of base q.
int max_qdelta_perc;
// Block size below which we don't apply cyclic refresh.
BLOCK_SIZE min_block_size;
// Macroblock starting index (unit of 8x8) for cycling through the frame.
int mb_index;
// Controls how long a block will need to wait to be refreshed again.
int time_for_refresh;
// Actual number of blocks that were applied delta-q (segment 1).
int num_seg_blocks;
// Actual encoding bits for segment 1.
int actual_seg_bits;
// RD mult. parameters for segment 1.
int rdmult;
// Cyclic refresh map.
signed char *map;
// Projected rate and distortion for the current superblock.
int64_t projected_rate_sb;
int64_t projected_dist_sb;
// Thresholds applied to projected rate/distortion of the superblock.
int64_t thresh_rate_sb;
int64_t thresh_dist_sb;
} CYCLIC_REFRESH;
typedef enum { typedef enum {
// Good Quality Fast Encoding. The encoder balances quality with the // Good Quality Fast Encoding. The encoder balances quality with the
// amount of time it takes to encode the output. (speed setting // amount of time it takes to encode the output. (speed setting
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment