X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=test%2Fupmixer_a_test.cc;h=35224ff234a6c2f0bceceeed708834d5bdaac4c6;hp=1cd20e219dfadc728c15c3edbf3a3ad6bee565d3;hb=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26;hpb=c157cd97740a2ba55d3e87bd9844429cc7d49ce7 diff --git a/test/upmixer_a_test.cc b/test/upmixer_a_test.cc index 1cd20e219..35224ff23 100644 --- a/test/upmixer_a_test.cc +++ b/test/upmixer_a_test.cc @@ -1,34 +1,63 @@ /* Copyright (C) 2014-2015 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ +/** @file test/upmixer_a_test.cc + * @brief Check the Upmixer A against some reference sound files. + * @ingroup selfcontained + */ + #include #include #include "lib/film.h" #include "lib/ratio.h" #include "lib/dcp_content_type.h" -#include "lib/sndfile_content.h" +#include "lib/ffmpeg_content.h" #include "lib/player.h" #include "lib/audio_buffers.h" #include "lib/upmixer_a.h" #include "test.h" -using boost::shared_ptr; +using std::shared_ptr; +#if BOOST_VERSION >= 106100 +using namespace boost::placeholders; +#endif +using namespace dcpomatic; + +static SNDFILE* L; +static SNDFILE* R; +static SNDFILE* C; +static SNDFILE* Lfe; +static SNDFILE* Ls; +static SNDFILE* Rs; + +static void +write (shared_ptr b, DCPTime) +{ + sf_write_float (L, b->data(0), b->frames()); + sf_write_float (R, b->data(1), b->frames()); + sf_write_float (C, b->data(2), b->frames()); + sf_write_float (Lfe, b->data(3), b->frames()); + sf_write_float (Ls, b->data(4), b->frames()); + sf_write_float (Rs, b->data(5), b->frames()); + +} BOOST_AUTO_TEST_CASE (upmixer_a_test) { @@ -37,32 +66,25 @@ BOOST_AUTO_TEST_CASE (upmixer_a_test) film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR")); film->set_name ("frobozz"); film->set_audio_processor (AudioProcessor::from_id ("stereo-5.1-upmix-a")); - shared_ptr content (new SndfileContent (film, "test/data/white.wav")); + shared_ptr content (new FFmpegContent ("test/data/white.wav")); film->examine_and_add_content (content); - wait_for_jobs (); + BOOST_REQUIRE (!wait_for_jobs()); SF_INFO info; info.samplerate = 48000; info.channels = 1; info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; - SNDFILE* L = sf_open ("build/test/upmixer_a_test/L.wav", SFM_WRITE, &info); - SNDFILE* R = sf_open ("build/test/upmixer_a_test/R.wav", SFM_WRITE, &info); - SNDFILE* C = sf_open ("build/test/upmixer_a_test/C.wav", SFM_WRITE, &info); - SNDFILE* Lfe = sf_open ("build/test/upmixer_a_test/Lfe.wav", SFM_WRITE, &info); - SNDFILE* Ls = sf_open ("build/test/upmixer_a_test/Ls.wav", SFM_WRITE, &info); - SNDFILE* Rs = sf_open ("build/test/upmixer_a_test/Rs.wav", SFM_WRITE, &info); - - shared_ptr player = film->make_player (); - for (DCPTime t; t < film->length(); t += DCPTime::from_seconds (1)) { - shared_ptr b = player->get_audio (t, DCPTime::from_seconds (1), true); - sf_write_float (L, b->data(0), b->frames()); - sf_write_float (R, b->data(1), b->frames()); - sf_write_float (C, b->data(2), b->frames()); - sf_write_float (Lfe, b->data(3), b->frames()); - sf_write_float (Ls, b->data(4), b->frames()); - sf_write_float (Rs, b->data(5), b->frames()); - } + L = sf_open ("build/test/upmixer_a_test/L.wav", SFM_WRITE, &info); + R = sf_open ("build/test/upmixer_a_test/R.wav", SFM_WRITE, &info); + C = sf_open ("build/test/upmixer_a_test/C.wav", SFM_WRITE, &info); + Lfe = sf_open ("build/test/upmixer_a_test/Lfe.wav", SFM_WRITE, &info); + Ls = sf_open ("build/test/upmixer_a_test/Ls.wav", SFM_WRITE, &info); + Rs = sf_open ("build/test/upmixer_a_test/Rs.wav", SFM_WRITE, &info); + + shared_ptr player (new Player(film)); + player->Audio.connect (bind (&write, _1, _2)); + while (!player->pass()) {} sf_close (L); sf_close (R); @@ -71,10 +93,10 @@ BOOST_AUTO_TEST_CASE (upmixer_a_test) sf_close (Ls); sf_close (Rs); - check_audio_file ("test/data/upmixer_a_test/L.wav", "build/test/upmixer_a_test/L.wav"); - check_audio_file ("test/data/upmixer_a_test/R.wav", "build/test/upmixer_a_test/R.wav"); - check_audio_file ("test/data/upmixer_a_test/C.wav", "build/test/upmixer_a_test/C.wav"); - check_audio_file ("test/data/upmixer_a_test/Lfe.wav", "build/test/upmixer_a_test/Lfe.wav"); - check_audio_file ("test/data/upmixer_a_test/Ls.wav", "build/test/upmixer_a_test/Ls.wav"); - check_audio_file ("test/data/upmixer_a_test/Rs.wav", "build/test/upmixer_a_test/Rs.wav"); + check_wav_file ("test/data/upmixer_a_test/L.wav", "build/test/upmixer_a_test/L.wav"); + check_wav_file ("test/data/upmixer_a_test/R.wav", "build/test/upmixer_a_test/R.wav"); + check_wav_file ("test/data/upmixer_a_test/C.wav", "build/test/upmixer_a_test/C.wav"); + check_wav_file ("test/data/upmixer_a_test/Lfe.wav", "build/test/upmixer_a_test/Lfe.wav"); + check_wav_file ("test/data/upmixer_a_test/Ls.wav", "build/test/upmixer_a_test/Ls.wav"); + check_wav_file ("test/data/upmixer_a_test/Rs.wav", "build/test/upmixer_a_test/Rs.wav"); }