summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2018-06-15 01:33:41 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-06-15 01:33:41 +0000
commit0e6ab498a109dcd1f9e0bf7e78e750d76dd7ccad (patch)
tree084acaa82d6e906165e1818fb91c2aa07162ff0c /vp9/encoder
parent492a1935bf7e053b020e1c22f522b14d82f6f56d (diff)
parent775706c4534475ace8c3b68516e40628ee03808f (diff)
downloadlibvpx-0e6ab498a109dcd1f9e0bf7e78e750d76dd7ccad.tar
libvpx-0e6ab498a109dcd1f9e0bf7e78e750d76dd7ccad.tar.gz
libvpx-0e6ab498a109dcd1f9e0bf7e78e750d76dd7ccad.tar.bz2
libvpx-0e6ab498a109dcd1f9e0bf7e78e750d76dd7ccad.zip
Merge "Allocate tpl_dep_stats frame buffer"
Diffstat (limited to 'vp9/encoder')
-rw-r--r--vp9/encoder/vp9_encoder.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index db6757cac..d42257d0c 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -2085,7 +2085,7 @@ static void cal_nmvsadcosts_hp(int *mvsadcost[2]) {
VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf,
BufferPool *const pool) {
- unsigned int i;
+ unsigned int i, frame;
VP9_COMP *volatile const cpi = vpx_memalign(32, sizeof(VP9_COMP));
VP9_COMMON *volatile const cm = cpi != NULL ? &cpi->common : NULL;
@@ -2333,6 +2333,16 @@ VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf,
}
#endif // !CONFIG_REALTIME_ONLY
+ for (frame = 0; frame < MAX_LAG_BUFFERS; ++frame) {
+ CHECK_MEM_ERROR(cm, cpi->tpl_stats[frame].tpl_stats_ptr,
+ vpx_calloc(cm->mi_rows * cm->mi_cols,
+ sizeof(*cpi->tpl_stats[frame].tpl_stats_ptr)));
+ cpi->tpl_stats[frame].is_valid = 1;
+ cpi->tpl_stats[frame].width = cm->mi_cols;
+ cpi->tpl_stats[frame].height = cm->mi_rows;
+ cpi->tpl_stats[frame].stride = cm->mi_cols;
+ }
+
vp9_set_speed_features_framesize_independent(cpi);
vp9_set_speed_features_framesize_dependent(cpi);
@@ -2424,7 +2434,7 @@ VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf,
void vp9_remove_compressor(VP9_COMP *cpi) {
VP9_COMMON *cm;
- unsigned int i;
+ unsigned int i, frame;
int t;
if (!cpi) return;
@@ -2519,6 +2529,12 @@ void vp9_remove_compressor(VP9_COMP *cpi) {
vp9_denoiser_free(&(cpi->denoiser));
#endif
+ for (frame = 0; frame < MAX_LAG_BUFFERS; ++frame) {
+ if (cpi->tpl_stats[frame].is_valid)
+ vpx_free(cpi->tpl_stats[frame].tpl_stats_ptr);
+ cpi->tpl_stats[frame].is_valid = 0;
+ }
+
for (t = 0; t < cpi->num_workers; ++t) {
VPxWorker *const worker = &cpi->workers[t];
EncWorkerData *const thread_data = &cpi->tile_thr_data[t];