From patchwork Fri Jul 10 21:01:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20951 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 4E3B844AB4A for ; Sat, 11 Jul 2020 00:02:13 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2904168A039; Sat, 11 Jul 2020 00:02:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f195.google.com (mail-qt1-f195.google.com [209.85.160.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6C5376880E0 for ; Sat, 11 Jul 2020 00:02:06 +0300 (EEST) Received: by mail-qt1-f195.google.com with SMTP id j10so5537159qtq.11 for ; Fri, 10 Jul 2020 14:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=fGoegrpKa17/e3xMm8GmNuPaSxZ4cdfYVALP69nDGf8=; b=Bo7+lt+fqIQXcjv9q21o8Ges+vlDjUTEr9kz9cEo3yubdEIcgpjp5EJvPEcLf5Fm9q RWv5WblABtVaPcBKZoZxJ+PvLJkuD674UWUDVP1O+GXsipP6RarztMNAnReO9GsSHnzU lVOjf9sEINkRSzNr9yuYziXXYI/VSEG+mkLqf6wU+FtdL0UQwOqwbUWKM1OBvVcbU5Qo LElEgoIODenS0nLlp4iDwTKbolqruFuZmpjHKhftW+RsoAiTOlRP0UBf1IJQRmXsdH6m IXWE+NxZE3ije87NI5Hwk+um8O8/cUUceEdGsYZLtIo+b8oNZXQbadD6bxHFb4K2OXsc Q/SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=fGoegrpKa17/e3xMm8GmNuPaSxZ4cdfYVALP69nDGf8=; b=Sxoyn/DRKbhsFKtLrZFYoG7/eATMPS6+h2cXqnuUyjb+2epJ4pQhzplEc/amBG6lKk pH2m07Q3BROJPbgvpDdQJbJpVtqRoP3rEsJC6wS9VfJ9yfP4KoeqPNoycF0qR3eGHyfZ UW+pJ6kXAVYqtDNDu7zfUey5Z7exWK55KnPcBidUd/rFsSnmgLKYG8JsoC9Z8Oophf/+ N9pLGWCXd7i2EWZfURvrIZ6Lqvj0tR8w4Wj5tqNEat0m0m02cN6C9/X8RggWTH7KExEt nFzhL4d1uD0bPywFmFQyqI1xetBjm1jAKWPVmukDOFZW8/by3z5904LQi9cvIeq2HKus 32vA== X-Gm-Message-State: AOAM533ww9Ae4R+TRvecN/LZzlkbtsjtLbtC86ShzpGdH+fYw2Kd0PWM UmXgYIRKJZXsVBqen3FlrQAUi85X X-Google-Smtp-Source: ABdhPJxFfvAplWHgqouzTeT1MPszEt8vO8IR4IackWjQ1j8SvLJzAkRPBiOisydJYFfsPqwgELcd7Q== X-Received: by 2002:ac8:d86:: with SMTP id s6mr44578866qti.343.1594414924281; Fri, 10 Jul 2020 14:02:04 -0700 (PDT) Received: from localhost.localdomain ([191.84.244.216]) by smtp.gmail.com with ESMTPSA id w18sm8679346qtn.3.2020.07.10.14.02.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2020 14:02:03 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 10 Jul 2020 18:01:47 -0300 Message-Id: <20200710210149.6969-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/libx264: use a function to parse x264opts 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is needed for the following patch. Signed-off-by: James Almer --- libavcodec/libx264.c | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index d4b1fd0d53..4a82e1ba25 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -519,19 +519,25 @@ static av_cold int X264_close(AVCodecContext *avctx) return 0; } -#define OPT_STR(opt, param) \ - do { \ - int ret; \ - if ((ret = x264_param_parse(&x4->params, opt, param)) < 0) { \ - if(ret == X264_PARAM_BAD_NAME) \ - av_log(avctx, AV_LOG_ERROR, \ - "bad option '%s': '%s'\n", opt, param); \ - else \ - av_log(avctx, AV_LOG_ERROR, \ - "bad value for '%s': '%s'\n", opt, param); \ - return -1; \ - } \ - } while (0) +static int parse_opts(AVCodecContext *avctx, const char *opt, const char *param) +{ + X264Context *x4 = avctx->priv_data; + int ret; + + if ((ret = x264_param_parse(&x4->params, opt, param)) < 0) { + if (ret == X264_PARAM_BAD_NAME) { + av_log(avctx, AV_LOG_ERROR, + "bad option '%s': '%s'\n", opt, param); + ret = AVERROR(EINVAL); + } else { + av_log(avctx, AV_LOG_ERROR, + "bad value for '%s': '%s'\n", opt, param); + ret = AVERROR(EINVAL); + } + } + + return ret; +} static int convert_pix_fmt(enum AVPixelFormat pix_fmt) { @@ -581,6 +587,7 @@ static av_cold int X264_init(AVCodecContext *avctx) X264Context *x4 = avctx->priv_data; AVCPBProperties *cpb_props; int sw,sh; + int ret; if (avctx->global_quality > 0) av_log(avctx, AV_LOG_WARNING, "-qscale is ignored, -crf is recommended.\n"); @@ -890,9 +897,14 @@ FF_ENABLE_DEPRECATION_WARNINGS while(p){ char param[4096]={0}, val[4096]={0}; if(sscanf(p, "%4095[^:=]=%4095[^:]", param, val) == 1){ - OPT_STR(param, "1"); - }else - OPT_STR(param, val); + ret = parse_opts(avctx, param, "1"); + if (ret < 0) + return ret; + } else { + ret = parse_opts(avctx, param, val); + if (ret < 0) + return ret; + } p= strchr(p, ':'); p+=!!p; }