[x264-devel] commit: more hpel fixes (Loren Merritt )

git version control git at videolan.org
Tue Apr 15 06:12:09 CEST 2008


x264 | branch: master | Loren Merritt <pengvado at akuvian.org> | Sun Apr 13 10:29:15 2008 -0600| [0414d78c3c44b3be7f3340d959aaaeb73e4b017a]

more hpel fixes

> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=0414d78c3c44b3be7f3340d959aaaeb73e4b017a
---

 common/frame.c    |    9 +++++----
 common/x86/mc-c.c |    2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/common/frame.c b/common/frame.c
index 4c4cc91..4fcf648 100644
--- a/common/frame.c
+++ b/common/frame.c
@@ -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 );
diff --git a/common/x86/mc-c.c b/common/x86/mc-c.c
index 356df36..c2c2904 100644
--- a/common/x86/mc-c.c
+++ b/common/x86/mc-c.c
@@ -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 );\



More information about the x264-devel mailing list