On 10/30/22, James Almer <jamr...@gmail.com> 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. > >> + .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". > _______________________________________________ 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".