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 DD33D44884 for ; Sun, 30 Oct 2022 18:29:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EF8C668BD1D; Sun, 30 Oct 2022 20:29:09 +0200 (EET) Received: from mail-ua1-f47.google.com (mail-ua1-f47.google.com [209.85.222.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6F25868BB52 for ; Sun, 30 Oct 2022 20:29:03 +0200 (EET) Received: by mail-ua1-f47.google.com with SMTP id e26so4311676uaa.7 for ; Sun, 30 Oct 2022 11:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=DN3UTT1T+Esj8IbihsSIHvRJz5h8HE3ryNjAYtDf5zc=; b=pK9NP1LalXRh0yyyt3s+upLAedVXj2DGOEQsplvQvKf177WuYovF7om7MNdWtAPl38 GKkU3A7aARuRXYiZU4muzCygzuc8y/S6hZSjs1nNRRsyGOvwOo/SDQIYYuMMzQ86Px6L Xl0irGeGlDchewk8G5Sb8G7Gx1qQ38i7on55sy2L5TRHrdSrioUnGB35izida+wIfMCN LsKANI93TObFjI/vsfy8CPimaockZ+PAS5X5xNbRRj18elu76PysHLS+XPBOMkDV+8jY k1YIagVr5suEkKcrvgxgfX38K4RynfwcoFzuDinPAk82Mr0lfFGWhpqAdFEWs0CI1Chr Gaxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DN3UTT1T+Esj8IbihsSIHvRJz5h8HE3ryNjAYtDf5zc=; b=pAhyVfDTNI3Wf8P+5Iy68YWL0etohjw+0Nt3G6XMeAQyuztTFHHmbVrnnLBP2IwW4h 4Zh5Nh/Xbw/Z71cIcZDDkv1bFOOsCz+KJV1+EiwYhj/jpT8giffUdZjY2Z/ec/+bxofm +Il5fBKiLEahCBl2RU3FeTrYqe8XBlh5wTmX+VJpM/cfJ7Sl7seM27JPfrL3wBB07z9O SnU+ghpUYgA4jid7slogec1JhymO72fAz12R0iuNsesQiUqRnHttOwrxbmJtAhDK/qOm CPtbVjYMNH6pTeXXtbJ2CLAJyx/C9l3Sh5vW91fVB9AyabvXA0pf0W+KLCXLt7yU2voH ZqUA== X-Gm-Message-State: ACrzQf0fBSSXSjpvf53P8kcwr+guWRQxmtIMUvD+DO1LoUYyfvchv4F1 yN0aGnjwVuLdscCAee2ueLJ+ojRhoR/zoBwRrmzreDsh X-Google-Smtp-Source: AMsMyM5WIO8iPHeb5x2mgMJ3oBRulccwd9Fi6ewT9Tb58Q6pBVWrH1X8y1mURse1rT+iaw7+V3eDwiHcIz0+XEeI/hA= X-Received: by 2002:ab0:59b0:0:b0:408:fefb:c1a9 with SMTP id g45-20020ab059b0000000b00408fefbc1a9mr2050849uad.38.1667154542071; Sun, 30 Oct 2022 11:29:02 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:612c:612:b0:314:ac6a:1eb7 with HTTP; Sun, 30 Oct 2022 11:29:01 -0700 (PDT) In-Reply-To: <3a38e8dc-0c3a-eec2-9278-75f2bc6118aa@gmail.com> References: <103b6b6c-5c56-2af7-bde6-1e1706d21930@gmail.com> <3a38e8dc-0c3a-eec2-9278-75f2bc6118aa@gmail.com> From: Paul B Mahol Date: Sun, 30 Oct 2022 19:29:01 +0100 Message-ID: To: FFmpeg development discussions and patches 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-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 10/30/22, James Almer wrote: > > > 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). https://en.wikipedia.org/wiki/Ambisonic_reproduction_systems#Cube > >> >>> >>>> + .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". > _______________________________________________ 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".