diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-11-14 22:01:07 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-04-22 01:42:00 +0200 |
| commit | 066471f69400fc72e9c126ab36f5427329f30220 (patch) | |
| tree | dd15f6b6aa7a74b5cca2ce5f300723b1b72d2f11 /test | |
| parent | 0fbfe3d2dd5de9eab299f2ff569bff29cc6f8e19 (diff) | |
Support MPEG2 decompression.
Diffstat (limited to 'test')
| -rw-r--r-- | test/dcp_test.cc | 6 | ||||
| -rw-r--r-- | test/kdm_test.cc | 2 | ||||
| -rw-r--r-- | test/mono_mpeg2_picture_read_test.cc | 62 | ||||
| -rw-r--r-- | test/wscript | 7 |
4 files changed, 70 insertions, 7 deletions
diff --git a/test/dcp_test.cc b/test/dcp_test.cc index 4647d8ae..63de990f 100644 --- a/test/dcp_test.cc +++ b/test/dcp_test.cc @@ -203,9 +203,9 @@ test_rewriting_sound(string name, bool modify) dcp::DCP B ("build/test/" + name); auto reel = make_shared<dcp::Reel>(); - BOOST_REQUIRE (A_picture->mono_asset()); - BOOST_REQUIRE (A_picture->mono_asset()->file()); - copy_file (A_picture->mono_asset()->file().get(), path("build") / "test" / name / picture); + BOOST_REQUIRE(A_picture->mono_j2k_asset()); + BOOST_REQUIRE(A_picture->mono_j2k_asset()->file()); + copy_file(A_picture->mono_j2k_asset()->file().get(), path("build") / "test" / name / picture); reel->add(make_shared<dcp::ReelMonoPictureAsset>(make_shared<dcp::MonoJ2KPictureAsset>(path("build") / "test" / name / picture), 0)); auto reader = A_sound->asset()->start_read(); diff --git a/test/kdm_test.cc b/test/kdm_test.cc index 4b261d48..75a6019e 100644 --- a/test/kdm_test.cc +++ b/test/kdm_test.cc @@ -320,7 +320,7 @@ BOOST_AUTO_TEST_CASE (vf_kdm_test) ov->write_xml (); auto ov_reel = ov->cpls()[0]->reels()[0]; - auto ov_reel_picture = make_shared<dcp::ReelMonoPictureAsset>(dynamic_pointer_cast<dcp::ReelMonoPictureAsset>(ov_reel->main_picture())->mono_asset(), 0); + auto ov_reel_picture = make_shared<dcp::ReelMonoPictureAsset>(dynamic_pointer_cast<dcp::ReelMonoPictureAsset>(ov_reel->main_picture())->mono_j2k_asset(), 0); auto ov_reel_sound = make_shared<dcp::ReelSoundAsset>(ov_reel->main_sound()->asset(), 0); /* Make VF */ diff --git a/test/mono_mpeg2_picture_read_test.cc b/test/mono_mpeg2_picture_read_test.cc new file mode 100644 index 00000000..f0d4aac0 --- /dev/null +++ b/test/mono_mpeg2_picture_read_test.cc @@ -0,0 +1,62 @@ +/* + Copyright (C) 2023 Carl Hetherington <cth@carlh.net> + + This file is part of libdcp. + + libdcp 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. + + libdcp 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 libdcp. If not, see <http://www.gnu.org/licenses/>. + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + + +#include "mono_mpeg2_picture_asset.h" +#include "mpeg2_transcode.h" +#include "test.h" +#include <boost/test/unit_test.hpp> + +extern "C" { +#include <libavcodec/avcodec.h> +} + + +BOOST_AUTO_TEST_CASE(mpeg_mono_picture_read_test) +{ + dcp::MonoMPEG2PictureAsset asset(private_test / "data" / "mas" / "r2.mxf" ); + std::cout << "frame rate " << asset.frame_rate().numerator << "\n"; + std::cout << "duration " << asset.intrinsic_duration() << "\n"; + + auto reader = asset.start_read(); + + dcp::MPEG2Decompressor decompressor; + for (auto i = 0; i < asset.intrinsic_duration(); ++i) { + auto images = decompressor.decompress_frame(reader->get_frame(i)); + BOOST_CHECK_EQUAL(images.size(), i == 0 ? 0U : 1U); + } + + auto images = decompressor.flush(); + BOOST_CHECK_EQUAL(images.size(), 1U); +} + diff --git a/test/wscript b/test/wscript index 92c83598..ee5b754b 100644 --- a/test/wscript +++ b/test/wscript @@ -53,7 +53,7 @@ def configure(conf): def build(bld): obj = bld(features='cxx cxxprogram') obj.name = 'tests' - obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM BOOST_DATETIME OPENJPEG CXML XMLSEC1 SNDFILE OPENMP ASDCPLIB_DCPOMATIC LIBXML++ OPENSSL XERCES DL' + obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM BOOST_DATETIME OPENJPEG CXML XMLSEC1 SNDFILE OPENMP ASDCPLIB_DCPOMATIC LIBXML++ OPENSSL XERCES DL AVCODEC AVUTIL' obj.cppflags = ['-fno-inline', '-fno-elide-constructors', '-g', '-O0'] if bld.env['CXX_NAME'] == 'gcc': obj.cppflags.append('-fno-default-inline') @@ -94,6 +94,7 @@ def build(bld): make_digest_test.cc markers_test.cc mca_test.cc + mono_mpeg2_picture_read_test.cc kdm_test.cc key_test.cc language_tag_test.cc @@ -124,7 +125,7 @@ def build(bld): obj = bld(features='cxx cxxprogram') obj.name = 'subs_in_out' - obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC XMLSEC1 OPENSSL DL LIBXML++' + obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC XMLSEC1 OPENSSL DL LIBXML++ AVCODEC AVUTIL' obj.cppflags = ['-fno-inline', '-fno-elide-constructors', '-g', '-O0'] if bld.env['CXX_NAME'] == 'gcc': obj.cppflags.append('-fno-default-inline') @@ -141,7 +142,7 @@ def build(bld): obj = bld(features='cxx cxxprogram') obj.name = 'rewrite_subs' - obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC XMLSEC1 OPENSSL DL LIBXML++' + obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC XMLSEC1 OPENSSL DL LIBXML++ AVCODEC AVUTIL' obj.cppflags = ['-fno-inline', '-fno-elide-constructors', '-g', '-O0'] if bld.env['CXX_NAME'] == 'gcc': obj.cppflags.append('-fno-default-inline') |
