summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-11-14 22:01:07 +0100
committerCarl Hetherington <cth@carlh.net>2024-04-22 01:42:00 +0200
commit066471f69400fc72e9c126ab36f5427329f30220 (patch)
treedd15f6b6aa7a74b5cca2ce5f300723b1b72d2f11 /test
parent0fbfe3d2dd5de9eab299f2ff569bff29cc6f8e19 (diff)
Support MPEG2 decompression.
Diffstat (limited to 'test')
-rw-r--r--test/dcp_test.cc6
-rw-r--r--test/kdm_test.cc2
-rw-r--r--test/mono_mpeg2_picture_read_test.cc62
-rw-r--r--test/wscript7
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')