[SCM] libav/experimental: Fix deblocking filter for field pictures by properly looking for first row in bottom fields and preventing the use of "fast" deblocking for such.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:09:09 UTC 2013


The following commit has been merged in the experimental branch:
commit ad426590d8b713757cbd47c9e18d16f7375c3a21
Author: Jeff Downs <heydowns at borg.com>
Date:   Wed Nov 7 23:35:48 2007 +0000

    Fix deblocking filter for field pictures by properly looking for first
    row in bottom fields and preventing the use of "fast" deblocking for such.
    
    Originally committed as revision 10950 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 2be6753..70de4cf 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -6371,12 +6371,13 @@ static void filter_mb_edgech( H264Context *h, uint8_t *pix, int stride, int16_t
 
 static void filter_mb_fast( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize) {
     MpegEncContext * const s = &h->s;
+    int mb_y_firstrow = s->picture_structure == PICT_BOTTOM_FIELD;
     int mb_xy, mb_type;
     int qp, qp0, qp1, qpc, qpc0, qpc1, qp_thresh;
 
     mb_xy = mb_x + mb_y*s->mb_stride;
 
-    if(mb_x==0 || mb_y==0 || !s->dsp.h264_loop_filter_strength || h->pps.chroma_qp_diff ||
+    if(mb_x==0 || mb_y==mb_y_firstrow || !s->dsp.h264_loop_filter_strength || h->pps.chroma_qp_diff ||
        (h->deblocking_filter == 2 && (h->slice_table[mb_xy] != h->slice_table[h->top_mb_xy] ||
                                       h->slice_table[mb_xy] != h->slice_table[mb_xy - 1]))) {
         filter_mb(h, mb_x, mb_y, img_y, img_cb, img_cr, linesize, uvlinesize);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list