From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 7B1D242BE7 for ; Tue, 3 May 2022 00:09:22 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C792768B26E; Tue, 3 May 2022 03:09:19 +0300 (EEST) Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CBACD68B109 for ; Tue, 3 May 2022 03:09:13 +0300 (EEST) Received: by mail-wr1-f51.google.com with SMTP id x18so21426845wrc.0 for ; Mon, 02 May 2022 17:09:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:content-language:to:from :subject:content-transfer-encoding; bh=wgp7D6MOAfWbvb9Z4Z8NgjtkrraSsZ42DF3wawajkmI=; b=A2x0aOldBxFa1aR6KyDv5Vl8cJGy+CbOD4SH8L/Bz2Waufa8KrmF6MMmS2uUjeSvKD SZ7yXOV3ke2NhK4wC6jXfo+nmR2OCy2jBk5inJAgu9fJSowgFpmvhFrcc7vi0shOwO25 kWbEQi5yCmSqN0qqWbZVhDSzsjgUCV5s76AC+eJ4WCIV+geS9At/TSwfj7qkjMR4br2Y lbwldqYB0tsPmJrw3P6qAeICTkpPG96D5XDkvjxqXdOliMfCugvTgIAkMRX60MyyLDae VUFecRjnwB8BQyd/sAn++WKr9gN0vhgn5B6J4DSNqwvI2FSaSHOtjDJRsx26Ne2gSnF/ QYxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:from:subject:content-transfer-encoding; bh=wgp7D6MOAfWbvb9Z4Z8NgjtkrraSsZ42DF3wawajkmI=; b=0nBnz7FSIltZolGnSJjNpyR/SuhNQ/ce7jAAoG7c+jbjf2L7autcZzzSgQDVUSqk10 3xf2NC0uiDmFgqVgWpYuc4yshdhrV8dBYxtUF9tehyDBACZmH7HsjXG9WIjMC/jxCpvf SFd3T2ltJS06dkoXjEH8Z12lAuOM3yQKrEtp1AYdwKhMnoF0tu1qtnF9KngqIRuKLbJJ dNjlZ7LG7srVJdLqhCQuow4vVCy0jV1lb/fb6jxdEoSKO37wNtBPyj3JOAtyMpLYJxEd ryuv6ha4hp0q1arXl8fU1KTmVGnTVUDQExe82XuIdwduw6ONAvDJ1i9waAm/qRWX2Big uQHA== X-Gm-Message-State: AOAM533XpNUUK0ungoVzbiipuTFYHRfE3LTLbqbxltYVOMgVzLI4BnK+ fxUl0HyfITHTOp/a47v3ffJD7x3vPSgIWl7/ X-Google-Smtp-Source: ABdhPJzX/iDEbE+2ySehfQJj67rlYTS/hq8Q4cC/o8YCnBEekYCcmjgmwFFcP/3ZdSSOAYf1zcgm5g== X-Received: by 2002:a5d:6d88:0:b0:20c:594d:6ac7 with SMTP id l8-20020a5d6d88000000b0020c594d6ac7mr8413351wrs.622.1651536553089; Mon, 02 May 2022 17:09:13 -0700 (PDT) Received: from [192.168.0.14] (cpc91222-cmbg18-2-0-cust46.5-4.cable.virginm.net. [81.106.30.47]) by smtp.gmail.com with ESMTPSA id h15-20020a05600c350f00b003942a244f53sm477344wmq.44.2022.05.02.17.09.12 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 May 2022 17:09:12 -0700 (PDT) Message-ID: Date: Tue, 3 May 2022 01:09:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Content-Language: en-US To: FFmpeg development discussions and patches From: Mark Thompson Subject: [FFmpeg-devel] [PATCH] hwcontext: Skip derivation checking for an existing device if options are set 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 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: If options are set then the user definitely intends to create a new device, so we shouldn't attempt to return an existing one. --- libavutil/hwcontext.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/libavutil/hwcontext.c b/libavutil/hwcontext.c index ab9ad3703e..c4e01e0e78 100644 --- a/libavutil/hwcontext.c +++ b/libavutil/hwcontext.c @@ -653,18 +653,24 @@ int av_hwdevice_ctx_create_derived_opts(AVBufferRef **dst_ref_ptr, AVHWDeviceContext *dst_ctx, *tmp_ctx; int ret = 0; - tmp_ref = src_ref; - while (tmp_ref) { - tmp_ctx = (AVHWDeviceContext*)tmp_ref->data; - if (tmp_ctx->type == type) { - dst_ref = av_buffer_ref(tmp_ref); - if (!dst_ref) { - ret = AVERROR(ENOMEM); - goto fail; + // If we were derived (possibly transitively) from a device of the + // target type then we want to return that original device, unless + // options are set in which case we can skip this check because it + // is definitely intended to create a new device. + if (!options) { + tmp_ref = src_ref; + while (tmp_ref) { + tmp_ctx = (AVHWDeviceContext*)tmp_ref->data; + if (tmp_ctx->type == type) { + dst_ref = av_buffer_ref(tmp_ref); + if (!dst_ref) { + ret = AVERROR(ENOMEM); + goto fail; + } + goto done; } - goto done; + tmp_ref = tmp_ctx->internal->source_device; } - tmp_ref = tmp_ctx->internal->source_device; } dst_ref = av_hwdevice_ctx_alloc(type); -- 2.35.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".