From patchwork Sat Jun 13 15:06:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 20331 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 28A3A449F85 for ; Sat, 13 Jun 2020 18:06:22 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1052268B5C4; Sat, 13 Jun 2020 18:06:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3EB2868B5C3 for ; Sat, 13 Jun 2020 18:06:15 +0300 (EEST) Received: by mail-pg1-f194.google.com with SMTP id u5so5538048pgn.5 for ; Sat, 13 Jun 2020 08:06:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=RgkzJ3ITb5ZI9SV1H6aNAlv3j2W9pimEOqFd11gNNOA=; b=iBcR/0a/c2aI8MaNzssqfiy21KAf2GbH3E01KuKGftfgHR+XSOGmbtUn+VGL/FxP5X jzvnkYJNOq0fYIfMd/Yrwwwge+dJu0i8aZOwIj5CuJiS6zTH7ezyrRBOluRoykYzRHaT ES1vnPKaVjJFqXtclOr4ufYMShTxxCWqvHYARrTID3obNXI3rj/FGZemPkRiC2/JG5Kc iGhG23y/R9E4fnIslkvgme/WOzKo2BODEwleXXdi1JFxafkfmQhWv2/Lo26qWgXqcRtm lPdXtmZSbe9eoge9zZSVhgxyh5N1Vw06IlUqsHge2VPkIEpXpx/S0UimmNCH/G5GEuzp 7dSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=RgkzJ3ITb5ZI9SV1H6aNAlv3j2W9pimEOqFd11gNNOA=; b=eBwnaXN0ELr6wnYrpm4nSBVykPy6rlR21Ejg8hm6owPuKIT2O9IEUS+9CfXtaQK0Sp 1ew6or7tWldQH67l8k035RTXwftZCLqqqOij1suBWaPjh9qOnXMkvoX6D970XT7jWjjD Cj3PLXYe0s6KZ2dGC9oYTJ1oYoIvMkG3vpBhQPQswIhd2E5CwSekgqfWyP5zsTFM+emq nCPySORnDKtTUWNBwXoWYYM0Vf5QVygU+Pa9SNiJGPJWYT2FdKijZOWbFQKy2HnhxU16 wNGH9nC/XCrhVUs9llYX3zQtHajMqkR1z+imYhZb3cjxxDkn2kO05InDQd4FFd1E+VlQ 3NMw== X-Gm-Message-State: AOAM533xT5ka9525nS8uWzLJ7iEmFwDvZkL+9zHCjgc59HA4OQdAkaPD kdNPdJN1QChmHH3KnaHVsvyL5a95 X-Google-Smtp-Source: ABdhPJxzUdCGiLdPKsXn0vP/cTCAgHSXYbqkDpXxIaf/ab4z+vLGir6sERgmyAfu1lwCgptkFuOtJw== X-Received: by 2002:a62:3806:: with SMTP id f6mr16263528pfa.102.1592060772404; Sat, 13 Jun 2020 08:06:12 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id h12sm8082199pgj.71.2020.06.13.08.06.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 13 Jun 2020 08:06:11 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Sat, 13 Jun 2020 23:06:06 +0800 Message-Id: <1592060766-3546-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 Subject: [FFmpeg-devel] [PATCH 2/4] swscale/utils: return better error code from initFilter() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libswscale/utils.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/libswscale/utils.c b/libswscale/utils.c index 6e218ba..dcd1dba 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -612,7 +612,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t **filterPos, av_assert0(filterSize > 0); filter = av_malloc_array(dstW, filterSize * sizeof(*filter)); if (!filter) - goto fail; + goto nomem; if (filterSize >= MAX_FILTER_SIZE * 16 / ((flags & SWS_ACCURATE_RND) ? APCK_SIZE : 16)) { ret = RETCODE_USE_CASCADE; @@ -1491,7 +1491,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, srcW, srcH, tmpFmt, flags, NULL, NULL, c->param); if (!c->cascaded_context[0]) { - return -1; + return AVERROR(ENOMEM); } c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFmt, @@ -1499,7 +1499,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, flags, srcFilter, dstFilter, c->param); if (!c->cascaded_context[1]) - return -1; + return AVERROR(ENOMEM); c2 = c->cascaded_context[1]; c2->is_internal_gamma = 1; @@ -1512,10 +1512,10 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, // to properly create the gamma convert FilterDescriptor // we have to re-initialize it ff_free_filters(c2); - if (ff_init_filters(c2) < 0) { + if ((ret = ff_init_filters(c2)) < 0) { sws_freeContext(c2); c->cascaded_context[1] = NULL; - return -1; + return ret; } c->cascaded_context[2] = NULL; @@ -1529,7 +1529,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, dstW, dstH, dstFormat, flags, NULL, NULL, c->param); if (!c->cascaded_context[2]) - return -1; + return AVERROR(ENOMEM); } return 0; } @@ -1548,13 +1548,13 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, srcW, srcH, tmpFormat, flags, srcFilter, NULL, c->param); if (!c->cascaded_context[0]) - return -1; + return AVERROR(ENOMEM); c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFormat, dstW, dstH, dstFormat, flags, NULL, dstFilter, c->param); if (!c->cascaded_context[1]) - return -1; + return AVERROR(ENOMEM); return 0; } } @@ -1591,7 +1591,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, srcW, srcH, tmpFormat, flags, c->param); if (!c->cascaded_context[0]) - return -1; + return AVERROR(EINVAL); c->cascaded_context[0]->alphablend = c->alphablend; ret = sws_init_context(c->cascaded_context[0], NULL , NULL); if (ret < 0) @@ -1601,7 +1601,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, dstW, dstH, dstFormat, flags, c->param); if (!c->cascaded_context[1]) - return -1; + return AVERROR(EINVAL); c->cascaded_context[1]->srcRange = c->srcRange; c->cascaded_context[1]->dstRange = c->dstRange; @@ -1678,6 +1678,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, if ( mprotect(c->lumMmxextFilterCode, c->lumMmxextFilterCodeSize, PROT_EXEC | PROT_READ) == -1 || mprotect(c->chrMmxextFilterCode, c->chrMmxextFilterCodeSize, PROT_EXEC | PROT_READ) == -1) { av_log(c, AV_LOG_ERROR, "mprotect failed, cannot use fast bilinear scaler\n"); + ret = AVERROR(EINVAL); goto fail; } #endif @@ -1870,16 +1871,16 @@ fail: // FIXME replace things by appropriate error codes tmpW, tmpH, tmpFormat, flags, srcFilter, NULL, c->param); if (!c->cascaded_context[0]) - return -1; + return AVERROR(ENOMEM); c->cascaded_context[1] = sws_getContext(tmpW, tmpH, tmpFormat, dstW, dstH, dstFormat, flags, NULL, dstFilter, c->param); if (!c->cascaded_context[1]) - return -1; + return AVERROR(ENOMEM); return 0; } - return -1; + return ret; } SwsContext *sws_alloc_set_opts(int srcW, int srcH, enum AVPixelFormat srcFormat,