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; } From patchwork Fri Jul 10 21:01:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20952 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 6945C44AB4A for ; Sat, 11 Jul 2020 00:02:16 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 51D8068A188; Sat, 11 Jul 2020 00:02:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f68.google.com (mail-qv1-f68.google.com [209.85.219.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B40F968925C for ; Sat, 11 Jul 2020 00:02:07 +0300 (EEST) Received: by mail-qv1-f68.google.com with SMTP id dm12so3240198qvb.9 for ; Fri, 10 Jul 2020 14:02:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=dH5gIaOiS0epYc9X9woWj1MjmVYdHiNsUBIRnhFIqoU=; b=arDAAKJIEaz0HzzOnX2xfzme5ux5WZpY5WlTBoTNCZvEcZhb0TbCoRQBAhoizxW4ND I85+EGBMXwP+0ntxmuTqYA+EXj8UI94FPusKZlbXk1RkOuHPnISmbe2uITw0/S77ERQH vuuZROVDzXNJthMCBZ2HtfDvgBNAV+Ui5+CwPiaj0V5TrzC2F6SwWsdR/CZw+S4Vepu4 MTZ69msJe1/BrLbkyDZWuKnRzUj834CU1EbacARTUVSEXAuJ7vBTtQjEQagJDOjhpMbx xIuea5MGdnLneBIDvZiclc6CLYrH9wga/PqLuOLLaDgICDMrvr3LXD5e84cw0T5BP/BP PYlQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=dH5gIaOiS0epYc9X9woWj1MjmVYdHiNsUBIRnhFIqoU=; b=mPwPZTMOgrGV5sHXR2AOsLmssrgrkVrlhp7zhCtm8wnX8HfAWlFLJo8A19xlyhN79W bqoIZg0jcNUTEYwwJG9FKNsgC/vWUNjjxyYYDyHm7z9e2NhWMgqjyLX/I0hci1da9cba ph4S2elRV7JDqY7UUuYiRdui2WKIEKHXdjUYq/f6fVOvD1NoIW0rZkyrp6yJogaqP/T2 Dbfh1mw6Xt1hiyvx4DOewYQFlC57joKeOeslJcY4MdfNCVmgd1i7qdXJZnwLiP/WAPUq xVwxk5VLMe8RwkfLjpZL9gCUt/8iFgbohfk5B82VLE+d9ry8FfbWne/9zq91MztpN0+z rMLQ== X-Gm-Message-State: AOAM533q5XCQ9P8rjEcjX2uD9AjkT5KKvrDqJ3hMgEkRtHFonfhYiUuk CbcPbsKNO7AM7A+F4FGgnlHS3qnV X-Google-Smtp-Source: ABdhPJzrdU4tuhekFCOB1rlWWzKIXjX8Ar4ZJETj+jwjN3UTbyz7kkT8KZjPD4yGZHln8GfzuY2lsw== X-Received: by 2002:a0c:bd2c:: with SMTP id m44mr71462709qvg.195.1594414925823; Fri, 10 Jul 2020 14:02:05 -0700 (PDT) Received: from localhost.localdomain ([191.84.244.216]) by smtp.gmail.com with ESMTPSA id w18sm8679346qtn.3.2020.07.10.14.02.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2020 14:02:05 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 10 Jul 2020 18:01:48 -0300 Message-Id: <20200710210149.6969-2-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200710210149.6969-1-jamrial@gmail.com> References: <20200710210149.6969-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/libx264: check for param allocation failure error code 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" And return the proper AVERROR value. Signed-off-by: James Almer --- libavcodec/libx264.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 4a82e1ba25..b39b89b565 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -529,6 +529,12 @@ static int parse_opts(AVCodecContext *avctx, const char *opt, const char *param) av_log(avctx, AV_LOG_ERROR, "bad option '%s': '%s'\n", opt, param); ret = AVERROR(EINVAL); +#if X264_BUILD >= 161 + } else if (ret == X264_PARAM_ALLOC_FAILED) { + av_log(avctx, AV_LOG_ERROR, + "out of memory parsing option '%s': '%s'\n", opt, param); + ret = AVERROR(ENOMEM); +#endif } else { av_log(avctx, AV_LOG_ERROR, "bad value for '%s': '%s'\n", opt, param); @@ -914,10 +920,13 @@ FF_ENABLE_DEPRECATION_WARNINGS { AVDictionaryEntry *en = NULL; while (en = av_dict_get(x4->x264_params, "", en, AV_DICT_IGNORE_SUFFIX)) { - if (x264_param_parse(&x4->params, en->key, en->value) < 0) + if ((ret = x264_param_parse(&x4->params, en->key, en->value)) < 0) { av_log(avctx, AV_LOG_WARNING, "Error parsing option '%s = %s'.\n", en->key, en->value); + if (ret == X264_PARAM_ALLOC_FAILED) + return AVERROR(ENOMEM); + } } } From patchwork Fri Jul 10 21:01:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20953 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 7BDA144AB4A for ; Sat, 11 Jul 2020 00:02:17 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 62B5D68A370; Sat, 11 Jul 2020 00:02:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f67.google.com (mail-qv1-f67.google.com [209.85.219.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 591DA689AE3 for ; Sat, 11 Jul 2020 00:02:09 +0300 (EEST) Received: by mail-qv1-f67.google.com with SMTP id m8so3232431qvk.7 for ; Fri, 10 Jul 2020 14:02:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=74bNXnQ9jCFCBLKrO+88z9ZFDPEETnWaNutVZMpuVDU=; b=qNA4CVJpQeYSglpvvAolz+CvsneWDr594Sx0nLFFiFlx7VzUgCmXP2SWKx5oEHFXD0 vADo+qnNvOFOIb9w6dRdjmTHwimt8EvcgN0IZLpX0VTHQ8WU/CrnjG10B2qGzgHKQQ87 FqGsv+SNSgp4L1AWuNf6i294GqbPao+2BQ6THtOKjZpm5+RxNLe95YIJW4Nn1UP1Tnj2 6A+s7PI3XfBghHaql89ISEgWj2SM9zwNdwlYkmTO237YttjGltHxK7v4Q2ezfeFkzUYt ILny1iFl1cxRPDV14DSTVf6pJbmX5EXCwsEhxMbQIcKwxsNbg7WosnD6NQiW7SYs0K6x MfhQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=74bNXnQ9jCFCBLKrO+88z9ZFDPEETnWaNutVZMpuVDU=; b=e/J613EXA1FeT3lob1bIKHhZ+kKQRrAlkWZ43R9iczYhxSW1KpOc8+7f2UPwFp+0h5 /jFj9zFydMDF23DRJ+uImMud4T2Wg1A3FZzx/nqWmPPKt3uU1ZCrgNuOidS9WrwUzYLf 26nJeCD2W4Sx2hGfNe77LK1+MmJvfB8hpuFmTdkeVukCTJHfNVsN1n4s2fsxHROOPNyZ JRDlWtZn9bB+TDRef6K2XTKAGciO34gEcDJuacGXT0xHpKWVTlVsAmi9YazB1ASJQCfs pCE5v3/bP16ExqL7c4gHmSpK5DqCQOuoUwRbSfUyqI7MfgMRrW1/OsXFI95Fdvnfs/Vr 9Mzw== X-Gm-Message-State: AOAM533aLp1dpT36nMcF55eFdbNKn/Xxl99LUVtfdhb5hegE/QXt2jpf IwpCBr9z8ckfvREKIu3B0ViWk9wg X-Google-Smtp-Source: ABdhPJxuUiGW4vEa+vCmnvaYl/S2nWe+7nMzRP26xesPTVMJ1DmRVp3CJYPbOSbSPBhCJ1GJxPrq5Q== X-Received: by 2002:a0c:f0c8:: with SMTP id d8mr71174068qvl.217.1594414927322; Fri, 10 Jul 2020 14:02:07 -0700 (PDT) Received: from localhost.localdomain ([191.84.244.216]) by smtp.gmail.com with ESMTPSA id w18sm8679346qtn.3.2020.07.10.14.02.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2020 14:02:06 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 10 Jul 2020 18:01:49 -0300 Message-Id: <20200710210149.6969-3-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200710210149.6969-1-jamrial@gmail.com> References: <20200710210149.6969-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/libx264: call x264_param_cleanup() if available 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" The documentation states it should be used to free any memory allocated by x264_param_parse(). Signed-off-by: James Almer --- libavcodec/libx264.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index b39b89b565..0c30bfe895 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -511,6 +511,10 @@ static av_cold int X264_close(AVCodecContext *avctx) av_freep(&x4->sei); av_freep(&x4->reordered_opaque); +#if X264_BUILD >= 161 + x264_param_cleanup(&x4->params); +#endif + if (x4->enc) { x264_encoder_close(x4->enc); x4->enc = NULL;