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,
Given the angles below, this should be FC+BL+BR.
+ .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 },
Probably FC+BC+SL+SR.
+ .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 },
Either SL+SR+TFC+TBC or FC+BC+TSL+TSR, depending on which channels are at the top.
+ .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, + .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-requ...@ffmpeg.org with subject "unsubscribe".