summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_svc_layercontext.h
diff options
context:
space:
mode:
authorMarco <marpan@google.com>2015-05-21 16:15:37 -0700
committerMarco <marpan@chromium.org>2015-06-02 07:54:13 -0700
commitc139b81a13f680340dd874c205cba40a7233d388 (patch)
tree3a34401e32dad4a602c653d508796716ba19459d /vp9/encoder/vp9_svc_layercontext.h
parentebf7466cd8b884fd29be42ebe670317f5a7ca04d (diff)
downloadlibvpx-c139b81a13f680340dd874c205cba40a7233d388.tar
libvpx-c139b81a13f680340dd874c205cba40a7233d388.tar.gz
libvpx-c139b81a13f680340dd874c205cba40a7233d388.tar.bz2
libvpx-c139b81a13f680340dd874c205cba40a7233d388.zip
Vidyo patch: Rate control for SVC, 1 pass CBR mode.
-Make Rate control work for SVC 1 pass CBR mode. -Added temporal layering mode. -Fixed bug in non-rd variance partition. -Modified/updated the sample encoders (vp9_spatial_svc_encoder, vpx_temporal_svc_encoder). -Added datarate unittest(s) for 1 pass CBR SVC. Change-Id: Ie94b1b68a56ea1267b5087c625e5df04def2ee48
Diffstat (limited to 'vp9/encoder/vp9_svc_layercontext.h')
-rw-r--r--vp9/encoder/vp9_svc_layercontext.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/vp9/encoder/vp9_svc_layercontext.h b/vp9/encoder/vp9_svc_layercontext.h
index 5063d521f..b6a5ea548 100644
--- a/vp9/encoder/vp9_svc_layercontext.h
+++ b/vp9/encoder/vp9_svc_layercontext.h
@@ -22,6 +22,7 @@ extern "C" {
typedef struct {
RATE_CONTROL rc;
int target_bandwidth;
+ int spatial_layer_target_bandwidth; // Target for the spatial layer.
double framerate;
int avg_frame_size;
int max_q;
@@ -64,9 +65,11 @@ typedef struct {
YV12_BUFFER_CONFIG scaled_frames[MAX_LAG_BUFFERS];
// Layer context used for rate control in one pass temporal CBR mode or
- // two pass spatial mode. Defined for temporal or spatial layers for now.
- // Does not support temporal combined with spatial RC.
- LAYER_CONTEXT layer_context[MAX(VPX_TS_MAX_LAYERS, VPX_SS_MAX_LAYERS)];
+ // two pass spatial mode.
+ LAYER_CONTEXT layer_context[VPX_MAX_LAYERS];
+ // Indicates what sort of temporal layering is used.
+ // Currently, this only works for CBR mode.
+ VP9E_TEMPORAL_LAYERING_MODE temporal_layering_mode;
} SVC;
struct VP9_COMP;
@@ -110,6 +113,8 @@ struct lookahead_entry *vp9_svc_lookahead_pop(struct VP9_COMP *const cpi,
// Start a frame and initialize svc parameters
int vp9_svc_start_frame(struct VP9_COMP *const cpi);
+int vp9_one_pass_cbr_svc_start_layer(struct VP9_COMP *const cpi);
+
#ifdef __cplusplus
} // extern "C"
#endif