mirror of https://git.ffmpeg.org/ffmpeg.git
vf_fade: Make sure to not miss the last lines of a frame
When slice_h is rounded up due to chroma subsampling, there's a risk that jobnr * slice_h exceeds frame->height. Prior toa638e9184d
, this wasn't an issue for the last slice of a frame, since slice_end was set to frame->height for the last slice.a638e9184d
tried to fix the case where other slices than the last one would exceed frame->height (which can happen where the number of slices/threads is very large compared to the frame height). However, the fix ina638e9184d
instead broke other cases, where slice_h * nb_threads < frame->height. Therefore, make sure the last slice always ends at frame->height. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
d00a0d8e84
commit
8f5de34c8f
|
@ -123,7 +123,8 @@ static int filter_slice_chroma(AVFilterContext *ctx, void *arg, int jobnr,
|
||||||
AVFrame *frame = arg;
|
AVFrame *frame = arg;
|
||||||
int slice_h = FFALIGN(frame->height / nb_jobs, 1 << s->vsub);
|
int slice_h = FFALIGN(frame->height / nb_jobs, 1 << s->vsub);
|
||||||
int slice_start = jobnr * slice_h;
|
int slice_start = jobnr * slice_h;
|
||||||
int slice_end = FFMIN((jobnr + 1) * slice_h, frame->height);
|
int slice_end = (jobnr == nb_jobs - 1) ? frame->height :
|
||||||
|
FFMIN((jobnr + 1) * slice_h, frame->height);
|
||||||
int i, j, plane;
|
int i, j, plane;
|
||||||
|
|
||||||
for (plane = 1; plane < 3; plane++) {
|
for (plane = 1; plane < 3; plane++) {
|
||||||
|
|
Loading…
Reference in New Issue