for p in ['rgb_to_xyz', 'j2k_transcode']:
obj = bld(features='cxx cxxprogram')
obj.name = p
- obj.uselib = 'BOOST_FILESYSTEM ASDCPLIB_CTH CXML'
+ obj.uselib = 'BOOST_FILESYSTEM ASDCPLIB_DCPOMATIC CXML'
obj.cppflags = ['-g', '-O2']
obj.use = 'libdcp%s' % bld.env.API_VERSION
obj.source = "%s.cc" % p
return (
('libcxml', 'v0.17.8', options),
('openjpeg', 'ad8edaacd54a862940d0a77c41ecda5858b54d6e'),
- ('asdcplib', '8a4a2f25cac0c58aac1d4267facab20e5ec3b57f')
+ ('asdcplib', '4b5d6e8d27dfd5fb282590538068662f4dbbf1c9')
)
def build(target, options):
obj = bld(features='cxx cxxprogram')
obj.name = example
obj.use = 'libdcp%s' % bld.env.API_VERSION
- obj.uselib = 'OPENJPEG CXML OPENMP ASDCPLIB_CTH BOOST_FILESYSTEM OPENSSL XMLSEC1 MAGICK'
+ obj.uselib = 'OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC BOOST_FILESYSTEM OPENSSL XMLSEC1 MAGICK'
obj.source = example + '.cc'
obj.target = example
obj.install_path = ''
Name: libdcp
Description: DCP reading and writing library
Version: @version@
-Requires: openssl libxml++-@xmlpp_api@ xmlsec1 libasdcp-carl xerces-c
+Requires: openssl libxml++-@xmlpp_api@ xmlsec1 libasdcp-dcpomatic xerces-c
Libs: @libs@
Cflags: -I${includedir}
*/
ASDCP::EssenceType_t type;
- auto const result = ASDCP::EssenceType(dcp::filesystem::fix_long_path(path).string().c_str(), type);
+ Kumu::FileReaderFactory factory;
+ auto const result = ASDCP::EssenceType(dcp::filesystem::fix_long_path(path).string().c_str(), type, factory);
if (!ASDCP_SUCCESS(result)) {
throw ReadError(String::compose("Could not find essence type (%1)", result.Message()), path.string());
}
explicit AssetReader (Asset const * asset, boost::optional<Key> key, Standard standard)
: _crypto_context (new DecryptionContext(key, standard))
{
- _reader = new R ();
+ Kumu::FileReaderFactory factory;
+ _reader = new R(factory);
DCP_ASSERT (asset->file());
auto const r = _reader->OpenRead(dcp::filesystem::fix_long_path(*asset->file()).string().c_str());
if (ASDCP_FAILURE(r)) {
#include "atmos_asset_writer.h"
#include "exceptions.h"
#include <asdcp/AS_DCP.h>
+#include <asdcp/KM_fileio.h>
using std::string;
: Asset (file)
, MXF (Standard::SMPTE)
{
- ASDCP::ATMOS::MXFReader reader;
+ Kumu::FileReaderFactory factory;
+ ASDCP::ATMOS::MXFReader reader(factory);
auto r = reader.OpenRead(dcp::filesystem::fix_long_path(file).string().c_str());
if (ASDCP_FAILURE (r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", file.string(), r));
MonoPictureAsset::MonoPictureAsset (boost::filesystem::path file)
: PictureAsset (file)
{
- ASDCP::JP2K::MXFReader reader;
+ Kumu::FileReaderFactory factory;
+ ASDCP::JP2K::MXFReader reader(factory);
auto r = reader.OpenRead(dcp::filesystem::fix_long_path(file).string().c_str());
if (ASDCP_FAILURE(r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", file.string(), r));
return false;
}
- ASDCP::JP2K::MXFReader reader_A;
+ Kumu::FileReaderFactory factory;
+ ASDCP::JP2K::MXFReader reader_A(factory);
DCP_ASSERT (_file);
auto r = reader_A.OpenRead(dcp::filesystem::fix_long_path(*_file).string().c_str());
if (ASDCP_FAILURE(r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", _file->string(), r));
}
- ASDCP::JP2K::MXFReader reader_B;
+ ASDCP::JP2K::MXFReader reader_B(factory);
DCP_ASSERT (other->file ());
r = reader_B.OpenRead(dcp::filesystem::fix_long_path(*other->file()).string().c_str());
if (ASDCP_FAILURE (r)) {
{
auto xml = make_shared<cxml::Document>("SubtitleReel");
- auto reader = make_shared<ASDCP::TimedText::MXFReader>();
+ Kumu::FileReaderFactory factory;
+ auto reader = make_shared<ASDCP::TimedText::MXFReader>(factory);
auto r = Kumu::RESULT_OK;
{
ASDCPErrorSuspender sus;
/* Our data was encrypted; now we can decrypt it */
- auto reader = make_shared<ASDCP::TimedText::MXFReader>();
+ Kumu::FileReaderFactory factory;
+ auto reader = make_shared<ASDCP::TimedText::MXFReader>(factory);
auto r = reader->OpenRead(dcp::filesystem::fix_long_path(*_file).string().c_str());
if (ASDCP_FAILURE (r)) {
boost::throw_exception (
bool
SMPTESubtitleAsset::valid_mxf (boost::filesystem::path file)
{
- ASDCP::TimedText::MXFReader reader;
+ Kumu::FileReaderFactory factory;
+ ASDCP::TimedText::MXFReader reader(factory);
Kumu::DefaultLogSink().UnsetFilterFlag(Kumu::LOG_ALLOW_ALL);
auto r = reader.OpenRead(dcp::filesystem::fix_long_path(file).string().c_str());
Kumu::DefaultLogSink().SetFilterFlag(Kumu::LOG_ALLOW_ALL);
SoundAsset::SoundAsset (boost::filesystem::path file)
: Asset (file)
{
- ASDCP::PCM::MXFReader reader;
+ Kumu::FileReaderFactory factory;
+ ASDCP::PCM::MXFReader reader(factory);
auto r = reader.OpenRead(dcp::filesystem::fix_long_path(file).string().c_str());
if (ASDCP_FAILURE(r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", file.string(), r));
return true;
}
- ASDCP::PCM::MXFReader reader_A;
+ Kumu::FileReaderFactory factory;
+ ASDCP::PCM::MXFReader reader_A(factory);
DCP_ASSERT (file());
auto r = reader_A.OpenRead(dcp::filesystem::fix_long_path(*file()).string().c_str());
if (ASDCP_FAILURE(r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", file()->string(), r));
}
- ASDCP::PCM::MXFReader reader_B;
+ ASDCP::PCM::MXFReader reader_B(factory);
r = reader_B.OpenRead(dcp::filesystem::fix_long_path(*other->file()).string().c_str());
if (ASDCP_FAILURE (r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", other->file()->string(), r));
bool
SoundAsset::valid_mxf (boost::filesystem::path file)
{
- ASDCP::PCM::MXFReader reader;
+ Kumu::FileReaderFactory factory;
+ ASDCP::PCM::MXFReader reader(factory);
Kumu::Result_t r = reader.OpenRead(dcp::filesystem::fix_long_path(file).string().c_str());
return !ASDCP_FAILURE (r);
}
StereoPictureAsset::StereoPictureAsset (boost::filesystem::path file)
: PictureAsset (file)
{
- ASDCP::JP2K::MXFSReader reader;
+ Kumu::FileReaderFactory factory;
+ ASDCP::JP2K::MXFSReader reader(factory);
auto r = reader.OpenRead(dcp::filesystem::fix_long_path(file).string().c_str());
if (ASDCP_FAILURE(r)) {
boost::throw_exception (MXFFileError("could not open MXF file for reading", file.string(), r));
bool
StereoPictureAsset::equals(shared_ptr<const Asset> other, EqualityOptions const& opt, NoteHandler note) const
{
- ASDCP::JP2K::MXFSReader reader_A;
+ Kumu::FileReaderFactory factory;
+ ASDCP::JP2K::MXFSReader reader_A(factory);
DCP_ASSERT (file());
auto r = reader_A.OpenRead(dcp::filesystem::fix_long_path(*file()).string().c_str());
if (ASDCP_FAILURE (r)) {
boost::throw_exception (MXFFileError ("could not open MXF file for reading", file()->string(), r));
}
- ASDCP::JP2K::MXFSReader reader_B;
+ ASDCP::JP2K::MXFSReader reader_B(factory);
DCP_ASSERT (other->file());
r = reader_B.OpenRead(dcp::filesystem::fix_long_path(*other->file()).string().c_str());
if (ASDCP_FAILURE (r)) {
obj.name = 'libdcp%s' % bld.env.API_VERSION
obj.target = 'dcp%s' % bld.env.API_VERSION
obj.export_includes = ['.']
- obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_CTH XERCES'
+ obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_DCPOMATIC XERCES'
obj.source = source
# Library for gcov
obj.name = 'libdcp%s_gcov' % bld.env.API_VERSION
obj.target = 'dcp%s_gcov' % bld.env.API_VERSION
obj.export_includes = ['.']
- obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_CTH XERCES'
+ obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1 ASDCPLIB_DCPOMATIC XERCES'
obj.use = 'libkumu-libdcp%s libasdcp-libdcp%s' % (bld.env.API_VERSION, bld.env.API_VERSION)
obj.source = source
obj.cppflags = ['-fprofile-arcs', '-ftest-coverage', '-fno-inline', '-fno-default-inline', '-fno-elide-constructors', '-g', '-O0']
/* Check MXF */
- auto reader = new ASDCP::PCM::MXFReader();
+ Kumu::FileReaderFactory factory;
+ auto reader = new ASDCP::PCM::MXFReader(factory);
reader->OpenRead(boost::filesystem::path(dir / "mxf.mxf").string());
list<ASDCP::MXF::InterchangeObject*> channels;
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>7a4KZ9j2kpSuBz+iBQD4f03ctm8=</Hash>
+ <Hash>vsVjRV9vhTBPUWfE/TT1o2vdQsI=</Hash>
<FrameRate>24 1</FrameRate>
<ScreenAspectRatio>1998 1080</ScreenAspectRatio>
</MainPicture>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>KcJb7S2K5cNm8RG4kfQD5FTeS0A=</Hash>
+ <Hash>3M7YTgvFKXXMEGLkIbV4miC90FE=</Hash>
</MainSound>
<meta:CompositionMetadataAsset xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata">
<Id>urn:uuid:dd015243-ab77-435c-a13d-690566885121</Id>
<Asset>
<Id>urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358ab</Id>
<AnnotationText>6affb8ee-0020-4dff-a53c-17652f6358ab</AnnotationText>
- <Hash>2DSYFM8X5sGdsYgzhs3mBbTNNmw=</Hash>
+ <Hash>skI+5b/9LA/y6h0mcyxysJYanxI=</Hash>
<Size>8559</Size>
<Type>text/xml</Type>
<OriginalFileName>cpl_6affb8ee-0020-4dff-a53c-17652f6358ab.xml</OriginalFileName>
<Asset>
<Id>urn:uuid:5407b210-4441-4e97-8b16-8bdc7c12da54</Id>
<AnnotationText>5407b210-4441-4e97-8b16-8bdc7c12da54</AnnotationText>
- <Hash>7a4KZ9j2kpSuBz+iBQD4f03ctm8=</Hash>
+ <Hash>vsVjRV9vhTBPUWfE/TT1o2vdQsI=</Hash>
<Size>31648</Size>
<Type>application/mxf</Type>
<OriginalFileName>video.mxf</OriginalFileName>
<Asset>
<Id>urn:uuid:97f0f352-5b77-48ee-a558-9df37717f4fa</Id>
<AnnotationText>97f0f352-5b77-48ee-a558-9df37717f4fa</AnnotationText>
- <Hash>KcJb7S2K5cNm8RG4kfQD5FTeS0A=</Hash>
+ <Hash>3M7YTgvFKXXMEGLkIbV4miC90FE=</Hash>
<Size>881326</Size>
<Type>application/mxf</Type>
<OriginalFileName>audio.mxf</OriginalFileName>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>NzWhEbTccUIh1sSXIbU+8POVui0=</Hash>
+ <Hash>X+4lOvviLTQeP28hyzhCOGjraiE=</Hash>
</MainSound>
<msp-cpl:MainStereoscopicPicture xmlns:msp-cpl="http://www.smpte-ra.org/schemas/429-10/2008/Main-Stereo-Picture-CPL">
<Id>urn:uuid:5407b210-4441-4e97-8b16-8bdc7c12da54</Id>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>BUpeFS6X9j+X0z2TZWSsLMT4pE0=</Hash>
+ <Hash>dU+tcR6bZ5BQ/TXKtBY03ejjUmc=</Hash>
<FrameRate>48 1</FrameRate>
<ScreenAspectRatio>1998 1080</ScreenAspectRatio>
</msp-cpl:MainStereoscopicPicture>
<Asset>
<Id>urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358ab</Id>
<AnnotationText>6affb8ee-0020-4dff-a53c-17652f6358ab</AnnotationText>
- <Hash>zaAcrAcv0oOzOa3etTP6xDfzQko=</Hash>
+ <Hash>2jp5+JDLOh5CqzQ8goZTzBEWsPo=</Hash>
<Size>1686</Size>
<Type>text/xml</Type>
<OriginalFileName>cpl_6affb8ee-0020-4dff-a53c-17652f6358ab.xml</OriginalFileName>
<Asset>
<Id>urn:uuid:5407b210-4441-4e97-8b16-8bdc7c12da54</Id>
<AnnotationText>5407b210-4441-4e97-8b16-8bdc7c12da54</AnnotationText>
- <Hash>BUpeFS6X9j+X0z2TZWSsLMT4pE0=</Hash>
+ <Hash>dU+tcR6bZ5BQ/TXKtBY03ejjUmc=</Hash>
<Size>63160</Size>
<Type>application/mxf</Type>
<OriginalFileName>video.mxf</OriginalFileName>
<Asset>
<Id>urn:uuid:fc843acc-1ad9-4808-b9ed-33f5319e047d</Id>
<AnnotationText>fc843acc-1ad9-4808-b9ed-33f5319e047d</AnnotationText>
- <Hash>NzWhEbTccUIh1sSXIbU+8POVui0=</Hash>
+ <Hash>X+4lOvviLTQeP28hyzhCOGjraiE=</Hash>
<Size>161326</Size>
<Type>application/mxf</Type>
<OriginalFileName>audio.mxf</OriginalFileName>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>o3VmpdFsNUgF11oadcaGJ/IfO0M=</Hash>
+ <Hash>w7xIWU3Q+QnEQMq7BcOhsWO+OU0=</Hash>
<FrameRate>24 1</FrameRate>
<ScreenAspectRatio>1998 1080</ScreenAspectRatio>
</MainPicture>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>l+XLgxe2fMZDgY+0QYzDfGhvTQM=</Hash>
+ <Hash>5ANfi1KoyGiZ8hQIhDHm5f/OvQY=</Hash>
</MainSound>
<axd:AuxData xmlns:axd="http://www.dolby.com/schemas/2012/AD">
<Id>urn:uuid:b68febcc-5ddf-489a-84a7-924f29fa2afd</Id>
<Asset>
<Id>urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358ab</Id>
<AnnotationText>6affb8ee-0020-4dff-a53c-17652f6358ab</AnnotationText>
- <Hash>eqEIVxSAbJL+SROmqrDHbr9sb+A=</Hash>
+ <Hash>4zHV3/AhGYo5WjNmyuxeRSPOVwk=</Hash>
<Size>2024</Size>
<Type>text/xml</Type>
<OriginalFileName>cpl_6affb8ee-0020-4dff-a53c-17652f6358ab.xml</OriginalFileName>
<Asset>
<Id>urn:uuid:5407b210-4441-4e97-8b16-8bdc7c12da54</Id>
<AnnotationText>5407b210-4441-4e97-8b16-8bdc7c12da54</AnnotationText>
- <Hash>o3VmpdFsNUgF11oadcaGJ/IfO0M=</Hash>
+ <Hash>w7xIWU3Q+QnEQMq7BcOhsWO+OU0=</Hash>
<Size>40144</Size>
<Type>application/mxf</Type>
<OriginalFileName>video.mxf</OriginalFileName>
<Asset>
<Id>urn:uuid:97f0f352-5b77-48ee-a558-9df37717f4fa</Id>
<AnnotationText>97f0f352-5b77-48ee-a558-9df37717f4fa</AnnotationText>
- <Hash>l+XLgxe2fMZDgY+0QYzDfGhvTQM=</Hash>
+ <Hash>5ANfi1KoyGiZ8hQIhDHm5f/OvQY=</Hash>
<Size>161326</Size>
<Type>application/mxf</Type>
<OriginalFileName>audio.mxf</OriginalFileName>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>7a4KZ9j2kpSuBz+iBQD4f03ctm8=</Hash>
+ <Hash>vsVjRV9vhTBPUWfE/TT1o2vdQsI=</Hash>
<FrameRate>24 1</FrameRate>
<ScreenAspectRatio>1.85</ScreenAspectRatio>
</MainPicture>
<IntrinsicDuration>24</IntrinsicDuration>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
- <Hash>KcJb7S2K5cNm8RG4kfQD5FTeS0A=</Hash>
+ <Hash>3M7YTgvFKXXMEGLkIbV4miC90FE=</Hash>
</MainSound>
</AssetList>
</Reel>
<Asset>
<Id>urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358ab</Id>
<AnnotationText>6affb8ee-0020-4dff-a53c-17652f6358ab</AnnotationText>
- <Hash>z9r7fpZ4wf0GbiliDzpfKQvFkmo=</Hash>
+ <Hash>SgCEvehTaji0MCWOJTVioOcNndY=</Hash>
<Size>1965</Size>
<Type>text/xml;asdcpKind=CPL</Type>
<OriginalFileName>cpl_6affb8ee-0020-4dff-a53c-17652f6358ab.xml</OriginalFileName>
<Asset>
<Id>urn:uuid:5407b210-4441-4e97-8b16-8bdc7c12da54</Id>
<AnnotationText>5407b210-4441-4e97-8b16-8bdc7c12da54</AnnotationText>
- <Hash>7a4KZ9j2kpSuBz+iBQD4f03ctm8=</Hash>
+ <Hash>vsVjRV9vhTBPUWfE/TT1o2vdQsI=</Hash>
<Size>31648</Size>
<Type>application/x-smpte-mxf;asdcpKind=Picture</Type>
<OriginalFileName>video.mxf</OriginalFileName>
<Asset>
<Id>urn:uuid:97f0f352-5b77-48ee-a558-9df37717f4fa</Id>
<AnnotationText>97f0f352-5b77-48ee-a558-9df37717f4fa</AnnotationText>
- <Hash>KcJb7S2K5cNm8RG4kfQD5FTeS0A=</Hash>
+ <Hash>3M7YTgvFKXXMEGLkIbV4miC90FE=</Hash>
<Size>881326</Size>
<Type>application/x-smpte-mxf;asdcpKind=Sound</Type>
<OriginalFileName>audio.mxf</OriginalFileName>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
<KeyId>urn:uuid:ac8d301c-e5d9-4343-b6f3-ba2668adbe56</KeyId>
- <Hash>AVtX8wz76uG2Uw0Qbc9+DKnHUfw=</Hash>
+ <Hash>Q0GMntXvEqVQsiv+YkfhMrXdw0w=</Hash>
<FrameRate>24 1</FrameRate>
<ScreenAspectRatio>1998 1080</ScreenAspectRatio>
</MainPicture>
<EntryPoint>0</EntryPoint>
<Duration>24</Duration>
<KeyId>urn:uuid:7ab6c77b-6648-44b9-8549-a5290ada6238</KeyId>
- <Hash>3o02UpYqrl6w0NQbFvrB2tKxaIk=</Hash>
+ <Hash>v0SCdh2xnKNzGC7Sk5pS2q5Q/wQ=</Hash>
</MainSound>
</AssetList>
</Reel>
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <dsig:DigestValue>X3YkODMLyEJsAz5v3S/uT+xDD7c=</dsig:DigestValue>
+ <dsig:DigestValue>DBBENxFb5Qv377fb86n0KgUQ7go=</dsig:DigestValue>
</dsig:Reference>
</dsig:SignedInfo>
- <dsig:SignatureValue>jH02vGxlTTi9T94KCIfMkafmdO0wluP9cvh+u5HyYoZo/D7O1Ki202t5uHRp0wcu
-OfBFuu1Hw3Ooy/VEa2l4l/UDfE7lI+D79e0VfA8HwFB+c21GF7Q2FRV5ddu9ODgz
-rk6kC5fZSLxc7cpK6jPNnT285O3nHfjk6MQ0fgGfNbvMefgeEWVKj8qcyFgN6H4e
-wr1omcjbdw/HVQaOW84//pBRSRdMJGe1u2iUE2RwxBLzP4BepzkMv9Asm6uDo1YG
-X1d60g2aCUdxAg9fjyTaOss1nRp1YdPlb3SHUhKXgTT/eAPkmmr7bs3jJtp2BN9U
-4Izz2GR/3Uyf0NP20mZgNQ==</dsig:SignatureValue>
+ <dsig:SignatureValue>rhF1QacGUhxm1jfcgyBjAo2BmD4QxBl7c6Bzt8rjXXhR+NVT4ITeyxi39+94WwBx
+Yp8iQhF46bE2QGZAr+HnZZJGVG3ajeaQ4uvPp2KRC8sHpBlZ2rGGtyjXAflYjepw
+c1cLvRoAKbxOMW+ESxjyYOKgT0Bke0GhbzZ8+w+hGZLHxK9oTokIG9YDnRNUKN5W
+n6avbxuaT8wtZgVwD4qfKzMeJlYW3yDFo/2apQA5K+oCj/gfrS1habYqBoNo9kO1
+fWkQ7LIeRrYuzNlr5K4e/LyIm7SHwb9EGcA7K8WbDrHKvaJmTs/T01QhU9f+huk2
+ZGJMMCGHhiwcbVtqVhgJSQ==</dsig:SignatureValue>
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509IssuerSerial>
<Asset>
<Id>urn:uuid:6affb8ee-0020-4dff-a53c-17652f6358ab</Id>
<AnnotationText>6affb8ee-0020-4dff-a53c-17652f6358ab</AnnotationText>
- <Hash>Zd9zaFAGx/4W2B3vSZkAqTzcDZ0=</Hash>
+ <Hash>sLWF9OcgdkvBUH1VcNiwseLA3sA=</Hash>
<Size>9226</Size>
<Type>text/xml</Type>
<OriginalFileName>cpl_6affb8ee-0020-4dff-a53c-17652f6358ab.xml</OriginalFileName>
<Asset>
<Id>urn:uuid:9a7fbb03-4078-4944-90b1-0d8a21c9d793</Id>
<AnnotationText>9a7fbb03-4078-4944-90b1-0d8a21c9d793</AnnotationText>
- <Hash>AVtX8wz76uG2Uw0Qbc9+DKnHUfw=</Hash>
+ <Hash>Q0GMntXvEqVQsiv+YkfhMrXdw0w=</Hash>
<Size>44008</Size>
<Type>application/mxf</Type>
<OriginalFileName>video.mxf</OriginalFileName>
<Asset>
<Id>urn:uuid:ce300880-a425-40a6-adac-eb1e3f5643fc</Id>
<AnnotationText>ce300880-a425-40a6-adac-eb1e3f5643fc</AnnotationText>
- <Hash>3o02UpYqrl6w0NQbFvrB2tKxaIk=</Hash>
+ <Hash>v0SCdh2xnKNzGC7Sk5pS2q5Q/wQ=</Hash>
<Size>165454</Size>
<Type>application/mxf</Type>
<OriginalFileName>audio.mxf</OriginalFileName>
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
- <dsig:DigestValue>0F1ZXfoRDPIQHlRG0MC1uXkahG8=</dsig:DigestValue>
+ <dsig:DigestValue>OU1UpJxBmpxK8SE5yfe8aJsqoIw=</dsig:DigestValue>
</dsig:Reference>
</dsig:SignedInfo>
- <dsig:SignatureValue>u98MLscN/Fn3YxGFMw6kP7fIWUj05FPxQvIYvsIpP68UP3FX9rdP6nh3Olyv194d
-A1fQJu4ZamTcYN2O2E5vdGjxxHlPNXfFPckWc9Sy1i3V8u+EFdOggjMY4snvPot6
-kMyzAICuKzTJs4l+O/BzJAJSFSxrEtBCYEFxrtyKntDxSUE7ePSqPwcim6+5BzDO
-QOsIp3wjJHlp7u4QqU3knIiaM7SibIXqtIBF7TOrChWZjFImKePNib9/DXvnE2WL
-Y+5wJjGhImQR+2U2DDpSCLkl0kVgDrYfKcNg4lXUDZGEKo0Yqz0+1Rszz/DqsC+J
-6mYxqMMvRXeh9pViSpgKaA==</dsig:SignatureValue>
+ <dsig:SignatureValue>ypg6tt5iJi7YEUJQfEQmZeigXzcm2xn/J59tqqYBqwmAch1ia//Khyo6m7/HpQJl
+2Y5swUI8MtmzdV3gj3urd8WuQsDWFLflIHHiIanYE/XCdFZ8lV/nvyCkAaf/AH2V
+W7bWD8/fYXJD2G9a2tRiWTjzfgpsTk+ox+C12Y/SebWAQ97sSLIMwwmQIYK2kTnh
+nbKSuhk+v+V2ObpYl48zXu3za3Yt77rCdcGgPwYr/NUI47ascpnueNw48clDtjp+
+775jeA5ZG5lBR3VGTLwvoOXT3CH/FgG0DPSLmYbRnOzEShVUt7xFgbxMgNTYOGQJ
+3ipS6qmHgWHjX3/fo6isgg==</dsig:SignatureValue>
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509IssuerSerial>
RNGFixer::RNGFixer ()
{
- Kumu::cth_test = true;
+ Kumu::dcpomatic_test = true;
Kumu::FortunaRNG().Reset();
}
RNGFixer::~RNGFixer ()
{
- Kumu::cth_test = false;
+ Kumu::dcpomatic_test = false;
}
HashCalculator video_calc(video_path);
auto mod = fopen(video_path.string().c_str(), "r+b");
BOOST_REQUIRE (mod);
- fseek (mod, 4096, SEEK_SET);
+ BOOST_REQUIRE_EQUAL(fseek(mod, -16, SEEK_END), 0);
int x = 42;
- fwrite (&x, sizeof(x), 1, mod);
+ BOOST_REQUIRE(fwrite(&x, sizeof(x), 1, mod) == 1);
fclose (mod);
auto audio_path = path(dir / "audio.mxf");
HashCalculator audio_calc(audio_path);
mod = fopen(audio_path.string().c_str(), "r+b");
BOOST_REQUIRE (mod);
- BOOST_REQUIRE_EQUAL (fseek(mod, -64, SEEK_END), 0);
+ BOOST_REQUIRE_EQUAL(fseek(mod, 0, SEEK_END), 0);
BOOST_REQUIRE (fwrite (&x, sizeof(x), 1, mod) == 1);
fclose (mod);
).set_reference_hash("x" + calc.old_hash()).set_calculated_hash(calc.old_hash()),
{ dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_PICTURE_HASHES, canonical(dir / "video.mxf") },
{ dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::MISMATCHED_SOUND_HASHES, canonical(dir / "audio.mxf") },
- { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, "value 'xKcJb7S2K5cNm8RG4kfQD5FTeS0A=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 28 },
- { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, "value 'x2DSYFM8X5sGdsYgzhs3mBbTNNmw=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 12 },
- { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, "value 'x7a4KZ9j2kpSuBz+iBQD4f03ctm8=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 20 },
+ { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, "value 'x3M7YTgvFKXXMEGLkIbV4miC90FE=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 28 },
+ { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, "value 'xskI+5b/9LA/y6h0mcyxysJYanxI=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 12 },
+ { dcp::VerificationNote::Type::ERROR, dcp::VerificationNote::Code::INVALID_XML, "value 'xvsVjRV9vhTBPUWfE/TT1o2vdQsI=' is invalid Base64-encoded binary", canonical(dir / dcp_test1_pkl()), 20 },
});
}
{ dir },
{},
{
- { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_TIMED_TEXT_SIZE_IN_BYTES, string("121695488"), canonical(dir / "subs.mxf") },
+ { dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_TIMED_TEXT_SIZE_IN_BYTES, string("121698284"), canonical(dir / "subs.mxf") },
{ dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::INVALID_TIMED_TEXT_FONT_SIZE_IN_BYTES, string("121634816"), canonical(dir / "subs.mxf") },
{ dcp::VerificationNote::Type::BV21_ERROR, dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, canonical(dir / "subs.mxf") },
{ dcp::VerificationNote::Type::WARNING, dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME },
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_CTH LIBXML++ OPENSSL XERCES DL'
+ obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM BOOST_DATETIME OPENJPEG CXML XMLSEC1 SNDFILE OPENMP ASDCPLIB_DCPOMATIC LIBXML++ OPENSSL XERCES DL'
obj.cppflags = ['-fno-inline', '-fno-elide-constructors', '-g', '-O0']
if bld.env['CXX_NAME'] == 'gcc':
obj.cppflags.append('-fno-default-inline')
obj = bld(features='cxx cxxprogram')
obj.name = 'subs_in_out'
- obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_CTH XMLSEC1 OPENSSL DL LIBXML++'
+ obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC XMLSEC1 OPENSSL DL LIBXML++'
obj.cppflags = ['-fno-inline', '-fno-elide-constructors', '-g', '-O0']
if bld.env['CXX_NAME'] == 'gcc':
obj.cppflags.append('-fno-default-inline')
obj = bld(features='cxx cxxprogram')
obj.name = 'rewrite_subs'
- obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_CTH XMLSEC1 OPENSSL DL LIBXML++'
+ obj.uselib = 'BOOST_TEST BOOST_FILESYSTEM OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC XMLSEC1 OPENSSL DL LIBXML++'
obj.cppflags = ['-fno-inline', '-fno-elide-constructors', '-g', '-O0']
if bld.env['CXX_NAME'] == 'gcc':
obj.cppflags.append('-fno-default-inline')
#
def build(bld):
- uselib = 'OPENJPEG CXML OPENMP ASDCPLIB_CTH BOOST_FILESYSTEM LIBXML++ XMLSEC1 OPENSSL XERCES DL MAGICK'
+ uselib = 'OPENJPEG CXML OPENMP ASDCPLIB_DCPOMATIC BOOST_FILESYSTEM LIBXML++ XMLSEC1 OPENSSL XERCES DL MAGICK'
for f in ['diff', 'info', 'verify']:
obj = bld(features='cxx cxxprogram')
opt.add_option('--target-windows-64', action='store_true', default=False, help='set up to do a cross-compile to Windows 64-bit')
opt.add_option('--target-windows-32', action='store_true', default=False, help='set up to do a cross-compile to Windows 32-bit')
opt.add_option('--enable-debug', action='store_true', default=False, help='build with debugging information and without optimisation')
- opt.add_option('--static', action='store_true', default=False, help='build libdcp statically, and link statically to openjpeg, cxml, asdcplib-carl')
+ opt.add_option('--static', action='store_true', default=False, help='build libdcp statically, and link statically to openjpeg, cxml, asdcplib-dcpomatic')
opt.add_option('--disable-tests', action='store_true', default=False, help='disable building of tests')
opt.add_option('--disable-benchmarks', action='store_true', default=False, help='disable building of benchmarks')
opt.add_option('--enable-gcov', action='store_true', default=False, help='use gcov in tests')
if conf.options.static:
conf.env.STLIB_OPENJPEG = ['openjp2']
- conf.check_cfg(package='libasdcp-carl', args='libasdcp-carl >= 0.1.3 --cflags', uselib_store='ASDCPLIB_CTH', mandatory=True)
- conf.env.HAVE_ASDCPLIB_CTH = 1
- conf.env.STLIB_ASDCPLIB_CTH = ['asdcp-carl', 'kumu-carl']
+ conf.check_cfg(package='libasdcp-dcpomatic', args='libasdcp-dcpomatic >= 0.1.3 --cflags', uselib_store='ASDCPLIB_DCPOMATIC', mandatory=True)
+ conf.env.HAVE_ASDCPLIB_DCPOMATIC = 1
+ conf.env.STLIB_ASDCPLIB_DCPOMATIC = ['asdcp-dcpomatic', 'kumu-dcpomatic']
conf.env.HAVE_CXML = 1
conf.env.LIB_CXML = ['xml++-' + conf.env.XMLPP_API, 'glibmm-2.4']
conf.env.STLIB_CXML = ['cxml']
conf.check_cfg(package='xerces-c', args='--cflags', uselib_store='XERCES', mandatory=True)
conf.env.LIB_XERCES = ['xerces-c', 'icuuc', 'curl']
else:
- conf.check_cfg(package='libasdcp-carl', args='libasdcp-carl >= 0.1.3 --cflags --libs', uselib_store='ASDCPLIB_CTH', mandatory=True)
+ conf.check_cfg(package='libasdcp-dcpomatic', args='libasdcp-dcpomatic >= 0.1.3 --cflags --libs', uselib_store='ASDCPLIB_DCPOMATIC', mandatory=True)
conf.check_cfg(package='libcxml', args='libcxml >= 0.17.0 --cflags --libs', uselib_store='CXML', mandatory=True)
conf.check_cfg(package='xerces-c', args='--cflags --libs', uselib_store='XERCES', mandatory=True)