From patchwork Wed Mar 23 15:57:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 34936 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:ab0:5fda:0:0:0:0:0 with SMTP id g26csp922049uaj; Wed, 23 Mar 2022 08:57:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxOWfe8lzIsQWKemhbjzaI6FBsGvy8HD3icmjSZru2nqM6FdoRBjRhXjTo0GqkrfWmODljx X-Received: by 2002:a05:6402:1255:b0:419:3808:3d98 with SMTP id l21-20020a056402125500b0041938083d98mr983823edw.134.1648051067784; Wed, 23 Mar 2022 08:57:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648051067; cv=none; d=google.com; s=arc-20160816; b=dsH4/pQf7BPM25y+lJ/EiwmL7fPoi89C2vJSZEsZvmgLYS0g/h+Dg6q22hRWrI70eV ZpFiXEKvVxs88w4r+PN65AoyP5vEudY0+1aQXGY7iVjUT1UkWKPooCGC99sPalJZ7R1m 5KX0uTDay/2Vz4yWdAqAFY1QCCJ35Pmql9IrcFEp5I2v4/1sYBGjBMxfOZRWeJ5QYAWr 6hHSau9VpGKYglZi8W1jELYkHID6xYRU4UeUVYCEa/+x40fH+mdp8/1O7Ef7aoq4ocXD hSQqs1qeHe/Bo4Sj6yItecr6Tec6mNl1leE3BcSaqNL9tA8kWH23aYU6iTndCBiaiE2L aNPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=twNJuILOPa7efr+n16ruHZbBPR/L8zsr+3Qukekqs0Y=; b=gI8l3v5a0IOkRyLjfM3mfOqTQWa9FIpuw/fqI2o7EdFPOfwTWQInygb/yWl8DH7nF4 /4ivhGw1dAMeKGzxzjlN7bWkQ0ZIeMy5OT7baSC/nJbfCXebTLW08vBY7eCulA9De7SF L8a5Hftc4L3Ivlvqu+Ct4p9ZPFH305lF2qDmAKmyTR/QEb0XU0okfK4dPefSEeCeUd3y 2XnVKcMmR+6usYWbj6DuTKP5T/Gzig3d3HGgXiiMBMu+i3bYlgOXWMGQD36fSnnuBsXM Rf5CQ5vhksV1iisCSst3NfFth3pgxitZfBz/Iy9lzclVEZqv5+xsHYCTGDB0h8wlIrCa 067g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u5-20020a509505000000b00418c2b5bed4si15182450eda.438.2022.03.23.08.57.46; Wed, 23 Mar 2022 08:57:47 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 97C9168B155; Wed, 23 Mar 2022 17:57:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5736468B03F for ; Wed, 23 Mar 2022 17:57:36 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id C75A2240511 for ; Wed, 23 Mar 2022 16:57:35 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id DQTh5vDT3X9P for ; Wed, 23 Mar 2022 16:57:34 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 923FC240179 for ; Wed, 23 Mar 2022 16:57:34 +0100 (CET) Received: by libav.khirnov.net (Postfix, from userid 1000) id 90F833A0406; Wed, 23 Mar 2022 16:57:34 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 23 Mar 2022 16:57:13 +0100 Message-Id: <20220323155720.20017-1-anton@khirnov.net> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/8] lavc/avcodec: simplify codec id/type validity checking X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: web93oRaMYfn On entry to avcodec_open2(), the type and id either have to be UNKNOWN/NONE or have to match the codec to be used. --- libavcodec/avcodec.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index fbe4a5e413..dbaa9f78a2 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -158,17 +158,15 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code codec = avctx->codec; codec2 = ffcodec(codec); - if ((avctx->codec_type == AVMEDIA_TYPE_UNKNOWN || avctx->codec_type == codec->type) && - avctx->codec_id == AV_CODEC_ID_NONE) { - avctx->codec_type = codec->type; - avctx->codec_id = codec->id; - } - if (avctx->codec_id != codec->id || (avctx->codec_type != codec->type && - avctx->codec_type != AVMEDIA_TYPE_ATTACHMENT)) { + if ((avctx->codec_type != AVMEDIA_TYPE_UNKNOWN && avctx->codec_type != codec->type) || + (avctx->codec_id != AV_CODEC_ID_NONE && avctx->codec_id != codec->id)) { av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n"); return AVERROR(EINVAL); } - avctx->codec = codec; + + avctx->codec_type = codec->type; + avctx->codec_id = codec->id; + avctx->codec = codec; if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE) return AVERROR(EINVAL);