Skip to content

Commit

Permalink
Fix broken Apple Clang < 16.0.0 build: Avoid using parenthesized init…
Browse files Browse the repository at this point in the history
…ialization of aggregates.

  - `AudioElementParam` is an aggregate, which can only be initialized with parentheses in C++20. This is not well supported on MacOS/Apple Clang.
  - b/338638106: Similar issue has shown up before, but now the most recent Apple Clang builds are claimed to support it (https://en.cppreference.com/w/cpp/compiler_support/20).
  - Don't bump Apple Clang version for this; avoid the syntax for now.

PiperOrigin-RevId: 728256265
  • Loading branch information
jwcullen committed Feb 18, 2025
1 parent a99a2e4 commit 00708c9
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ absl::Status GenerateParameterDefinitions(
codec_config_obu.GetCodecConfig().num_samples_per_frame));
}
audio_element_obu.audio_element_params_.emplace_back(
demixing_param_definition);
AudioElementParam{demixing_param_definition});
break;
}
case kParameterDefinitionReconGain: {
Expand All @@ -181,7 +181,7 @@ absl::Status GenerateParameterDefinitions(
codec_config_obu.GetCodecConfig().num_samples_per_frame));
}
audio_element_obu.audio_element_params_.emplace_back(
recon_gain_param_definition);
AudioElementParam{recon_gain_param_definition});
break;
}
case kParameterDefinitionMixGain:
Expand All @@ -203,7 +203,7 @@ absl::Status GenerateParameterDefinitions(
absl::MakeSpan(extended_param_definition.param_definition_bytes_)));

audio_element_obu.audio_element_params_.emplace_back(
extended_param_definition);
AudioElementParam{extended_param_definition});
} break;
}
}
Expand Down
3 changes: 2 additions & 1 deletion iamf/cli/tests/cli_test_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ void AddParamDefinition(

// Add to the Audio Element OBU.
audio_element_obu.InitializeParams(audio_element_obu.num_parameters_ + 1);
audio_element_obu.audio_element_params_.emplace_back(param_definition);
audio_element_obu.audio_element_params_.emplace_back(
AudioElementParam{param_definition});

// Insert the newly added param definition to the map `param_definitions`.
if (param_definitions != nullptr) {
Expand Down
5 changes: 3 additions & 2 deletions iamf/cli/tests/cli_util_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -468,8 +468,9 @@ TEST(CollectAndValidateParamDefinitions,
// to determine the ID to store it or to use further processing.
auto& audio_element = audio_elements.at(kAudioElementId);
audio_element.obu.InitializeParams(1);
audio_element.obu.audio_element_params_.emplace_back(ExtendedParamDefinition(
ParamDefinition::kParameterDefinitionReservedStart));
audio_element.obu.audio_element_params_.emplace_back(
AudioElementParam{ExtendedParamDefinition(
ParamDefinition::kParameterDefinitionReservedStart)});

absl::flat_hash_map<DecodedUleb128, const ParamDefinition*> result;
EXPECT_THAT(CollectAndValidateParamDefinitions(
Expand Down
22 changes: 13 additions & 9 deletions iamf/obu/tests/audio_element_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ class AudioElementObuTestBase : public ObuTestBase {
.audio_element_params = {},
}) {
required_args_.audio_element_params.emplace_back(
CreateDemixingInfoParamDefinition(
DemixingInfoParameterData::kDMixPMode1));
AudioElementParam{CreateDemixingInfoParamDefinition(
DemixingInfoParameterData::kDMixPMode1)});
}

~AudioElementObuTestBase() = default;
Expand Down Expand Up @@ -137,7 +137,7 @@ class AudioElementObuTestBase : public ObuTestBase {
obu_->InitializeParams(required_args_.num_parameters);
for (auto& audio_element_param : required_args_.audio_element_params) {
obu_->audio_element_params_.emplace_back(
audio_element_param.param_definition);
AudioElementParam{audio_element_param.param_definition});
}
}
};
Expand Down Expand Up @@ -341,8 +341,9 @@ TEST_F(AudioElementScalableChannelTest,

TEST_F(AudioElementScalableChannelTest, ParamDefinitionExtensionZero) {
required_args_.audio_element_params.clear();
required_args_.audio_element_params.emplace_back(ExtendedParamDefinition(
ParamDefinition::kParameterDefinitionReservedStart));
required_args_.audio_element_params.emplace_back(
AudioElementParam{ExtendedParamDefinition{
ParamDefinition::kParameterDefinitionReservedStart}});

expected_header_ = {kObuIaAudioElement << 3, 15};

Expand Down Expand Up @@ -382,8 +383,9 @@ TEST_F(AudioElementScalableChannelTest, ParamDefinitionExtensionZero) {

TEST_F(AudioElementScalableChannelTest, MaxParamDefinitionType) {
required_args_.audio_element_params.clear();
required_args_.audio_element_params.emplace_back(ExtendedParamDefinition(
ParamDefinition::kParameterDefinitionReservedEnd));
required_args_.audio_element_params.emplace_back(
AudioElementParam{ExtendedParamDefinition{
ParamDefinition::kParameterDefinitionReservedEnd}});

expected_header_ = {kObuIaAudioElement << 3, 19};

Expand Down Expand Up @@ -428,7 +430,8 @@ TEST_F(AudioElementScalableChannelTest, ParamDefinitionExtensionNonZero) {
param_definition.param_definition_bytes_ = {'e', 'x', 't', 'r', 'a'};

required_args_.audio_element_params.clear();
required_args_.audio_element_params.emplace_back(param_definition);
required_args_.audio_element_params.emplace_back(
AudioElementParam{param_definition});

expected_header_ = {kObuIaAudioElement << 3, 20};

Expand Down Expand Up @@ -1053,7 +1056,8 @@ TEST_F(AudioElementScalableChannelTest,
const auto demixing_param_definition =
CreateDemixingInfoParamDefinition(DemixingInfoParameterData::kDMixPMode1);
for (int i = 0; i < 2; i++) {
required_args_.audio_element_params.emplace_back(demixing_param_definition);
required_args_.audio_element_params.emplace_back(
AudioElementParam{demixing_param_definition});
}

InitExpectOk();
Expand Down

0 comments on commit 00708c9

Please sign in to comment.