lavfi/dnn: check the return value from sws_getContext
sws_getContext may be return NULL, and it's will be dereferenced, so add the check. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
This commit is contained in:
		
							parent
							
								
									ae2075265b
								
							
						
					
					
						commit
						0320dab265
					
				| @ -41,6 +41,13 @@ DNNReturnType proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_ | |||||||
|                                  frame->height, |                                  frame->height, | ||||||
|                                  AV_PIX_FMT_GRAY8, |                                  AV_PIX_FMT_GRAY8, | ||||||
|                                  0, NULL, NULL, NULL); |                                  0, NULL, NULL, NULL); | ||||||
|  |         if (!sws_ctx) { | ||||||
|  |             av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion " | ||||||
|  |                 "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n", | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32), frame->width * 3, frame->height, | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAY8),   frame->width * 3, frame->height); | ||||||
|  |             return DNN_ERROR; | ||||||
|  |         } | ||||||
|         sws_scale(sws_ctx, (const uint8_t *[4]){(const uint8_t *)output->data, 0, 0, 0}, |         sws_scale(sws_ctx, (const uint8_t *[4]){(const uint8_t *)output->data, 0, 0, 0}, | ||||||
|                            (const int[4]){frame->width * 3 * sizeof(float), 0, 0, 0}, 0, frame->height, |                            (const int[4]){frame->width * 3 * sizeof(float), 0, 0, 0}, 0, frame->height, | ||||||
|                            (uint8_t * const*)frame->data, frame->linesize); |                            (uint8_t * const*)frame->data, frame->linesize); | ||||||
| @ -64,6 +71,13 @@ DNNReturnType proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_ | |||||||
|                                  frame->height, |                                  frame->height, | ||||||
|                                  AV_PIX_FMT_GRAY8, |                                  AV_PIX_FMT_GRAY8, | ||||||
|                                  0, NULL, NULL, NULL); |                                  0, NULL, NULL, NULL); | ||||||
|  |         if (!sws_ctx) { | ||||||
|  |             av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion " | ||||||
|  |                 "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n", | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32), frame->width, frame->height, | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAY8),   frame->width, frame->height); | ||||||
|  |             return DNN_ERROR; | ||||||
|  |         } | ||||||
|         sws_scale(sws_ctx, (const uint8_t *[4]){(const uint8_t *)output->data, 0, 0, 0}, |         sws_scale(sws_ctx, (const uint8_t *[4]){(const uint8_t *)output->data, 0, 0, 0}, | ||||||
|                            (const int[4]){frame->width * sizeof(float), 0, 0, 0}, 0, frame->height, |                            (const int[4]){frame->width * sizeof(float), 0, 0, 0}, 0, frame->height, | ||||||
|                            (uint8_t * const*)frame->data, frame->linesize); |                            (uint8_t * const*)frame->data, frame->linesize); | ||||||
| @ -97,6 +111,13 @@ DNNReturnType proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_c | |||||||
|                                  frame->height, |                                  frame->height, | ||||||
|                                  AV_PIX_FMT_GRAYF32, |                                  AV_PIX_FMT_GRAYF32, | ||||||
|                                  0, NULL, NULL, NULL); |                                  0, NULL, NULL, NULL); | ||||||
|  |         if (!sws_ctx) { | ||||||
|  |             av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion " | ||||||
|  |                 "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n", | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAY8),  frame->width * 3, frame->height, | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32),frame->width * 3, frame->height); | ||||||
|  |             return DNN_ERROR; | ||||||
|  |         } | ||||||
|         sws_scale(sws_ctx, (const uint8_t **)frame->data, |         sws_scale(sws_ctx, (const uint8_t **)frame->data, | ||||||
|                            frame->linesize, 0, frame->height, |                            frame->linesize, 0, frame->height, | ||||||
|                            (uint8_t * const*)(&input->data), |                            (uint8_t * const*)(&input->data), | ||||||
| @ -121,6 +142,13 @@ DNNReturnType proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_c | |||||||
|                                  frame->height, |                                  frame->height, | ||||||
|                                  AV_PIX_FMT_GRAYF32, |                                  AV_PIX_FMT_GRAYF32, | ||||||
|                                  0, NULL, NULL, NULL); |                                  0, NULL, NULL, NULL); | ||||||
|  |         if (!sws_ctx) { | ||||||
|  |             av_log(log_ctx, AV_LOG_ERROR, "Impossible to create scale context for the conversion " | ||||||
|  |                 "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n", | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAY8),  frame->width, frame->height, | ||||||
|  |                 av_get_pix_fmt_name(AV_PIX_FMT_GRAYF32),frame->width, frame->height); | ||||||
|  |             return DNN_ERROR; | ||||||
|  |         } | ||||||
|         sws_scale(sws_ctx, (const uint8_t **)frame->data, |         sws_scale(sws_ctx, (const uint8_t **)frame->data, | ||||||
|                            frame->linesize, 0, frame->height, |                            frame->linesize, 0, frame->height, | ||||||
|                            (uint8_t * const*)(&input->data), |                            (uint8_t * const*)(&input->data), | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user