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 5A48C441A2 for ; Sun, 30 Oct 2022 18:24:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 84F6768BD13; Sun, 30 Oct 2022 20:24:46 +0200 (EET) Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9466068BC10 for ; Sun, 30 Oct 2022 20:24:40 +0200 (EET) Received: by mail-oi1-f179.google.com with SMTP id g10so11027259oif.10 for ; Sun, 30 Oct 2022 11:24:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=YxM+L0ald+88IwyygHymbz4xX93UfdvjV93hKt16wSE=; b=SXfprCh1J7f8oouhwmarZ8+gW9JM/dLqhfV9F2k5SZuxTHeVPNAgvUT4Gvx8UKVLRR IiobONe9JgkcbaTIdU+JWrpBDV5PMpLyrxDLHJi6fQG3bpMeVKHJ/5DkUoEiFLYzdxIW eOJOdo9CT4blfGsyG+lbn/SKL5tAGYaf2jlhFbbr93uLMxqgYosR0NwvZDEevf2L3I/s AZnp64CxTPFmem9tIJ3jHtNfIgJkdKCg4nwyPDWRSQWPMQ9XhxkSGx5D0/x/f7GPQPfP APj5YMZkGZ1jZWA0lRtVbIRMIYIE+NbcTRrMbepWeXGz5ZoQYnow0+da1BB68NOU6GjK yKsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YxM+L0ald+88IwyygHymbz4xX93UfdvjV93hKt16wSE=; b=2QgrpmKIIcLSQnreQGoDv7SdlRur1sjJc9kw/MwQDuWFNHEwazacvg4D16eHWdSgh7 +uqXdG9GPAMA1F5iGZpMeI9fezeewmoljeyzOAmlXHDyLshKMnGFDt8m7NH7S7Jjgxdt x3BVdWfW0M5iHReTcV8FP65d11OTTGJ2XJzY64fDHMDGO30ygz1/XO+7TrEijilKyizO cLPWO33NJFamGkfxs2xUNja1I/4HPBeDdCvlFtX6KLRkxmcMIBfCXUzz1JW/T7avfeoa 9TMPtwOC56Oswt2Xl1gXW+4x7Pxza/MuQ17zFrHLrHHFeq3mFczA+j7g5gxwlTe7p0+g nFKQ== X-Gm-Message-State: ACrzQf3O+vN4n6eLEsJqezQPvZdctgdnNFybXmfXRicjto2AKtzX2AZu y/PB18OnhvymA/BP1jV8SBckaj5OP/M= X-Google-Smtp-Source: AMsMyM6r6I65lq7MoOhcUQGlI3g6fvmKxKuzDEVoeoKXz9BhILG9wQCxCQquFTFkmkm6BMDJFg5gqA== X-Received: by 2002:a05:6808:1408:b0:354:fd4e:73ef with SMTP id w8-20020a056808140800b00354fd4e73efmr13063752oiv.255.1667154278146; Sun, 30 Oct 2022 11:24:38 -0700 (PDT) Received: from [192.168.0.13] ([191.97.187.183]) by smtp.gmail.com with ESMTPSA id b5-20020a056870d1c500b0013ae5246449sm2083734oac.22.2022.10.30.11.24.37 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 30 Oct 2022 11:24:37 -0700 (PDT) Message-ID: <3a38e8dc-0c3a-eec2-9278-75f2bc6118aa@gmail.com> Date: Sun, 30 Oct 2022 15:24:36 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <103b6b6c-5c56-2af7-bde6-1e1706d21930@gmail.com> From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH] avfilter: add ambisonic decoder filter 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: On 10/30/2022 3:19 PM, Paul B Mahol wrote: > On 10/30/22, James Almer wrote: >> On 10/30/2022 12:34 PM, Paul B Mahol wrote: >>> +static const struct { >>> + const int order; >>> + const int inputs; >>> + const int speakers; >>> + const int near_field; >>> + const int type; >>> + const double xover; >>> + const AVChannelLayout outlayout; >>> + const double *speakers_azimuth; >>> + const double *speakers_elevation; >>> + const double *speakers_distance; >>> +} ambisonic_tab[] = { >>> + [MONO] = { >>> + .order = 0, >>> + .inputs = 1, >>> + .speakers = 1, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO, >>> + .speakers_azimuth = (const double[1]){ 0. }, >>> + .speakers_distance = (const double[1]){ 1. }, >>> + }, >>> + [STEREO] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 2, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO, >>> + .speakers_azimuth = (const double[2]){ -30, 30}, >>> + .speakers_distance = same_distance, >>> + }, >>> + [STEREO_DOWNMIX] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 2, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO_DOWNMIX, >>> + .speakers_azimuth = (const double[2]){ -90, 90 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [SURROUND] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 3, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_SURROUND, >>> + .speakers_azimuth = (const double[3]){ -45, 45, 0 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [L2_1] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 3, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_2_1, >>> + .speakers_azimuth = (const double[3]){ -45, 45, 180 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [TRIANGLE] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 3, >>> + .type = 1, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_SURROUND, >>> + .speakers_azimuth = (const double[3]){ -120, 120, 0 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [QUAD] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 4, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_QUAD, >>> + .speakers_azimuth = (const double[4]){ -45, 45, -135, 135 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [SQUARE] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 4, >>> + .type = 1, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_4POINT0, >>> + .speakers_azimuth = (const double[4]){ 0, -90, 180, 90 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [L4_0] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 4, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_4POINT0, >>> + .speakers_azimuth = (const double[4]){ -30, 30, 0, 180 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [L5_0] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 5, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT0_BACK, >>> + .speakers_azimuth = (const double[5]){ -30, 30, 0, -145, 145 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [L5_0_SIDE] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 5, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT0, >>> + .speakers_azimuth = (const double[5]){ -30, 30, 0, -110, 110 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [L6_0] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 6, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_6POINT0, >>> + .speakers_azimuth = (const double[6]){ -30, 30, 0, 180, -110, 110 >>> }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [L7_0] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 7, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_7POINT0, >>> + .speakers_azimuth = (const double[7]){ -30, 30, 0, -145, 145, >>> -110, 110 }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [TETRA] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 4, >>> + .type = 2, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_QUAD, >>> + .speakers_azimuth = (const double[4]){ -90, 90, 0, 180 }, >>> + .speakers_elevation = (const double[4]){ -35.3, -35.3, 35.3, 35.3 >>> }, >>> + .speakers_distance = same_distance, >>> + }, >>> + [CUBE] = { >>> + .order = 1, >>> + .inputs = 4, >>> + .speakers = 8, >>> + .type = 2, >>> + .near_field = NF_NONE, >>> + .xover = 0., >>> + .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_7POINT1, >> >> 7.1 defines an LFE channel, which is clearly not intended here, so it >> should be either: >> >> .outlayout = (AVChannelLayout)AV_CHANNEL_LAYOUT_MASK(8, >> AV_CH_LAYOUT_QUAD | >> AV_CH_TOP_FRONT_LEFT | >> AV_CH_TOP_FRONT_RIGHT | >> AV_CH_TOP_BACK_LEFT | >> AV_CH_TOP_BACK_RIGHT), >> >> Or the AV_CHANNEL_LAYOUT_CUBE layout (using the exact same bitmask as >> above) after the patch i sent just now is committed. > > CUBE is as real cube in 3d space. No current layout in API can be > described correctly. the TOP_* channels are in a different height layer than the other channels, namely above them. The result for this bitmask is a 3D cube layout (Left and right speakers both front and back, in two different height layers). > >> >>> + .speakers_azimuth = cube_azimuth, >>> + .speakers_elevation = cube_elevation, >>> + .speakers_distance = same_distance, >>> + }, >> >> _______________________________________________ >> 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". >> > _______________________________________________ > 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". _______________________________________________ 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".