You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	vf_colorspace: don't enable passthrough if bitdepth doesn't match.
Also check return value of av_frame_copy() in passthrough mode, so that if a copy fails (as it did here, because bitdepth didn't match), the filter doesn't return success, which would mean sending an uninitialized framebuffer further down the filtergraph.
This commit is contained in:
		| @@ -719,7 +719,8 @@ static int create_filtergraph(AVFilterContext *ctx, | ||||
|     s->yuv2yuv_fastmode = s->rgb2rgb_passthrough && fmt_identical; | ||||
|     s->yuv2yuv_passthrough = s->yuv2yuv_fastmode && s->in_rng == s->out_rng && | ||||
|                              !memcmp(s->in_lumacoef, s->out_lumacoef, | ||||
|                                      sizeof(*s->in_lumacoef)); | ||||
|                                      sizeof(*s->in_lumacoef)) && | ||||
|                              in_desc->comp[0].depth == out_desc->comp[0].depth; | ||||
|     if (!s->yuv2yuv_passthrough) { | ||||
|         if (redo_yuv2rgb) { | ||||
|             double rgb2yuv[3][3], (*yuv2rgb)[3] = s->yuv2rgb_dbl_coeffs; | ||||
| @@ -937,7 +938,9 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) | ||||
|     td.in_ss_h = av_pix_fmt_desc_get(in->format)->log2_chroma_h; | ||||
|     td.out_ss_h = av_pix_fmt_desc_get(out->format)->log2_chroma_h; | ||||
|     if (s->yuv2yuv_passthrough) { | ||||
|         av_frame_copy(out, in); | ||||
|         res = av_frame_copy(out, in); | ||||
|         if (res < 0) | ||||
|             return res; | ||||
|     } else { | ||||
|         ctx->internal->execute(ctx, convert, &td, NULL, | ||||
|                                FFMIN((in->height + 1) >> 1, ctx->graph->nb_threads)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user