diff options
author | Jeff Downs <heydowns@borg.com> | 2007-11-07 23:35:48 +0000 |
---|---|---|
committer | Jeff Downs <heydowns@borg.com> | 2007-11-07 23:35:48 +0000 |
commit | ad426590d8b713757cbd47c9e18d16f7375c3a21 (patch) | |
tree | b63d3c969f5181e128299f59a2cc4b0f640012b2 /libavcodec/h264.c | |
parent | 85f601ee7b0236cdb0ad5f4db8aad76dc34b813c (diff) | |
download | ffmpeg-streaming-ad426590d8b713757cbd47c9e18d16f7375c3a21.zip ffmpeg-streaming-ad426590d8b713757cbd47c9e18d16f7375c3a21.tar.gz |
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
Diffstat (limited to 'libavcodec/h264.c')
-rw-r--r-- | libavcodec/h264.c | 3 |
1 files changed, 2 insertions, 1 deletions
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); |