Implemented vp9_denoiser_{alloc,free}()
authorTim Kopp <tkopp@google.com>
Wed, 11 Jun 2014 23:12:21 +0000 (16:12 -0700)
committerTim Kopp <tkopp@google.com>
Wed, 18 Jun 2014 21:18:09 +0000 (14:18 -0700)
Change-Id: I79eba79f7c52eec19ef2356278597e06620d5e27

vp9/encoder/vp9_denoiser.c

index 687b4c2..7e0a092 100644 (file)
@@ -40,10 +40,36 @@ void vp9_denoiser_update_frame_stats() {
 
 int vp9_denoiser_alloc(VP9_DENOISER *denoiser, int width, int height,
                        int border) {
+  assert(denoiser);
+
+  denoiser->running_avg_y.stride = width + 2 * border;
+
+  denoiser->running_avg_y.buf = calloc(
+      ((2 * border) + width) * ((2 * border) + height), sizeof(uint8_t));
+  if (denoiser->running_avg_y.buf == NULL) {
+    vp9_denoiser_free(denoiser);
+    return 1;
+  }
+
+  denoiser->mc_running_avg_y.stride = width + 2 * border;
+
+  denoiser->mc_running_avg_y.buf = calloc(
+      ((2 * border) + width) * ((2 * border) + height), sizeof(uint8_t));
+  if (denoiser->mc_running_avg_y.buf == NULL) {
+    vp9_denoiser_free(denoiser);
+    return 1;
+  }
+
   return 0;
 }
 
 void vp9_denoiser_free(VP9_DENOISER *denoiser) {
+  if (denoiser->running_avg_y.buf != NULL) {
+    free(denoiser->running_avg_y.buf);
+  }
+  if (denoiser->mc_running_avg_y.buf != NULL) {
+    free(denoiser->mc_running_avg_y.buf);
+  }
   return;
 }