]> granicus.if.org Git - libx264/commitdiff
more hpel fixes
authorLoren Merritt <pengvado@akuvian.org>
Sun, 13 Apr 2008 16:29:15 +0000 (10:29 -0600)
committerLoren Merritt <pengvado@akuvian.org>
Sun, 13 Apr 2008 22:42:35 +0000 (16:42 -0600)
common/frame.c
common/x86/mc-c.c

index 4c4cc910def8828834a0faa6e6ff9369c28426a5..4fcf64895296761da70952890093402b577ca903 100644 (file)
@@ -237,19 +237,20 @@ void x264_frame_expand_border( x264_t *h, x264_frame_t *frame, int mb_y, int b_e
 
 void x264_frame_expand_border_filtered( x264_t *h, x264_frame_t *frame, int mb_y, int b_end )
 {
-    /* during filtering, 8 extra pixels were filtered on each edge. 
+    /* during filtering, 8 extra pixels were filtered on each edge,
+     * but up to 3 of the horizontal ones may be wrong. 
        we want to expand border from the last filtered pixel */
     int b_start = !mb_y;
     int stride = frame->i_stride[0];
-    int width = 16*h->sps->i_mb_width + 16;
+    int width = 16*h->sps->i_mb_width + 8;
     int height = b_end ? (16*(h->sps->i_mb_height - mb_y) >> h->sh.b_mbaff) + 16 : 16;
-    int padh = PADH - 8;
+    int padh = PADH - 4;
     int padv = PADV - 8;
     int i;
     for( i = 1; i < 4; i++ )
     {
         // buffer: 8 luma, to match the hpel filter
-        uint8_t *pix = frame->filtered[i] + (16*mb_y - (8 << h->sh.b_mbaff)) * stride - 8;
+        uint8_t *pix = frame->filtered[i] + (16*mb_y - (8 << h->sh.b_mbaff)) * stride - 4;
         if( h->sh.b_mbaff )
         {
             plane_expand_border( pix, stride*2, width, height, padh, padv, b_start, b_end );
index 356df36b24a56f426ed3d90d4cb7adbdc8cd3547..c2c2904d6f31a475602d3a26f85c17eceaf8c245 100644 (file)
@@ -178,7 +178,7 @@ void x264_hpel_filter_##cpu( uint8_t *dsth, uint8_t *dstv, uint8_t *dstc, uint8_
     dstc -= realign;\
     dsth -= realign;\
     width += realign;\
-    buf = x264_malloc(((width+2*align-1)&-align)*sizeof(int16_t));\
+    buf = x264_malloc((width+16)*sizeof(int16_t));\
     while( height-- )\
     {\
         x264_hpel_filter_v_##cpuv( dstv, src, buf+8, stride, width );\