Move TF resampling for intra to intra.c for use by the decoder.
authorGregory Maxwell <greg@xiph.org>
Mon, 27 May 2013 07:33:54 +0000 (00:33 -0700)
committerGregory Maxwell <greg@xiph.org>
Mon, 27 May 2013 07:35:29 +0000 (00:35 -0700)
src/decode.c
src/encode.c
src/intra.c
src/intra.h

index 9eee87a..1209496 100644 (file)
@@ -1,5 +1,5 @@
 /*Daala video codec
-Copyright (c) 2006-2010 Daala project contributors.  All rights reserved.
+Copyright (c) 2006-2013 Daala project contributors.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
index dda85be..cca2cc0 100644 (file)
@@ -34,7 +34,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
 #include "intra.h"
 #include "pvq.h"
 #include "pvq_code.h"
-#include "tf.h"
 
 static int od_enc_init(od_enc_ctx *enc, const daala_info *info) {
   int ret;
@@ -107,10 +106,10 @@ void od_state_mc_predict(od_state *state, int ref) {
          2);
         /*Copy the predictor into the image, with clipping.*/
         iplane = img->planes + pli;
-        blk_w = 16 >> (iplane->xdec);
-        blk_h = 16 >> (iplane->ydec);
-        blk_x = (vx - 2) <<(2 - iplane->xdec);
-        blk_y = (vy - 2) <<(2 - iplane->ydec);
+        blk_w = 16 >> iplane->xdec;
+        blk_h = 16 >> iplane->ydec;
+        blk_x = (vx - 2) << (2 - iplane->xdec);
+        blk_y = (vy - 2) << (2 - iplane->ydec);
         p = buf[0];
         if (blk_x < 0) {
           blk_w += blk_x;
@@ -212,18 +211,6 @@ static void od_img_plane_copy_pad8(od_img_plane *dst_p,
   }
 }
 
-static void od_resample_luma_coeffs(od_coeff *l, int lstride,
- const od_coeff *c, int cstride, int xdec, int ydec, int n) {
-  if (xdec) {
-    if (ydec) od_tf_up_hv_lp(l, lstride, c, cstride, n, n, n);
-    else od_tf_up_h_lp(l, lstride, c, cstride, n, n);
-  }
-  else{
-    OD_ASSERT(ydec);
-    if (ydec) od_tf_up_v_lp(l ,lstride, c, cstride, n, n);
-  }
-}
-
 static double mode_bits = 0;
 static double mode_count = 0;
 
@@ -325,7 +312,6 @@ int daala_encode_img_in(daala_enc_ctx *enc, od_img *img, int duration) {
 #endif
   }
   scale = 10; /*atoi(getenv("QUANT"));*/
-  /*TODO: Encode image.*/
   {
     GenericEncoder model_dc[OD_NPLANES_MAX];
     GenericEncoder model_g[OD_NPLANES_MAX];
@@ -369,6 +355,7 @@ int daala_encode_img_in(daala_enc_ctx *enc, od_img *img, int duration) {
       ydec = enc->state.io_imgs[OD_FRAME_INPUT].planes[pli].ydec;
       w = frame_width >> xdec;
       h = frame_height >> ydec;
+      od_ec_enc_uint(&enc->ec, scale, 512);
       ctmp[pli] = _ogg_calloc(w*h, sizeof(*ctmp[pli]));
       dtmp[pli] = _ogg_calloc(w*h, sizeof(*dtmp[pli]));
       /*We predict chroma planes from the luma plane.
index 79615c1..1e5423a 100644 (file)
@@ -26,6 +26,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
 #include <limits.h>
 #include "filter.h"
 #include "intra.h"
+#include "tf.h"
 
 const od_intra_mult_func OD_INTRA_MULT[OD_NBSIZES]={
   od_intra_pred4x4_mult,
@@ -296,3 +297,15 @@ void od_intra_pred_update(ogg_uint16_t _p0[],int _nmodes,int _mode,
     if(_p0[_mode]<24576)_p0[_mode]+=64;
   }
 }
+
+void od_resample_luma_coeffs(od_coeff *l, int lstride,
+ const od_coeff *c, int cstride, int xdec, int ydec, int n) {
+  if (xdec) {
+    if (ydec) od_tf_up_hv_lp(l, lstride, c, cstride, n, n, n);
+    else od_tf_up_h_lp(l, lstride, c, cstride, n, n);
+  }
+  else{
+    OD_ASSERT(ydec);
+    if (ydec) od_tf_up_v_lp(l, lstride, c, cstride, n, n);
+  }
+}
index 235ac77..6df5296 100644 (file)
@@ -81,6 +81,9 @@ int od_intra_pred_search(const ogg_uint16_t _cdf[],
 void od_intra_pred_update(ogg_uint16_t _p0[],int _nmodes,int _mode,
  int _left,int _upleft,int _up);
 
+void od_resample_luma_coeffs(od_coeff *l, int lstride,
+ const od_coeff *c, int cstride, int xdec, int ydec, int n);
+
 extern double OD_PRED_WEIGHTS_4x4[OD_INTRA_NMODES][4][4][4*4*4];
 extern int OD_PRED_MULTS_4x4[OD_INTRA_NMODES][4][4];
 extern int OD_PRED_PARAMX_4x4[OD_INTRA_NMODES][4][4][4*4*4];