forked from FFmpeg/FFmpeg
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
1 changed files with 28 additions and 0 deletions
|
@ -41,6 +41,13 @@ DNNReturnType proc_from_dnn_to_frame(AVFrame *frame, DNNData *output, void *log_
|
|||
frame->height,
|
||||
AV_PIX_FMT_GRAY8,
|
||||
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},
|
||||
(const int[4]){frame->width * 3 * sizeof(float), 0, 0, 0}, 0, frame->height,
|
||||
(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,
|
||||
AV_PIX_FMT_GRAY8,
|
||||
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},
|
||||
(const int[4]){frame->width * sizeof(float), 0, 0, 0}, 0, frame->height,
|
||||
(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,
|
||||
AV_PIX_FMT_GRAYF32,
|
||||
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,
|
||||
frame->linesize, 0, frame->height,
|
||||
(uint8_t * const*)(&input->data),
|
||||
|
@ -121,6 +142,13 @@ DNNReturnType proc_from_frame_to_dnn(AVFrame *frame, DNNData *input, void *log_c
|
|||
frame->height,
|
||||
AV_PIX_FMT_GRAYF32,
|
||||
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,
|
||||
frame->linesize, 0, frame->height,
|
||||
(uint8_t * const*)(&input->data),
|
||||
|
|
Loading…
Add table
Reference in a new issue