+shared_ptr<dcp::SoundAsset>
+simple_sound(boost::filesystem::path path, string suffix, dcp::MXFMetadata mxf_meta, string language, int frames, int sample_rate, optional<dcp::Key> key, int channels)
+{
+ /* Set a valid language, then overwrite it, so that the language parameter can be badly formed */
+ auto ms = make_shared<dcp::SoundAsset>(dcp::Fraction(24, 1), sample_rate, channels, dcp::LanguageTag("en-US"), dcp::Standard::SMPTE);
+ if (key) {
+ ms->set_key (*key);
+ }
+ ms->_language = language;
+ ms->set_metadata (mxf_meta);
+ auto sound_writer = ms->start_write(path / dcp::String::compose("audio%1.mxf", suffix), {}, dcp::SoundAsset::AtmosSync::DISABLED, dcp::SoundAsset::MCASubDescriptors::ENABLED);
+
+ int const samples_per_frame = sample_rate / 24;
+
+ float* silence[channels];
+ for (auto i = 0; i < channels; ++i) {
+ silence[i] = new float[samples_per_frame];
+ memset (silence[i], 0, samples_per_frame * sizeof(float));
+ }
+
+ for (auto i = 0; i < frames; ++i) {
+ sound_writer->write(silence, channels, samples_per_frame);
+ }
+
+ sound_writer->finalize ();
+
+ for (auto i = 0; i < channels; ++i) {
+ delete[] silence[i];
+ }
+
+ return ms;
+}
+
+