summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.c
diff options
context:
space:
mode:
authorMinghai Shang <minghai@google.com>2015-05-27 17:48:59 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-05-27 17:49:00 +0000
commit30181c46d871452f960fb0dadfe4088df51b77e5 (patch)
treea90b2f0966f5750dcc0fdfe518413e694513c773 /vp9/encoder/vp9_encoder.c
parentdee70d355fc6a2aeb3ede8062c58cd2bc7d71e75 (diff)
parent15353216c5b345e9df8500ce4f8fbba659a7f131 (diff)
downloadlibvpx-30181c46d871452f960fb0dadfe4088df51b77e5.tar
libvpx-30181c46d871452f960fb0dadfe4088df51b77e5.tar.gz
libvpx-30181c46d871452f960fb0dadfe4088df51b77e5.tar.bz2
libvpx-30181c46d871452f960fb0dadfe4088df51b77e5.zip
Merge "[svc] Make size of empty frame to be 16x16 all the time"
Diffstat (limited to 'vp9/encoder/vp9_encoder.c')
-rw-r--r--vp9/encoder/vp9_encoder.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index db79eb514..91624182d 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -3476,11 +3476,18 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
}
}
if (is_two_pass_svc(cpi) && cm->error_resilient_mode == 0) {
- // Use the last frame context for the empty frame.
+ // Use context 0 for intra only empty frame, but the last frame context
+ // for other empty frames.
+ if (cpi->svc.encode_empty_frame_state == ENCODING) {
+ if (cpi->svc.encode_intra_empty_frame != 0)
+ cm->frame_context_idx = 0;
+ else
+ cm->frame_context_idx = FRAME_CONTEXTS - 1;
+ } else {
cm->frame_context_idx =
- (cpi->svc.encode_empty_frame_state == ENCODING) ? FRAME_CONTEXTS - 1 :
cpi->svc.spatial_layer_id * cpi->svc.number_temporal_layers +
cpi->svc.temporal_layer_id;
+ }
cm->frame_parallel_decoding_mode = oxcf->frame_parallel_decoding_mode;
@@ -3968,6 +3975,7 @@ int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags,
}
cm->show_frame = 0;
+ cm->intra_only = 0;
cpi->refresh_alt_ref_frame = 1;
cpi->refresh_golden_frame = 0;
cpi->refresh_last_frame = 0;
@@ -4310,8 +4318,10 @@ int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags,
#endif
if (is_two_pass_svc(cpi)) {
- if (cpi->svc.encode_empty_frame_state == ENCODING)
+ if (cpi->svc.encode_empty_frame_state == ENCODING) {
cpi->svc.encode_empty_frame_state = ENCODED;
+ cpi->svc.encode_intra_empty_frame = 0;
+ }
if (cm->show_frame) {
++cpi->svc.spatial_layer_to_encode;