diff --git a/av1/encoder/allintra_vis.c b/av1/encoder/allintra_vis.c
index 391fb25..780ef1c 100644
--- a/av1/encoder/allintra_vis.c
+++ b/av1/encoder/allintra_vis.c
@@ -9,7 +9,6 @@
  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
  */
 
-#include <stdio.h>
 #include "av1/common/common_data.h"
 #include "av1/common/enums.h"
 #include "av1/common/idct.h"
diff --git a/av1/encoder/encodeframe_utils.h b/av1/encoder/encodeframe_utils.h
index 64b07b8..94abc42 100644
--- a/av1/encoder/encodeframe_utils.h
+++ b/av1/encoder/encodeframe_utils.h
@@ -402,29 +402,23 @@
 
 static AOM_INLINE void av1_dealloc_mb_data(struct AV1Common *cm,
                                            struct macroblock *mb) {
-  if (mb->txfm_search_info.txb_rd_records) {
-    aom_free(mb->txfm_search_info.txb_rd_records);
-    mb->txfm_search_info.txb_rd_records = NULL;
-  }
-  if (mb->inter_modes_info) {
-    aom_free(mb->inter_modes_info);
-    mb->inter_modes_info = NULL;
-  }
+  aom_free(mb->txfm_search_info.txb_rd_records);
+  mb->txfm_search_info.txb_rd_records = NULL;
+
+  aom_free(mb->inter_modes_info);
+  mb->inter_modes_info = NULL;
+
   const int num_planes = av1_num_planes(cm);
   for (int plane = 0; plane < num_planes; plane++) {
-    if (mb->plane[plane].src_diff) {
-      aom_free(mb->plane[plane].src_diff);
-      mb->plane[plane].src_diff = NULL;
-    }
+    aom_free(mb->plane[plane].src_diff);
+    mb->plane[plane].src_diff = NULL;
   }
-  if (mb->e_mbd.seg_mask) {
-    aom_free(mb->e_mbd.seg_mask);
-    mb->e_mbd.seg_mask = NULL;
-  }
-  if (mb->winner_mode_stats) {
-    aom_free(mb->winner_mode_stats);
-    mb->winner_mode_stats = NULL;
-  }
+
+  aom_free(mb->e_mbd.seg_mask);
+  mb->e_mbd.seg_mask = NULL;
+
+  aom_free(mb->winner_mode_stats);
+  mb->winner_mode_stats = NULL;
 }
 
 static AOM_INLINE void av1_alloc_mb_data(struct AV1Common *cm,
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 08a985c..6b40ea0 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -4005,7 +4005,7 @@
       av1_firstpass_info_move_cur_index_and_pop(firstpass_info);
     } else {
       // When there is not enough past stats, we move the current
-      // index without poping the past stats
+      // index without popping the past stats
       av1_firstpass_info_move_cur_index(firstpass_info);
     }
 #endif
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index beef672..3f17713 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -2849,7 +2849,7 @@
       best_pickmode.best_mode_initial_skip_flag =
           (nonskip_rdc.rate == INT_MAX && this_rdc.skip_txfm);
 
-      // This is needed for the compoune modes.
+      // This is needed for the compound modes.
       frame_mv_best[this_mode][ref_frame].as_int =
           frame_mv[this_mode][ref_frame].as_int;
       if (ref_frame2 > NONE_FRAME)
diff --git a/av1/encoder/partition_search.c b/av1/encoder/partition_search.c
index aa9f4ba..b6c15ca 100644
--- a/av1/encoder/partition_search.c
+++ b/av1/encoder/partition_search.c
@@ -4148,7 +4148,7 @@
   }
 }
 
-// The ML model needs to provide the whole decition tree for the superblock.
+// The ML model needs to provide the whole decision tree for the superblock.
 static bool ml_partition_search_whole_tree(AV1_COMP *const cpi, ThreadData *td,
                                            TileDataEnc *tile_data,
                                            TokenExtra **tp,
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index a4c29a6..e6cf62b 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1758,7 +1758,7 @@
   }
 
   // nearest_refmv_count indicates the closeness of block motion characteristics
-  // with respect its spatial neighbor. Lower value of nearest_refmv_count
+  // with respect to its spatial neighbor. Lower value of nearest_refmv_count
   // means less correlation with its spatial neighbors. Hence less possibility
   // for NEARESTMV and NEARMV modes becoming the best mode since these modes
   // work well for blocks that shares similar motion characteristics with its
diff --git a/common/y4minput.c b/common/y4minput.c
index 5247738..8e20b49 100644
--- a/common/y4minput.c
+++ b/common/y4minput.c
@@ -896,7 +896,7 @@
     return -1;
   }
   if (csp == AOM_CSP_COLOCATED) {
-    // TODO(any): check the right way to handle this is y4m
+    // TODO(any): check the right way to handle this in y4m
     fprintf(stderr,
             "Ignoring colocated chroma sample position for reading in Y4M\n");
   }
