mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
vf_interlace: use image width rather than linesize
Based on a patch by Michael Niedermayer <michaelni@gmx.at>.
This commit is contained in:
parent
fe08299868
commit
696141e898
@ -131,16 +131,17 @@ static void copy_picture_field(InterlaceContext *s,
|
||||
int lowpass)
|
||||
{
|
||||
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
|
||||
int hsub = desc->log2_chroma_w;
|
||||
int vsub = desc->log2_chroma_h;
|
||||
int plane, j;
|
||||
|
||||
for (plane = 0; plane < desc->nb_components; plane++) {
|
||||
int cols = (plane == 1 || plane == 2) ? -(-inlink->w) >> hsub : inlink->w;
|
||||
int lines = (plane == 1 || plane == 2) ? -(-inlink->h) >> vsub : inlink->h;
|
||||
ptrdiff_t linesize = av_image_get_linesize(inlink->format, inlink->w, plane);
|
||||
uint8_t *dstp = dst_frame->data[plane];
|
||||
const uint8_t *srcp = src_frame->data[plane];
|
||||
|
||||
av_assert0(linesize >= 0);
|
||||
av_assert0(cols >= 0);
|
||||
|
||||
lines = (lines + (field_type == FIELD_UPPER)) / 2;
|
||||
if (field_type == FIELD_LOWER)
|
||||
@ -157,14 +158,14 @@ static void copy_picture_field(InterlaceContext *s,
|
||||
srcp_above = srcp; // there is no line above
|
||||
if (j == 1)
|
||||
srcp_below = srcp; // there is no line below
|
||||
s->lowpass_line(dstp, linesize, srcp, srcp_above, srcp_below);
|
||||
s->lowpass_line(dstp, cols, srcp, srcp_above, srcp_below);
|
||||
dstp += dstp_linesize;
|
||||
srcp += srcp_linesize;
|
||||
}
|
||||
} else {
|
||||
av_image_copy_plane(dstp, dst_frame->linesize[plane] * 2,
|
||||
srcp, src_frame->linesize[plane] * 2,
|
||||
linesize, lines);
|
||||
cols, lines);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user