ffmpeg | branch: master | Michael Niedermayer <michae...@gmx.at> | Tue Jan 6 23:20:18 2015 +0100| [ac3f6429ba5b596406da12746659f1fb7c5b7b07] | committer: Michael Niedermayer
vfilter/vf_tinterlace: Fix issues with linesize and cols Based on patch by Vittorio Giovara <vittorio.giov...@gmail.com> from 696141e898193311c994b399a8dc60713709092f Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ac3f6429ba5b596406da12746659f1fb7c5b7b07 --- libavfilter/vf_tinterlace.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libavfilter/vf_tinterlace.c b/libavfilter/vf_tinterlace.c index c644895..f3411f9 100644 --- a/libavfilter/vf_tinterlace.c +++ b/libavfilter/vf_tinterlace.c @@ -197,20 +197,17 @@ void copy_picture_field(TInterlaceContext *tinterlace, int flags) { const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(format); + int hsub = desc->log2_chroma_w; int plane, vsub = desc->log2_chroma_h; int k = src_field == FIELD_UPPER_AND_LOWER ? 1 : 2; int h; for (plane = 0; plane < desc->nb_components; plane++) { int lines = plane == 1 || plane == 2 ? FF_CEIL_RSHIFT(src_h, vsub) : src_h; - int cols = plane == 1 || plane == 2 ? FF_CEIL_RSHIFT( w, desc->log2_chroma_w) : w; - int linesize = av_image_get_linesize(format, w, plane); + int cols = plane == 1 || plane == 2 ? FF_CEIL_RSHIFT( w, hsub) : w; uint8_t *dstp = dst[plane]; const uint8_t *srcp = src[plane]; - if (linesize < 0) - return; - lines = (lines + (src_field == FIELD_UPPER)) / k; if (src_field == FIELD_LOWER) srcp += src_linesize[plane]; @@ -234,7 +231,7 @@ void copy_picture_field(TInterlaceContext *tinterlace, } } else { av_image_copy_plane(dstp, dst_linesize[plane] * (interleave ? 2 : 1), - srcp, src_linesize[plane]*k, linesize, lines); + srcp, src_linesize[plane]*k, cols, lines); } } } _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog