summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-12-28 17:47:55 +0000
committerCarl Hetherington <cth@carlh.net>2014-12-28 17:47:55 +0000
commit33b6d7434c5d4776e5b4fc4448eccdb142948d0e (patch)
tree92f458d96de1cf88ea4584ab67f2a49ad26ec17d
parentb2c820e178296722eeff355064f0469907465332 (diff)
Add a basic stereo test.
-rw-r--r--src/stereo_picture_mxf_writer.h6
-rw-r--r--test/dcp_test.cc89
-rw-r--r--test/ref/DCP/bar/11c45f5d-d465-4c41-b008-5284cf38a037_cpl.xml (renamed from test/ref/DCP/bar/f2abab68-8c7d-43b2-a959-259a8f79e179_cpl.xml)12
-rw-r--r--test/ref/DCP/bar/ASSETMAP.xml2
-rw-r--r--test/ref/DCP/bar/audio.mxfbin164398 -> 164398 bytes
-rw-r--r--test/ref/DCP/bar/bf315122-2cd2-448c-8b1b-9f4c85a21629_pkl.xml (renamed from test/ref/DCP/bar/5d86578b-b6b9-4bb4-80c0-6d793e9e63a5_pkl.xml)12
-rw-r--r--test/ref/DCP/bar/video.mxfbin28840 -> 28840 bytes
-rw-r--r--test/ref/DCP/dcp_test2/6d857146-24c9-4626-bc7a-3971b15f1ba4_pkl.xml2
-rw-r--r--test/ref/DCP/dcp_test2/74e205d0-d145-42d2-8c49-7b55d058ca55_cpl.xml2
-rw-r--r--test/ref/DCP/dcp_test2/ASSETMAP.xml2
-rw-r--r--test/ref/DCP/dcp_test2/VOLINDEX.xml2
-rw-r--r--test/ref/DCP/dcp_test2/audio.mxfbin0 -> 161326 bytes
-rw-r--r--test/ref/DCP/dcp_test2/video.mxfbin0 -> 35032 bytes
13 files changed, 114 insertions, 15 deletions
diff --git a/src/stereo_picture_mxf_writer.h b/src/stereo_picture_mxf_writer.h
index ebd9dbec..5491a64d 100644
--- a/src/stereo_picture_mxf_writer.h
+++ b/src/stereo_picture_mxf_writer.h
@@ -40,7 +40,11 @@ namespace dcp {
class StereoPictureMXFWriter : public PictureMXFWriter
{
public:
- FrameInfo write (uint8_t *, int);
+ /** Write a frame for one eye. Frames must be written left, then right, then left etc.
+ * @param data JPEG2000 data.
+ * @param size Size of data.
+ */
+ FrameInfo write (uint8_t* data, int size);
void fake_write (int size);
void finalize ();
diff --git a/test/dcp_test.cc b/test/dcp_test.cc
index 67593187..c41eaf01 100644
--- a/test/dcp_test.cc
+++ b/test/dcp_test.cc
@@ -21,6 +21,7 @@
#include "metadata.h"
#include "cpl.h"
#include "mono_picture_mxf.h"
+#include "stereo_picture_mxf.h"
#include "picture_mxf_writer.h"
#include "sound_mxf_writer.h"
#include "sound_mxf.h"
@@ -29,6 +30,7 @@
#include "test.h"
#include "file.h"
#include "reel_mono_picture_asset.h"
+#include "reel_stereo_picture_asset.h"
#include "reel_sound_asset.h"
#include "KM_util.h"
#include <sndfile.h>
@@ -108,6 +110,80 @@ BOOST_AUTO_TEST_CASE (dcp_test1)
/* build/test/DCP/dcp_test1 is checked against test/ref/DCP/dcp_test1 by run-tests.sh */
}
+/** Test creation of a 3D DCP from very simple inputs */
+BOOST_AUTO_TEST_CASE (dcp_test2)
+{
+ Kumu::libdcp_test = true;
+
+ /* Some known metadata */
+ dcp::XMLMetadata xml_meta;
+ xml_meta.issuer = "OpenDCP 0.0.25";
+ xml_meta.creator = "OpenDCP 0.0.25";
+ xml_meta.issue_date = "2012-07-17T04:45:18+00:00";
+ dcp::MXFMetadata mxf_meta;
+ mxf_meta.company_name = "OpenDCP";
+ mxf_meta.product_name = "OpenDCP";
+ mxf_meta.product_version = "0.0.25";
+
+ /* We're making build/test/DCP/dcp_test2 */
+ boost::filesystem::remove_all ("build/test/DCP/dcp_test2");
+ boost::filesystem::create_directories ("build/test/DCP/dcp_test2");
+ dcp::DCP d ("build/test/DCP/dcp_test2");
+ shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE));
+ cpl->set_content_version_id ("urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00");
+ cpl->set_content_version_label_text ("81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00");
+ cpl->set_metadata (xml_meta);
+
+ shared_ptr<dcp::StereoPictureMXF> mp (new dcp::StereoPictureMXF (dcp::Fraction (24, 1)));
+ mp->set_metadata (mxf_meta);
+ shared_ptr<dcp::PictureMXFWriter> picture_writer = mp->start_write ("build/test/DCP/dcp_test2/video.mxf", dcp::SMPTE, false);
+ dcp::File j2c ("test/data/32x32_red_square.j2c");
+ for (int i = 0; i < 24; ++i) {
+ /* Left */
+ picture_writer->write (j2c.data (), j2c.size ());
+ /* Right */
+ picture_writer->write (j2c.data (), j2c.size ());
+ }
+ picture_writer->finalize ();
+
+ shared_ptr<dcp::SoundMXF> ms (new dcp::SoundMXF (dcp::Fraction (24, 1), 48000, 1));
+ ms->set_metadata (mxf_meta);
+ shared_ptr<dcp::SoundMXFWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test2/audio.mxf", dcp::SMPTE);
+
+ SF_INFO info;
+ info.format = 0;
+ SNDFILE* sndfile = sf_open ("test/data/1s_24-bit_48k_silence.wav", SFM_READ, &info);
+ BOOST_CHECK (sndfile);
+ float buffer[4096*6];
+ float* channels[1];
+ channels[0] = buffer;
+ while (1) {
+ sf_count_t N = sf_readf_float (sndfile, buffer, 4096);
+ sound_writer->write (channels, N);
+ if (N < 4096) {
+ break;
+ }
+ }
+
+ sound_writer->finalize ();
+
+ cpl->add (shared_ptr<dcp::Reel> (
+ new dcp::Reel (
+ shared_ptr<dcp::ReelStereoPictureAsset> (new dcp::ReelStereoPictureAsset (mp, 0)),
+ shared_ptr<dcp::ReelSoundAsset> (new dcp::ReelSoundAsset (ms, 0)),
+ shared_ptr<dcp::ReelSubtitleAsset> ()
+ )
+ ));
+
+ d.add (cpl);
+ d.add (mp);
+ d.add (ms);
+
+ d.write_xml (dcp::SMPTE, xml_meta);
+
+ /* build/test/DCP/dcp_test2 is checked against test/ref/DCP/dcp_test2 by run-tests.sh */
+}
+
static void
note (dcp::NoteType, string s)
{
@@ -115,7 +191,7 @@ note (dcp::NoteType, string s)
}
/** Test comparison of a DCP with itself */
-BOOST_AUTO_TEST_CASE (dcp_test2)
+BOOST_AUTO_TEST_CASE (dcp_test3)
{
dcp::DCP A ("test/ref/DCP/dcp_test1");
A.read ();
@@ -125,3 +201,14 @@ BOOST_AUTO_TEST_CASE (dcp_test2)
BOOST_CHECK (A.equals (B, dcp::EqualityOptions(), boost::bind (&note, _1, _2)));
}
+/** Test comparison of a DCP with a different DCP */
+BOOST_AUTO_TEST_CASE (dcp_test4)
+{
+ dcp::DCP A ("test/ref/DCP/dcp_test1");
+ A.read ();
+ dcp::DCP B ("test/ref/DCP/dcp_test2");
+ B.read ();
+
+ BOOST_CHECK (!A.equals (B, dcp::EqualityOptions(), boost::bind (&note, _1, _2)));
+}
+
diff --git a/test/ref/DCP/bar/f2abab68-8c7d-43b2-a959-259a8f79e179_cpl.xml b/test/ref/DCP/bar/11c45f5d-d465-4c41-b008-5284cf38a037_cpl.xml
index 4fc08f3f..1ce4c55d 100644
--- a/test/ref/DCP/bar/f2abab68-8c7d-43b2-a959-259a8f79e179_cpl.xml
+++ b/test/ref/DCP/bar/11c45f5d-d465-4c41-b008-5284cf38a037_cpl.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
-<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><Id>urn:uuid:f2abab68-8c7d-43b2-a959-259a8f79e179</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><ContentTitleText>A Test DCP</ContentTitleText><ContentKind>feature</ContentKind><ContentVersion><Id>urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00</Id><LabelText>81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00</LabelText></ContentVersion><RatingList/><ReelList><Reel><Id>urn:uuid:68ad59fa-8532-4dfa-a5b0-ab1cd9d91d54</Id><AssetList><MainPicture><Id>urn:uuid:8f11e55d-4d99-414e-8b84-c26cd8c8c3ed</Id><AnnotationText>video.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><Hash>bCGJFx2MMsw/TBhyrH2eadvGgjs=</Hash><KeyId>urn:uuid:119b0818-7c00-44e1-93a6-89521aceff77</KeyId><FrameRate>24 1</FrameRate><ScreenAspectRatio>32 32</ScreenAspectRatio></MainPicture><MainSound><Id>urn:uuid:646747f3-51ee-47ec-a0a2-5f8c415818e8</Id><AnnotationText>audio.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><Hash>iW7GXuquKCfKwKrKRqxZG++Kb4Y=</Hash><KeyId>urn:uuid:9f19589a-01e5-4093-b23b-a32e143e5956</KeyId></MainSound></AssetList></Reel></ReelList><Signer><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>dnQualifier=d95fGDzERNdxfYPgphvAR8A18L4=,CN=CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509SubjectName></dsig:X509Data></Signer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><dsig:Reference URI=""><dsig:Transforms><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>RkdHBHp8Oun8noSeexSjuHIV914=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>QqUCaUaDJCKk+q9C9niQIBzZAw3LF0302v2lA3RciEuwHwO45cs+lry2DpIH2ZQP
-NunxasauOSTyn8WyOGUEVuHpzfEIPCfl/yGuMZUWdQ3ByUuebnX3oGApneDdxe8q
-9Dd53i4QV4hR6YTd5cbbth6oDd5ZHOg1KM2k/VEb+1CEbrw/AhelTGghfg5AUdBN
-9D77Ztyc3fTrnYVexyFYREOaYlvGWUVN2x/LbbX7fj2yuxABvMv84qu5PgDfVjgt
-C2gx5pfA2Vk+PpLWInMZIVUN7kukdQBHc6c/9FDxtV6KKJnQTkpgCwi+gHd7foPj
-xe7iIrbqVMxOy+tnIUyFQQ==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEezCCA2OgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEChMLZXhh
+<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><Id>urn:uuid:11c45f5d-d465-4c41-b008-5284cf38a037</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><ContentTitleText>A Test DCP</ContentTitleText><ContentKind>feature</ContentKind><ContentVersion><Id>urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00</Id><LabelText>81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00</LabelText></ContentVersion><RatingList/><ReelList><Reel><Id>urn:uuid:e416fe3c-af74-4699-8371-f506d6143534</Id><AssetList><MainPicture><Id>urn:uuid:2527dbe5-41f7-4a22-a2d2-bd7cfeffbce1</Id><AnnotationText>video.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><Hash>iNkEqHei/mvI+AIxdN3ce7fh/J8=</Hash><KeyId>urn:uuid:4db314b3-7bf7-4ead-974e-2c0a4a8e53cf</KeyId><FrameRate>24 1</FrameRate><ScreenAspectRatio>32 32</ScreenAspectRatio></MainPicture><MainSound><Id>urn:uuid:eca79559-e03e-4026-ba29-0109d29121d2</Id><AnnotationText>audio.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><Hash>AfReCkuWbrnQ8wcS2YLYwgK6PNo=</Hash><KeyId>urn:uuid:6e7a5b33-3cec-49e5-993d-8d7350205dc4</KeyId></MainSound></AssetList></Reel></ReelList><Signer><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>dnQualifier=d95fGDzERNdxfYPgphvAR8A18L4=,CN=CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509SubjectName></dsig:X509Data></Signer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><dsig:Reference URI=""><dsig:Transforms><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>Q8izIKNam9zQzH34veHS8FWNVEo=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>nQP9bpK/zIj/KmF4nh6JuHfoNlbL6iBuPH/x4KLgVbnowJc5B+Zl1PK2JyzQVaFq
+wmbnH9hxEgLNTCGhF6c0E2SxgvC+i7ZaMkFse7Z9zjNaJS47eCHEo0SuvaexyuEg
+k9iyWaFs+yPQtOpflsVOGduNAC0fdoSnFMytYIeyiWiV8ReTMUn4yHErbqWCQXS+
+YQbzfVtnvef+clZC8CPc963EWeofDuxxUaCrvVD8fzw8OepSXVQgfixLIEc9cX2l
+aI9vKG2Eqmdz8fBuETD0DSSdCmw+cQQanYErm+RPlYcNZzuq9uofxU4sGP+9v5H6
+XNSUeI/Jhs8yHQlCR5SPSw==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEezCCA2OgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEChMLZXhh
bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMTUwMwYDVQQDFCwuc21wdGUt
NDMwLTIuSU5URVJNRURJQVRFLk5PVF9GT1JfUFJPRFVDVElPTjElMCMGA1UELhMc
Ym10d1RocTNzcmd4SUFlUk1qWDZCRmhnTER3PTAeFw0xMzA3MDgwOTM5MDBaFw0y
diff --git a/test/ref/DCP/bar/ASSETMAP.xml b/test/ref/DCP/bar/ASSETMAP.xml
index f991462f..8381385e 100644
--- a/test/ref/DCP/bar/ASSETMAP.xml
+++ b/test/ref/DCP/bar/ASSETMAP.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
-<AssetMap xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"><Id>urn:uuid:d823c963-dcf6-4a0e-aa17-e88bb81536bc</Id><AnnotationText>Created by OpenDCP 0.0.25</AnnotationText><Creator>OpenDCP 0.0.25</Creator><VolumeCount>1</VolumeCount><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><AssetList><Asset><Id>urn:uuid:5d86578b-b6b9-4bb4-80c0-6d793e9e63a5</Id><PackingList>true</PackingList><ChunkList><Chunk><Path>5d86578b-b6b9-4bb4-80c0-6d793e9e63a5_pkl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>7691</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:f2abab68-8c7d-43b2-a959-259a8f79e179</Id><ChunkList><Chunk><Path>f2abab68-8c7d-43b2-a959-259a8f79e179_cpl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>8614</Length></Chunk></ChunkList></Asset></AssetList></AssetMap>
+<AssetMap xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"><Id>urn:uuid:3e904ec6-2b99-4846-9eed-161eb6f2896c</Id><AnnotationText>Created by OpenDCP 0.0.25</AnnotationText><Creator>OpenDCP 0.0.25</Creator><VolumeCount>1</VolumeCount><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><AssetList><Asset><Id>urn:uuid:bf315122-2cd2-448c-8b1b-9f4c85a21629</Id><PackingList>true</PackingList><ChunkList><Chunk><Path>bf315122-2cd2-448c-8b1b-9f4c85a21629_pkl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>7691</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:11c45f5d-d465-4c41-b008-5284cf38a037</Id><ChunkList><Chunk><Path>11c45f5d-d465-4c41-b008-5284cf38a037_cpl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>8614</Length></Chunk></ChunkList></Asset></AssetList></AssetMap>
diff --git a/test/ref/DCP/bar/audio.mxf b/test/ref/DCP/bar/audio.mxf
index 9fa2c6ff..feea57eb 100644
--- a/test/ref/DCP/bar/audio.mxf
+++ b/test/ref/DCP/bar/audio.mxf
Binary files differ
diff --git a/test/ref/DCP/bar/5d86578b-b6b9-4bb4-80c0-6d793e9e63a5_pkl.xml b/test/ref/DCP/bar/bf315122-2cd2-448c-8b1b-9f4c85a21629_pkl.xml
index 30dace5e..f8c93673 100644
--- a/test/ref/DCP/bar/5d86578b-b6b9-4bb4-80c0-6d793e9e63a5_pkl.xml
+++ b/test/ref/DCP/bar/bf315122-2cd2-448c-8b1b-9f4c85a21629_pkl.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
-<PackingList xmlns="http://www.smpte-ra.org/schemas/429-8/2007/PKL" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><Id>urn:uuid:5d86578b-b6b9-4bb4-80c0-6d793e9e63a5</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><AssetList><Asset><Id>urn:uuid:f2abab68-8c7d-43b2-a959-259a8f79e179</Id><AnnotationText>f2abab68-8c7d-43b2-a959-259a8f79e179</AnnotationText><Hash>DQGKol00H9+QooVKoOTWlUc11qs=</Hash><Size>8614</Size><Type>text/xml</Type></Asset></AssetList><Signer><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>dnQualifier=d95fGDzERNdxfYPgphvAR8A18L4=,CN=CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509SubjectName></dsig:X509Data></Signer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><dsig:Reference URI=""><dsig:Transforms><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>4YR1mrRHTWIlBEZpZSh5lTxYfCg=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>Jr+rNdafiDse1K7vyh2l5/anDXquvOjjzxSrvxLgF4vs5S9UmcFjH+DXD4L5I7dW
-aJqN2xw81UWwYQ4nKnIIpDKOv4TK1eeywt3UTCcaCg0glx7RHjbcpj2J7QUjl8FB
-yYQALnSbDc+lETrq3QkiaCi9SFgTyMWxnlUr/ntHCaacwl2zSWGAjXknOmkLoDzp
-PdP6g/f9+FGuAOIYUveiVS3SoBzt06TweY0dKWimzoooVuhBnsKXKcApsZYojenB
-1BHSjW7nSkQ7AHscYQPuZ9Mz1kYp5RHMH7f7ueVa+wDYXupEElQPxR2yC8f1YSue
-nzpAoRz9OKCaEULP23AnMA==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEezCCA2OgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEChMLZXhh
+<PackingList xmlns="http://www.smpte-ra.org/schemas/429-8/2007/PKL" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><Id>urn:uuid:bf315122-2cd2-448c-8b1b-9f4c85a21629</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><AssetList><Asset><Id>urn:uuid:11c45f5d-d465-4c41-b008-5284cf38a037</Id><AnnotationText>11c45f5d-d465-4c41-b008-5284cf38a037</AnnotationText><Hash>E0TCg5Zf73B4BJlK9BuMYCM5i20=</Hash><Size>8614</Size><Type>text/xml</Type></Asset></AssetList><Signer><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>dnQualifier=d95fGDzERNdxfYPgphvAR8A18L4=,CN=CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509SubjectName></dsig:X509Data></Signer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><dsig:Reference URI=""><dsig:Transforms><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>FoMjn3efPu+QuuyB+GRieHmZJ3k=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>y2/WDj78NUeYY58oXIlx/F0S6+H/1uTH4ybbIuzt/Ty8IT2NNts4uZPXVA+QfJt7
+p6FCjk1QBX0BQwG3QfUzvFf84LXDhm8ERQpWcxEtHnpLNmZsKRdFl+CD0HUhq0zh
+YZjTZHF8q4kjWZEXGTI6OCytv8ThO6S1YwA2DdgXy3owz4EECveUSrNJ/W0TIP58
+r6JzBtKsmBacrL9rOjGmv1Ac3vuQ4XmX43cMV7aFppVJ+DD0wC3Z7hcXuapQ+2h1
+XZ6/0at3iAEKHSRLyDaD22gbWvMMSbmOmxeSlSU7Chc2E+lkomanKXZZJrUzzGt1
+R24HYntZMgT9jC8g8R3YsA==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEezCCA2OgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEChMLZXhh
bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMTUwMwYDVQQDFCwuc21wdGUt
NDMwLTIuSU5URVJNRURJQVRFLk5PVF9GT1JfUFJPRFVDVElPTjElMCMGA1UELhMc
Ym10d1RocTNzcmd4SUFlUk1qWDZCRmhnTER3PTAeFw0xMzA3MDgwOTM5MDBaFw0y
diff --git a/test/ref/DCP/bar/video.mxf b/test/ref/DCP/bar/video.mxf
index 90da51af..6bcdd467 100644
--- a/test/ref/DCP/bar/video.mxf
+++ b/test/ref/DCP/bar/video.mxf
Binary files differ
diff --git a/test/ref/DCP/dcp_test2/6d857146-24c9-4626-bc7a-3971b15f1ba4_pkl.xml b/test/ref/DCP/dcp_test2/6d857146-24c9-4626-bc7a-3971b15f1ba4_pkl.xml
new file mode 100644
index 00000000..6906dc52
--- /dev/null
+++ b/test/ref/DCP/dcp_test2/6d857146-24c9-4626-bc7a-3971b15f1ba4_pkl.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PackingList xmlns="http://www.smpte-ra.org/schemas/429-8/2007/PKL"><Id>urn:uuid:6d857146-24c9-4626-bc7a-3971b15f1ba4</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><AssetList><Asset><Id>urn:uuid:74e205d0-d145-42d2-8c49-7b55d058ca55</Id><AnnotationText>74e205d0-d145-42d2-8c49-7b55d058ca55</AnnotationText><Hash>sD8QRMn/hfhm0hHdp0aJoa9E8Ro=</Hash><Size>1498</Size><Type>text/xml</Type></Asset><Asset><Id>urn:uuid:63c3aece-c581-4603-b612-75e43f0c0430</Id><AnnotationText>63c3aece-c581-4603-b612-75e43f0c0430</AnnotationText><Hash>c5HhiI4d1HOLd9YSLpZvxUOFHLk=</Hash><Size>35032</Size><Type>application/mxf</Type></Asset><Asset><Id>urn:uuid:8ee8f7da-8da2-4adb-ae0e-31e8f4b91900</Id><AnnotationText>8ee8f7da-8da2-4adb-ae0e-31e8f4b91900</AnnotationText><Hash>GrNR0eFm/WiJuQuMtdB7Y8dmZks=</Hash><Size>161326</Size><Type>application/mxf</Type></Asset></AssetList></PackingList>
diff --git a/test/ref/DCP/dcp_test2/74e205d0-d145-42d2-8c49-7b55d058ca55_cpl.xml b/test/ref/DCP/dcp_test2/74e205d0-d145-42d2-8c49-7b55d058ca55_cpl.xml
new file mode 100644
index 00000000..a4f2a794
--- /dev/null
+++ b/test/ref/DCP/dcp_test2/74e205d0-d145-42d2-8c49-7b55d058ca55_cpl.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL"><Id>urn:uuid:74e205d0-d145-42d2-8c49-7b55d058ca55</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><ContentTitleText>A Test DCP</ContentTitleText><ContentKind>feature</ContentKind><ContentVersion><Id>urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00</Id><LabelText>81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00</LabelText></ContentVersion><RatingList/><ReelList><Reel><Id>urn:uuid:5bdc7da4-eaf1-43e6-854f-7a1175edf94a</Id><AssetList><MainSound><Id>urn:uuid:8ee8f7da-8da2-4adb-ae0e-31e8f4b91900</Id><AnnotationText>audio.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><Hash>GrNR0eFm/WiJuQuMtdB7Y8dmZks=</Hash></MainSound><msp-cpl:MainStereoscopicPicture xmlns:msp-cpl="http://www.smpte-ra.org/schemas/429-10/2008/Main-Stereo-Picture-CPL"><Id>urn:uuid:63c3aece-c581-4603-b612-75e43f0c0430</Id><AnnotationText>video.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><Hash>c5HhiI4d1HOLd9YSLpZvxUOFHLk=</Hash><FrameRate>48 1</FrameRate><ScreenAspectRatio>32 32</ScreenAspectRatio></msp-cpl:MainStereoscopicPicture></AssetList></Reel></ReelList></CompositionPlaylist>
diff --git a/test/ref/DCP/dcp_test2/ASSETMAP.xml b/test/ref/DCP/dcp_test2/ASSETMAP.xml
new file mode 100644
index 00000000..881d84d2
--- /dev/null
+++ b/test/ref/DCP/dcp_test2/ASSETMAP.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AssetMap xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"><Id>urn:uuid:646747f3-51ee-47ec-a0a2-5f8c415818e8</Id><AnnotationText>Created by OpenDCP 0.0.25</AnnotationText><Creator>OpenDCP 0.0.25</Creator><VolumeCount>1</VolumeCount><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><AssetList><Asset><Id>urn:uuid:6d857146-24c9-4626-bc7a-3971b15f1ba4</Id><PackingList>true</PackingList><ChunkList><Chunk><Path>6d857146-24c9-4626-bc7a-3971b15f1ba4_pkl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>1022</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:74e205d0-d145-42d2-8c49-7b55d058ca55</Id><ChunkList><Chunk><Path>74e205d0-d145-42d2-8c49-7b55d058ca55_cpl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>1498</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:63c3aece-c581-4603-b612-75e43f0c0430</Id><ChunkList><Chunk><Path>video.mxf</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>35032</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:8ee8f7da-8da2-4adb-ae0e-31e8f4b91900</Id><ChunkList><Chunk><Path>audio.mxf</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>161326</Length></Chunk></ChunkList></Asset></AssetList></AssetMap>
diff --git a/test/ref/DCP/dcp_test2/VOLINDEX.xml b/test/ref/DCP/dcp_test2/VOLINDEX.xml
new file mode 100644
index 00000000..021685e9
--- /dev/null
+++ b/test/ref/DCP/dcp_test2/VOLINDEX.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VolumeIndex xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"><Index>1</Index></VolumeIndex>
diff --git a/test/ref/DCP/dcp_test2/audio.mxf b/test/ref/DCP/dcp_test2/audio.mxf
new file mode 100644
index 00000000..641b072c
--- /dev/null
+++ b/test/ref/DCP/dcp_test2/audio.mxf
Binary files differ
diff --git a/test/ref/DCP/dcp_test2/video.mxf b/test/ref/DCP/dcp_test2/video.mxf
new file mode 100644
index 00000000..ee66c273
--- /dev/null
+++ b/test/ref/DCP/dcp_test2/video.mxf
Binary files differ