Improve readability for experiment UV_LVL
Add asserts for switch.
Add helper functions to make selection of plane functions readable.
Remove extra { such that brackets match.
Change-Id: I048f3e5e0822bf1669fdcbedb84a0255139df686
diff --git a/av1/encoder/picklpf.c b/av1/encoder/picklpf.c
index 26fd55e..da15d6a 100644
--- a/av1/encoder/picklpf.c
+++ b/av1/encoder/picklpf.c
@@ -27,6 +27,16 @@
#include "av1/encoder/encoder.h"
#include "av1/encoder/picklpf.h"
+static void yv12_copy_plane(const YV12_BUFFER_CONFIG *src_bc,
+ YV12_BUFFER_CONFIG *dst_bc, int plane) {
+ switch (plane) {
+ case 0: aom_yv12_copy_y(src_bc, dst_bc); break;
+ case 1: aom_yv12_copy_u(src_bc, dst_bc); break;
+ case 2: aom_yv12_copy_v(src_bc, dst_bc); break;
+ default: assert(plane >= 0 && plane <= 2); break;
+ }
+}
+
int av1_get_max_filter_level(const AV1_COMP *cpi) {
if (cpi->oxcf.pass == 2) {
return cpi->twopass.section_intra_rating > 8 ? MAX_LOOP_FILTER * 3 / 4
@@ -49,6 +59,7 @@
#if CONFIG_VAR_TX || CONFIG_EXT_PARTITION || CONFIG_CB4X4
#if CONFIG_UV_LVL
+ assert(plane >= 0 && plane <= 2);
av1_loop_filter_frame(cm->frame_to_show, cm, &cpi->td.mb.e_mbd, filt_level,
plane, partial_frame);
#else
@@ -65,52 +76,21 @@
1, partial_frame);
#endif
+ int highbd = 0;
+#if CONFIG_HIGHBITDEPTH
+ highbd = cm->use_highbitdepth;
+#endif // CONFIG_HIGHBITDEPTH
+
#if CONFIG_UV_LVL
-#if CONFIG_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- if (plane == 0)
- filt_err = aom_highbd_get_y_sse(sd, cm->frame_to_show);
- else if (plane == 1)
- filt_err = aom_highbd_get_u_sse(sd, cm->frame_to_show);
- else
- filt_err = aom_highbd_get_v_sse(sd, cm->frame_to_show);
- } else {
- if (plane == 0)
- filt_err = aom_get_y_sse(sd, cm->frame_to_show);
- else if (plane == 1)
- filt_err = aom_get_u_sse(sd, cm->frame_to_show);
- else
- filt_err = aom_get_v_sse(sd, cm->frame_to_show);
- }
-#else
- if (plane == 0)
- filt_err = aom_get_y_sse(sd, cm->frame_to_show);
- else if (plane == 1)
- filt_err = aom_get_u_sse(sd, cm->frame_to_show);
- else
- filt_err = aom_get_v_sse(sd, cm->frame_to_show);
-#endif // CONFIG_HIGHBITDEPTH
+ filt_err = aom_get_sse_plane(sd, cm->frame_to_show, plane, highbd);
// Re-instate the unfiltered frame
- if (plane == 0)
- aom_yv12_copy_y(&cpi->last_frame_uf, cm->frame_to_show);
- else if (plane == 1)
- aom_yv12_copy_u(&cpi->last_frame_uf, cm->frame_to_show);
- else
- aom_yv12_copy_v(&cpi->last_frame_uf, cm->frame_to_show);
+ yv12_copy_plane(&cpi->last_frame_uf, cm->frame_to_show, plane);
#else
-#if CONFIG_HIGHBITDEPTH
- if (cm->use_highbitdepth) {
- filt_err = aom_highbd_get_y_sse(sd, cm->frame_to_show);
- } else {
- filt_err = aom_get_y_sse(sd, cm->frame_to_show);
- }
-#else
- filt_err = aom_get_y_sse(sd, cm->frame_to_show);
-#endif // CONFIG_HIGHBITDEPTH
+ filt_err = aom_get_sse_plane(sd, cm->frame_to_show, 0, highbd);
// Re-instate the unfiltered frame
- aom_yv12_copy_y(&cpi->last_frame_uf, cm->frame_to_show);
+ yv12_copy_plane(&cpi->last_frame_uf, cm->frame_to_show, 0);
#endif // CONFIG_UV_LVL
return filt_err;
@@ -140,7 +120,7 @@
case 0: lvl = lf->filter_level; break;
case 1: lvl = lf->filter_level_u; break;
case 2: lvl = lf->filter_level_v; break;
- default: lvl = lf->filter_level; break;
+ default: assert(plane >= 0 && plane <= 2); return 0;
}
int filt_mid = clamp(lvl, min_filter_level, max_filter_level);
#else
@@ -154,12 +134,7 @@
memset(ss_err, 0xFF, sizeof(ss_err));
#if CONFIG_UV_LVL
- if (plane == 0)
- aom_yv12_copy_y(cm->frame_to_show, &cpi->last_frame_uf);
- else if (plane == 1)
- aom_yv12_copy_u(cm->frame_to_show, &cpi->last_frame_uf);
- else if (plane == 2)
- aom_yv12_copy_v(cm->frame_to_show, &cpi->last_frame_uf);
+ yv12_copy_plane(cm->frame_to_show, &cpi->last_frame_uf, plane);
#else
// Make a copy of the unfiltered / processed recon buffer
aom_yv12_copy_y(cm->frame_to_show, &cpi->last_frame_uf);