From patchwork Fri Mar 22 16:01:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 47317 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f9b:b0:1a3:3794:5ed7 with SMTP id mm27csp1054294pzb; Fri, 22 Mar 2024 09:02:45 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWRlqGugNsefpnnrzVpY/JDzw1jBq2hk6fT6FQDjL6x8OPbSAsVD2z3l9Vfp09g3AWsP9ChzG8WnBmhUZIp9ZE0b5fm/rUSGoqGJA== X-Google-Smtp-Source: AGHT+IGL4ITcHRmGnmtZFZzuugXH+IBJc6MaSLHe9I242QNhzLvKR3gQqAhW7LdmqZbsGbdlMe82 X-Received: by 2002:a17:906:289b:b0:a47:c53:b7c7 with SMTP id o27-20020a170906289b00b00a470c53b7c7mr78314ejd.6.1711123365537; Fri, 22 Mar 2024 09:02:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711123365; cv=none; d=google.com; s=arc-20160816; b=i/EA2WxaViEWKEQCblGQeAA1YBHboRtx82l7NAKeR1RtaIQi3W8fzcDS51/qgxlVJE +ZjzBqFnhtEgVdGgOIxRo7R4Ws15akPgqLXwr4pgt+360rEjnZHyMEjYNjHMqdvwRK9q DTHK/byxb6i/DiOtGylvUfUAZw1u2Kztugq26E0yotRb+UPslbPB9nOwgrcyWMIbRLfM 4E3cVVxbD7jkSg2X7P9KHNi3sN+KUPhIGtA2ku0uJWn6pJBNo4e8cbPgIaYqPo7v1gsY RN9PciOdhvI2Pp+vlVmoPyScLk6niedpLU9Gk0nIiWKaXu5bzAlH0QkUZNt8BWKsMGxb +Ing== 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 :dkim-signature:delivered-to; bh=suVPYaEet3DPTjcAJ1ttW7TBt+86z76v719kysxi9Bg=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=F2kq4JtqBavhPOkUnfxyNlyR3pgu2/D86Hjbel3IrW6iu0yUQcioYHWhAe+kXSTeKD V3/hKHI76e8BP+UdhX98maWFUrZgaTYrcEDtTEj1gtwYEUPkRpwq3jbxtWEYuzodQ3O9 YpysdlWqfqYa1Ibi7A6/d57z5QjR9YaN8/zDaoabv2doJeH29ypVXJHLl5o2o6Yo+14s mDi4XXyvMzSZ9QdZEW/m7Xj00HgqFtzMzD6Saw0zWde/EPUxOIn1c7U/bFoZ5CXMOZBW Cnxt+d3dsJhHhrfgABNmkc57D0z0jvtWgbSn3S/d2iwGPNoTQUNMMhR+FbQck7cYn7vp 9Jcw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=k7x70xdL; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w6-20020a170906184600b00a46e12d208fsi1005978eje.808.2024.03.22.09.02.22; Fri, 22 Mar 2024 09:02:45 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=k7x70xdL; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4932868D53D; Fri, 22 Mar 2024 18:02:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C6E7E68D2D9 for ; Fri, 22 Mar 2024 18:02:11 +0200 (EET) Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-29c14800a7fso1644208a91.2 for ; Fri, 22 Mar 2024 09:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711123329; x=1711728129; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=qlQgoAYQMFAZihW9Rcdc2KTqeWgFwtHGwKN6vCGmyR4=; b=k7x70xdL5hnayUWu0IwrGyY6hajsieqK1ewUDr3z7f4l4l16yuYjfUydFjVCzSBmeF 4UO9ZUt7ndNNofVtdfckRVd/PawW3cEGhJRj3JkCHPbPmkVMvyoSUcZF0cVRgErNntV+ xCaNu02yqj6CS5gam8WSlgWiZDGH/2xtav7iBIOKCmHLsHw21DXNI1XflBjZ1Is9s91K 0/mI5hYy3ab4n8iShU6WWCnFr/XG04k1MTT5XskKSfXqCGTLycVioK5IPxAUJXw8KYCQ vWxE31+o+CbhlK2xGOGEyEIVJtu82KbMro3Ion2GJjOEKLmsMmqmxoUe3i/S8wY/+4jh qMEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711123329; x=1711728129; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qlQgoAYQMFAZihW9Rcdc2KTqeWgFwtHGwKN6vCGmyR4=; b=F/HMibnGuc+KvovEugC1Phc3HK+QbNxxGXGpxoiZW6w2uPQaVt8NUi21D/3NrPWgcA /8JQu2V8rwmt7EQyrHZrbqCcahSSQ2l55rKnpdwc0oTXcL4n1o0tf5c87okrGDgq7swi 1BKYZm51r6F1L9pJaLcpMf0NImZyTgq/7Nc0KXvh7ZDNC79opgNDItUnYzcJ2Xj+sUDJ DXqGNaDZBGuI5M6dOheisl4g1fGS4c9sllUAsR3Fuu4JFMGgleyls44lU8Nk4imK506O PtniLv6S7kgUF24Tg+QIGQG3xJ8cBl18Cg+6oUdnTxrRubz+6kZg58yCJyGbnXkAN1x6 Y/JQ== X-Gm-Message-State: AOJu0YzW5DVhwZt+ru93J7on3DPOIgQWMC/dEVLJeDUY3EH1xMc7PT7w 7clovY2ADErIWIwWcI1geaurGc0TVrTv+NxaaT4p9gERow3rKnHMJfqamrQ0 X-Received: by 2002:a17:90a:dd92:b0:29c:4395:b931 with SMTP id l18-20020a17090add9200b0029c4395b931mr62817pjv.10.1711123329075; Fri, 22 Mar 2024 09:02:09 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id sc1-20020a17090b510100b002a03a597526sm1670604pjb.25.2024.03.22.09.02.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Mar 2024 09:02:08 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 13:01:27 -0300 Message-ID: <20240322160127.1635-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avutil/channel_layout: don't clear the opaque pointer on type conversion 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: Z8UhpZndCQoN Otherwise it would not be lossless. Signed-off-by: James Almer --- libavutil/channel_layout.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavutil/channel_layout.c b/libavutil/channel_layout.c index a83618bcc7..3054ee08a5 100644 --- a/libavutil/channel_layout.c +++ b/libavutil/channel_layout.c @@ -902,9 +902,11 @@ int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrde lossy = 1; } if (!lossy || allow_lossy) { + void *opaque = channel_layout->opaque; av_channel_layout_uninit(channel_layout); channel_layout->order = AV_CHANNEL_ORDER_UNSPEC; channel_layout->nb_channels = nb_channels; + channel_layout->opaque = opaque; return lossy; } return AVERROR(ENOSYS); @@ -916,8 +918,10 @@ int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrde return AVERROR(ENOSYS); lossy = has_channel_names(channel_layout); if (!lossy || allow_lossy) { + void *opaque = channel_layout->opaque; av_channel_layout_uninit(channel_layout); av_channel_layout_from_mask(channel_layout, mask); + channel_layout->opaque = opaque; return lossy; } } @@ -925,6 +929,7 @@ int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrde case AV_CHANNEL_ORDER_CUSTOM: { AVChannelLayout custom = { 0 }; int ret = av_channel_layout_custom_init(&custom, channel_layout->nb_channels); + void *opaque = channel_layout->opaque; if (ret < 0) return ret; if (channel_layout->order != AV_CHANNEL_ORDER_UNSPEC) @@ -932,6 +937,7 @@ int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrde custom.u.map[i].id = av_channel_layout_channel_from_index(channel_layout, i); av_channel_layout_uninit(channel_layout); *channel_layout = custom; + channel_layout->opaque = opaque; return 0; } case AV_CHANNEL_ORDER_AMBISONIC: @@ -946,10 +952,12 @@ int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrde return AVERROR(ENOSYS); lossy = has_channel_names(channel_layout); if (!lossy || allow_lossy) { + void *opaque = channel_layout->opaque; av_channel_layout_uninit(channel_layout); channel_layout->order = AV_CHANNEL_ORDER_AMBISONIC; channel_layout->nb_channels = nb_channels; channel_layout->u.mask = mask; + channel_layout->opaque = opaque; return lossy; } }