# e.g. --run_tests=foo
set -e
-PRIVATE_GIT="155d46e5c2a5a37c2269884b021c69b0d7d41f22"
+PRIVATE_GIT="a057b086149254d1ea70a4fd7efcd88791335dcd"
if [ "$1" == "--check" ]; then
shift 1
AudioBuffers::allocate (int channels, int frames)
{
DCPOMATIC_ASSERT (frames >= 0);
- DCPOMATIC_ASSERT (channels > 0);
+ DCPOMATIC_ASSERT(frames == 0 || channels > 0);
ScopeGuard sg = [this]() { update_data_pointers(); };
}
int frames () const {
- return _data[0].size();
+ return _data.empty() ? 0 : _data[0].size();
}
void set_frames (int f);
auto audio = make_shared<AudioBuffers>(channels, frames);
auto data = audio->data();
+ if (frames == 0) {
+ return audio;
+ }
+
switch (format) {
case AV_SAMPLE_FMT_U8:
{
content[0]->audio->set_delay(-1000);
make_and_verify_dcp (film, { dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K });
}
+
+
+/** WAVs with markers (I think) can end up making audio packets with no channels and no frames (#2617) */
+BOOST_AUTO_TEST_CASE(wav_with_markers_zero_channels_test)
+{
+ auto content = content_factory(TestPaths::private_data() / "wav_with_markers.wav");
+ auto film = new_test_film2("wav_with_markers_zero_channels_test", content);
+ make_and_verify_dcp(film, { dcp::VerificationNote::Code::MISSING_CPL_METADATA });
+}