summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Downs <heydowns@borg.com>2007-11-07 23:35:48 +0000
committerJeff Downs <heydowns@borg.com>2007-11-07 23:35:48 +0000
commitad426590d8b713757cbd47c9e18d16f7375c3a21 (patch)
treeb63d3c969f5181e128299f59a2cc4b0f640012b2
parent85f601ee7b0236cdb0ad5f4db8aad76dc34b813c (diff)
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
-rw-r--r--libavcodec/h264.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 2be67536d0..70de4cfe48 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);