Enable encode_breakout in real time encoding
In real time encoding, we enable encode_breakout to make encoding fast. A speed feature "use_encode_breakout" is defined to set encode_breakout thresholds for different speeds. However, currently, static_thresh is an encoder option. The encode_ breakout can be turned off if user sets static_thresh=0 specifically. The rtc set borg test result: (need to set --static_thresh=1) speed -5, psnr loss -3.543%; speed -4, psnr loss -2.358%; speed -3, psnr loss -0.771%. Encoding speed test: speed -5, 11% - 60% speedup; speed -4, 5.5% - 28% speedup; speed -3, 0.8% - 7% speedup. Change-Id: Icde592ffbe77eac7446f872a2e9eb2051733677b
This commit is contained in:
@@ -208,6 +208,15 @@ typedef enum {
|
||||
ALLOW_RECODE = 3,
|
||||
} RECODE_LOOP_TYPE;
|
||||
|
||||
typedef enum {
|
||||
// encode_breakout is disabled.
|
||||
ENCODE_BREAKOUT_DISABLED = 0,
|
||||
// encode_breakout is enabled.
|
||||
ENCODE_BREAKOUT_ENABLED = 1,
|
||||
// encode_breakout is enabled with small max_thresh limit.
|
||||
ENCODE_BREAKOUT_LIMITED = 2
|
||||
} ENCODE_BREAKOUT_TYPE;
|
||||
|
||||
typedef struct {
|
||||
// Frame level coding parameter update
|
||||
int frame_parameter_update;
|
||||
@@ -392,6 +401,10 @@ typedef struct {
|
||||
|
||||
// This flag controls the use of non-RD mode decision.
|
||||
int use_pick_mode;
|
||||
|
||||
// This variable sets the encode_breakout threshold. Currently, it is only
|
||||
// enabled in real time mode.
|
||||
int encode_breakout_thresh;
|
||||
} SPEED_FEATURES;
|
||||
|
||||
typedef struct {
|
||||
@@ -546,6 +559,13 @@ typedef struct VP9_COMP {
|
||||
unsigned int max_mv_magnitude;
|
||||
int mv_step_param;
|
||||
|
||||
// Default value is 1. From first pass stats, encode_breakout may be disabled.
|
||||
ENCODE_BREAKOUT_TYPE allow_encode_breakout;
|
||||
|
||||
// Get threshold from external input. In real time mode, it can be
|
||||
// overwritten according to encoding speed.
|
||||
int encode_breakout;
|
||||
|
||||
unsigned char *segmentation_map;
|
||||
|
||||
// segment threashold for encode breakout
|
||||
@@ -636,9 +656,6 @@ typedef struct VP9_COMP {
|
||||
LAYER_CONTEXT layer_context[VPX_TS_MAX_LAYERS];
|
||||
} svc;
|
||||
|
||||
int enable_encode_breakout; // Default value is 1. From first pass stats,
|
||||
// encode_breakout may be disabled.
|
||||
|
||||
#if CONFIG_MULTIPLE_ARF
|
||||
// ARF tracking variables.
|
||||
int multi_arf_enabled;
|
||||
|
Reference in New Issue
Block a user