Accept that <Duration> and <EntryPoint> are optional, and account for this in tests.
authorCarl Hetherington <cth@carlh.net>
Mon, 18 Mar 2019 00:29:47 +0000 (00:29 +0000)
committerCarl Hetherington <cth@carlh.net>
Mon, 18 Mar 2019 00:29:47 +0000 (00:29 +0000)
Also fix tests to reflect <AnnotationText> no longer being filled in with a default
value.

22 files changed:
src/reel.cc
src/reel_asset.cc
src/reel_asset.h
test/ref/DCP/dcp_test1/ASSETMAP.xml
test/ref/DCP/dcp_test1/cpl_81fb54df-e1bf-4647-8788-ea7ba154375b.xml
test/ref/DCP/dcp_test1/pkl_ae8a9818-872a-4f86-8493-11dfdea03e09.xml
test/ref/DCP/dcp_test2/ASSETMAP.xml
test/ref/DCP/dcp_test2/cpl_48db27c3-4964-46a2-8b02-3e5570efb42d.xml
test/ref/DCP/dcp_test2/pkl_9f19589a-01e5-4093-b23b-a32e143e5956.xml
test/ref/DCP/dcp_test5/ASSETMAP.xml
test/ref/DCP/dcp_test5/cpl_3a8a01d1-0e1c-4ff0-977d-63d32995a1fd.xml
test/ref/DCP/dcp_test5/pkl_7574c611-f8de-4d20-98c4-2eb7dc87080a.xml
test/ref/DCP/dcp_test7/ASSETMAP
test/ref/DCP/dcp_test7/cpl_1d513f84-5856-4f91-a88a-4d452cc6a28a.xml
test/ref/DCP/dcp_test7/pkl_a800aea0-904b-4bd0-9250-374fdb46528b.xml
test/ref/DCP/encryption_test/ASSETMAP.xml
test/ref/DCP/encryption_test/cpl_b3eba4a0-f542-4937-b972-1cc4667ed01a.xml
test/ref/DCP/encryption_test/pkl_59730183-23bc-491e-906b-1dd453ff9d11.xml
test/ref/write_interop_subtitle_test3/ASSETMAP
test/ref/write_interop_subtitle_test3/cpl_f28b567b-3b9a-417a-aee4-6fc1a2c6a3af.xml
test/ref/write_interop_subtitle_test3/pkl_f5aab304-8145-44e3-a265-aa8d8812d8a2.xml
tools/dcpinfo.cc

index bda83531ac8228e674ed9da679447ebc997cb157..0a9a4b6375dda38636aeaeaf8a27443ab11b5062 100644 (file)
@@ -328,22 +328,22 @@ Reel::duration () const
        int64_t d = 0;
 
        if (_main_picture) {
        int64_t d = 0;
 
        if (_main_picture) {
-               d = max (d, _main_picture->duration ());
+               d = max (d, _main_picture->actual_duration());
        }
        if (_main_sound) {
        }
        if (_main_sound) {
-               d = max (d, _main_sound->duration ());
+               d = max (d, _main_sound->actual_duration());
        }
        if (_main_subtitle) {
        }
        if (_main_subtitle) {
-               d = max (d, _main_subtitle->duration ());
+               d = max (d, _main_subtitle->actual_duration());
        }
        if (_main_markers) {
        }
        if (_main_markers) {
-               d = max (d, _main_markers->duration ());
+               d = max (d, _main_markers->actual_duration());
        }
        BOOST_FOREACH (shared_ptr<ReelClosedCaptionAsset> i, _closed_captions) {
        }
        BOOST_FOREACH (shared_ptr<ReelClosedCaptionAsset> i, _closed_captions) {
-               d = max (d, i->duration());
+               d = max (d, i->actual_duration());
        }
        if (_atmos) {
        }
        if (_atmos) {
-               d = max (d, _atmos->duration ());
+               d = max (d, _atmos->actual_duration());
        }
 
        return d;
        }
 
        return d;
index caaf3eee45fc14ca6f560899840c1f5ac89aa239..2457c079c19effde03e2bfcb9263154cb88d0984 100644 (file)
@@ -68,10 +68,10 @@ ReelAsset::ReelAsset (string id, Fraction edit_rate, int64_t intrinsic_duration,
 ReelAsset::ReelAsset (shared_ptr<const cxml::Node> node)
        : Object (remove_urn_uuid (node->string_child ("Id")))
        , _intrinsic_duration (node->number_child<int64_t> ("IntrinsicDuration"))
 ReelAsset::ReelAsset (shared_ptr<const cxml::Node> node)
        : Object (remove_urn_uuid (node->string_child ("Id")))
        , _intrinsic_duration (node->number_child<int64_t> ("IntrinsicDuration"))
-       , _duration (node->number_child<int64_t> ("Duration"))
+       , _duration (node->optional_number_child<int64_t>("Duration"))
        , _annotation_text (node->optional_string_child ("AnnotationText").get_value_or (""))
        , _edit_rate (Fraction (node->string_child ("EditRate")))
        , _annotation_text (node->optional_string_child ("AnnotationText").get_value_or (""))
        , _edit_rate (Fraction (node->string_child ("EditRate")))
-       , _entry_point (node->number_child<int64_t> ("EntryPoint"))
+       , _entry_point (node->optional_number_child<int64_t>("EntryPoint"))
 {
 
 }
 {
 
 }
@@ -79,21 +79,25 @@ ReelAsset::ReelAsset (shared_ptr<const cxml::Node> node)
 xmlpp::Node*
 ReelAsset::write_to_cpl_base (xmlpp::Node* node, Standard standard, optional<string> hash) const
 {
 xmlpp::Node*
 ReelAsset::write_to_cpl_base (xmlpp::Node* node, Standard standard, optional<string> hash) const
 {
-        xmlpp::Element* a = node->add_child (cpl_node_name (standard));
-        pair<string, string> const attr = cpl_node_attribute (standard);
-        if (!attr.first.empty ()) {
-                a->set_attribute (attr.first, attr.second);
-        }
-        pair<string, string> const ns = cpl_node_namespace (standard);
-        if (!ns.first.empty ()) {
-                a->set_namespace_declaration (ns.first, ns.second);
-        }
-        a->add_child("Id")->add_child_text ("urn:uuid:" + _id);
-        a->add_child("AnnotationText")->add_child_text (_annotation_text);
-        a->add_child("EditRate")->add_child_text (String::compose ("%1 %2", _edit_rate.numerator, _edit_rate.denominator));
-        a->add_child("IntrinsicDuration")->add_child_text (raw_convert<string> (_intrinsic_duration));
-        a->add_child("EntryPoint")->add_child_text (raw_convert<string> (_entry_point));
-        a->add_child("Duration")->add_child_text (raw_convert<string> (_duration));
+       xmlpp::Element* a = node->add_child (cpl_node_name (standard));
+       pair<string, string> const attr = cpl_node_attribute (standard);
+       if (!attr.first.empty ()) {
+               a->set_attribute (attr.first, attr.second);
+       }
+       pair<string, string> const ns = cpl_node_namespace (standard);
+       if (!ns.first.empty ()) {
+               a->set_namespace_declaration (ns.first, ns.second);
+       }
+       a->add_child("Id")->add_child_text ("urn:uuid:" + _id);
+       a->add_child("AnnotationText")->add_child_text (_annotation_text);
+       a->add_child("EditRate")->add_child_text (String::compose ("%1 %2", _edit_rate.numerator, _edit_rate.denominator));
+       a->add_child("IntrinsicDuration")->add_child_text (raw_convert<string> (_intrinsic_duration));
+       if (_entry_point) {
+               a->add_child("EntryPoint")->add_child_text(raw_convert<string>(*_entry_point));
+       }
+       if (_duration) {
+               a->add_child("Duration")->add_child_text(raw_convert<string>(*_duration));
+       }
        if (hash) {
                a->add_child("Hash")->add_child_text (hash.get());
        }
        if (hash) {
                a->add_child("Hash")->add_child_text (hash.get());
        }
@@ -147,3 +151,14 @@ ReelAsset::asset_equals (shared_ptr<const ReelAsset> other, EqualityOptions opt,
 
        return true;
 }
 
        return true;
 }
+
+/** @return <Duration>, or <IntrinsicDuration> - <EntryPoint> if <Duration> is not present */
+int64_t
+ReelAsset::actual_duration () const
+{
+       if (_duration) {
+               return *_duration;
+       }
+
+       return _intrinsic_duration - _entry_point.get_value_or(0);
+}
index 4092a97a5c8ab5cf1ce69664ff34c632a6cac03a..072d55fd4edf8654d031d5b7fc913be8706e4586 100644 (file)
@@ -82,7 +82,7 @@ public:
                _entry_point = e;
        }
 
                _entry_point = e;
        }
 
-       int64_t entry_point () const {
+       boost::optional<int64_t> entry_point () const {
                return _entry_point;
        }
 
                return _entry_point;
        }
 
@@ -90,10 +90,12 @@ public:
                _duration = d;
        }
 
                _duration = d;
        }
 
-       int64_t duration () const {
+       boost::optional<int64_t> duration () const {
                return _duration;
        }
 
                return _duration;
        }
 
+       int64_t actual_duration () const;
+
        std::string annotation_text () const {
                return _annotation_text;
        }
        std::string annotation_text () const {
                return _annotation_text;
        }
@@ -119,13 +121,13 @@ protected:
 
        xmlpp::Node* write_to_cpl_base (xmlpp::Node* node, Standard standard, boost::optional<std::string> hash) const;
 
 
        xmlpp::Node* write_to_cpl_base (xmlpp::Node* node, Standard standard, boost::optional<std::string> hash) const;
 
-       int64_t _intrinsic_duration;  ///< The &lt;IntrinsicDuration&gt; from the reel's entry for this asset
-       int64_t _duration;            ///< The &lt;Duration&gt; from the reel's entry for this asset
+       int64_t _intrinsic_duration;           ///< The &lt;IntrinsicDuration&gt; from the reel's entry for this asset
+       boost::optional<int64_t> _duration;    ///< The &lt;Duration&gt; from the reel's entry for this asset, if present
 
 private:
 
 private:
-       std::string _annotation_text; ///< The &lt;AnnotationText&gt; from the reel's entry for this asset
-       Fraction _edit_rate;          ///< The &lt;EditRate&gt; from the reel's entry for this asset
-       int64_t _entry_point;         ///< The &lt;EntryPoint&gt; from the reel's entry for this asset
+       std::string _annotation_text;          ///< The &lt;AnnotationText&gt; from the reel's entry for this asset
+       Fraction _edit_rate;                   ///< The &lt;EditRate&gt; from the reel's entry for this asset
+       boost::optional<int64_t> _entry_point; ///< The &lt;EntryPoint&gt; from the reel's entry for this asset
 };
 
 }
 };
 
 }
index 136ce423a63effb4a4c620696a27dc506fad387e..bd4ffaa378799fa1d1070122369e949f20d98a7d 100644 (file)
@@ -26,7 +26,7 @@
           <Path>cpl_81fb54df-e1bf-4647-8788-ea7ba154375b.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
           <Path>cpl_81fb54df-e1bf-4647-8788-ea7ba154375b.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
-          <Length>1664</Length>
+          <Length>1646</Length>
         </Chunk>
       </ChunkList>
     </Asset>
         </Chunk>
       </ChunkList>
     </Asset>
index 7ab840240c2c26ff57a4702c413adc580d6c4428..ccfc1edfaf97ad33452ce9b977c9160f6d996a9f 100644 (file)
@@ -18,7 +18,7 @@
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:1fab8bb0-cfaf-4225-ad6d-01768bc10470</Id>
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:1fab8bb0-cfaf-4225-ad6d-01768bc10470</Id>
-          <AnnotationText>video.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
@@ -29,7 +29,7 @@
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:9482e87d-292d-4e0e-a98d-c61822b60fe9</Id>
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:9482e87d-292d-4e0e-a98d-c61822b60fe9</Id>
-          <AnnotationText>audio.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
index 48a6cb9c41cbc481af143041187214b8a9a24d48..bc6b2035766bb8473db94c474e85754dfdac589a 100644 (file)
@@ -9,8 +9,8 @@
     <Asset>
       <Id>urn:uuid:81fb54df-e1bf-4647-8788-ea7ba154375b</Id>
       <AnnotationText>81fb54df-e1bf-4647-8788-ea7ba154375b</AnnotationText>
     <Asset>
       <Id>urn:uuid:81fb54df-e1bf-4647-8788-ea7ba154375b</Id>
       <AnnotationText>81fb54df-e1bf-4647-8788-ea7ba154375b</AnnotationText>
-      <Hash>Ak8hEl96TMfLaOWB6IAtoE3tK/g=</Hash>
-      <Size>1664</Size>
+      <Hash>ZtuszZE/7gxhCt7DVmzbsZB5SnI=</Hash>
+      <Size>1646</Size>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
index 093c7b92ace880701ed7884dc706080a00a11dbd..446b84bcbbbad315b4638d8a8b1490853bfe6094 100644 (file)
@@ -26,7 +26,7 @@
           <Path>cpl_48db27c3-4964-46a2-8b02-3e5570efb42d.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
           <Path>cpl_48db27c3-4964-46a2-8b02-3e5570efb42d.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
-          <Length>1788</Length>
+          <Length>1770</Length>
         </Chunk>
       </ChunkList>
     </Asset>
         </Chunk>
       </ChunkList>
     </Asset>
index ed1134ca2aaae76ab746b04652a575c1229a721e..f68a8a302a1b1a9632894b61a91190d3eda2a28c 100644 (file)
@@ -18,7 +18,7 @@
       <AssetList>
         <MainSound>
           <Id>urn:uuid:e5c3091b-f61e-459c-9faf-210bd4d3c7bf</Id>
       <AssetList>
         <MainSound>
           <Id>urn:uuid:e5c3091b-f61e-459c-9faf-210bd4d3c7bf</Id>
-          <AnnotationText>audio.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
@@ -27,7 +27,7 @@
         </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>
         </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>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
index 900f71b0e04c33d0559b70c962311e665959aced..44fc9cd3a1b3ac7a4bf366cad0c45e26da9721a0 100644 (file)
@@ -9,8 +9,8 @@
     <Asset>
       <Id>urn:uuid:48db27c3-4964-46a2-8b02-3e5570efb42d</Id>
       <AnnotationText>48db27c3-4964-46a2-8b02-3e5570efb42d</AnnotationText>
     <Asset>
       <Id>urn:uuid:48db27c3-4964-46a2-8b02-3e5570efb42d</Id>
       <AnnotationText>48db27c3-4964-46a2-8b02-3e5570efb42d</AnnotationText>
-      <Hash>9paU+xC4xaYBvPJQPCyDIhzQIEY=</Hash>
-      <Size>1788</Size>
+      <Hash>SvHyFHgdvrcbyej6IQwUWX3kOfI=</Hash>
+      <Size>1770</Size>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
index 0362b34596d11715b1e1a01b2c810bcac3b94388..03550fe5bf4d1711a114b655a03cda6920e50501 100644 (file)
@@ -26,7 +26,7 @@
           <Path>cpl_3a8a01d1-0e1c-4ff0-977d-63d32995a1fd.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
           <Path>cpl_3a8a01d1-0e1c-4ff0-977d-63d32995a1fd.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
-          <Length>2213</Length>
+          <Length>2152</Length>
         </Chunk>
       </ChunkList>
     </Asset>
         </Chunk>
       </ChunkList>
     </Asset>
index be617be397a61bc5fbd9c36a34f70a02e61554aa..30b7a5aa9888d9d09656506dc40c17b8cb5f15df 100644 (file)
@@ -18,7 +18,7 @@
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:2527dbe5-41f7-4a22-a2d2-bd7cfeffbce1</Id>
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:2527dbe5-41f7-4a22-a2d2-bd7cfeffbce1</Id>
-          <AnnotationText>video.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
@@ -29,7 +29,7 @@
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:69827080-f731-4e4c-9c8a-ec568acdfacc</Id>
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:69827080-f731-4e4c-9c8a-ec568acdfacc</Id>
-          <AnnotationText>audio.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
@@ -38,7 +38,7 @@
         </MainSound>
         <axd:AuxData xmlns:axd="http://www.dolby.com/schemas/2012/AD">
           <Id>urn:uuid:f1f7e0bc-ee61-412a-ac0e-e0b165a364a8</Id>
         </MainSound>
         <axd:AuxData xmlns:axd="http://www.dolby.com/schemas/2012/AD">
           <Id>urn:uuid:f1f7e0bc-ee61-412a-ac0e-e0b165a364a8</Id>
-          <AnnotationText>20160218_NameOfFilm_FTR_OV_EN_A_dcs_r01.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>1489</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>1489</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
index 9f80589470f55122c8f6015394c6f460583da149..a262ddbcb64c9e702565a13b58fb1e3b6f1fbe81 100644 (file)
@@ -9,8 +9,8 @@
     <Asset>
       <Id>urn:uuid:3a8a01d1-0e1c-4ff0-977d-63d32995a1fd</Id>
       <AnnotationText>3a8a01d1-0e1c-4ff0-977d-63d32995a1fd</AnnotationText>
     <Asset>
       <Id>urn:uuid:3a8a01d1-0e1c-4ff0-977d-63d32995a1fd</Id>
       <AnnotationText>3a8a01d1-0e1c-4ff0-977d-63d32995a1fd</AnnotationText>
-      <Hash>vjqb+OKDts+tVrOdl5VK1/7kDlU=</Hash>
-      <Size>2213</Size>
+      <Hash>rjSbPKZl3yv5tKe/QJJIwl2siG8=</Hash>
+      <Size>2152</Size>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
index b148f6675022e867a5f2a46b28acb0d852c0fe41..920e95c5ad5e0d22af827de2458feb0b2d71bae6 100644 (file)
@@ -26,7 +26,7 @@
           <Path>cpl_1d513f84-5856-4f91-a88a-4d452cc6a28a.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
           <Path>cpl_1d513f84-5856-4f91-a88a-4d452cc6a28a.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
-          <Length>1666</Length>
+          <Length>1648</Length>
         </Chunk>
       </ChunkList>
     </Asset>
         </Chunk>
       </ChunkList>
     </Asset>
index 251846aa983ba94d330e5891e84dab539d82a65e..c751f116408e605cc4ab44e73224e31ed55d8823 100644 (file)
@@ -18,7 +18,7 @@
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:cb2b7aa9-a378-4392-86f8-df013863fdd0</Id>
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:cb2b7aa9-a378-4392-86f8-df013863fdd0</Id>
-          <AnnotationText>video.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
@@ -29,7 +29,7 @@
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:e63718c9-fa72-4dd9-a144-8736591b08b6</Id>
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:e63718c9-fa72-4dd9-a144-8736591b08b6</Id>
-          <AnnotationText>audio.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
index 6294ecd4c64d781c85407994438c304ab23187dd..8a7600c00fce5cda6523cc5d8d03d923cad7da89 100644 (file)
@@ -9,8 +9,8 @@
     <Asset>
       <Id>urn:uuid:1d513f84-5856-4f91-a88a-4d452cc6a28a</Id>
       <AnnotationText>1d513f84-5856-4f91-a88a-4d452cc6a28a</AnnotationText>
     <Asset>
       <Id>urn:uuid:1d513f84-5856-4f91-a88a-4d452cc6a28a</Id>
       <AnnotationText>1d513f84-5856-4f91-a88a-4d452cc6a28a</AnnotationText>
-      <Hash>XNG8TzgVUkfGewkKVXqlTV7yODQ=</Hash>
-      <Size>1666</Size>
+      <Hash>Vh8NXTKfAV32QoJkxkO7KsCfzVo=</Hash>
+      <Size>1648</Size>
       <Type>text/xml;asdcpKind=CPL</Type>
     </Asset>
     <Asset>
       <Type>text/xml;asdcpKind=CPL</Type>
     </Asset>
     <Asset>
index ba355b98354bdb68d7f67cd912816d16358ae44b..c2f7cca1323d9f0f3242853541123f1bcbaa3e98 100644 (file)
@@ -26,7 +26,7 @@
           <Path>cpl_b3eba4a0-f542-4937-b972-1cc4667ed01a.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
           <Path>cpl_b3eba4a0-f542-4937-b972-1cc4667ed01a.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
-          <Length>9376</Length>
+          <Length>9358</Length>
         </Chunk>
       </ChunkList>
     </Asset>
         </Chunk>
       </ChunkList>
     </Asset>
index d79d98c06f7de4217c865e47c9ba4498e503f228..0b704cff41104e51f9698247316e904f6abc8066 100644 (file)
@@ -18,7 +18,7 @@
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:2d4e8308-7197-41b8-8a0a-07a939d74971</Id>
       <AssetList>
         <MainPicture>
           <Id>urn:uuid:2d4e8308-7197-41b8-8a0a-07a939d74971</Id>
-          <AnnotationText>video.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
@@ -30,7 +30,7 @@
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:99c2c0d0-7491-4ad0-86d5-4f0af19d71f6</Id>
         </MainPicture>
         <MainSound>
           <Id>urn:uuid:99c2c0d0-7491-4ad0-86d5-4f0af19d71f6</Id>
-          <AnnotationText>audio.mxf</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>24</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <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: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>lcdyVT8inONqxC5htOKbHp4CBo4=</dsig:DigestValue>
+        <dsig:DigestValue>fri32ijQJVVonuur70FbpJC9oP0=</dsig:DigestValue>
       </dsig:Reference>
     </dsig:SignedInfo>
       </dsig:Reference>
     </dsig:SignedInfo>
-    <dsig:SignatureValue>Z37dh5UV8iRaCV9c6QWxjER1j6UQPeUSL+m7+vqrm13aVjwhk2eURcppFhvM/RZi
-ukY0mOPQkQ+lrTNYRfQEvCRV+waMW4k22ivXafkNGXZ1axFLhj/bAoGVhYmBIGr9
-dvXcYmdI0exBcDugmioN8ZghhaaslS9+V1ylduZrATCsr5GBdtLQw4nqappam5jM
-BaRq9DZBj29Oc/guMpTCgHJEqBJggTxc8Zp4YAm+BF4xwYOzG6cU/s/jjoSPWmnH
-bgHfIsUnTCV4nFdG5bUjc1FmGAcOIJ1wDRXKdAWZflAGsDYsCQU2jlv7nMzc7sUD
-KNjYGw449Tso4F8bkfJ+ug==</dsig:SignatureValue>
+    <dsig:SignatureValue>QKXtm+xrKQT6RVCZGvDchIWcJtxGHN2yBppDcJYo1jSvHSzJwEvPlm94P5r26979
+Kf9tReSd7LdYKtQr9YWdYmQYSvgUdX2UvXmzdmEmzAPCnm2+YAjSZ1FPIZF+P1Vj
+0eQrpkpNESkIHD+ZbTGA9M8b+2Ua/vNKfUOCOvU2z0u1VjsAS0h42NDCyh1NpNR3
+nmbkr4TszxdS/6wgJ9yLRKfsPUk1KE6mI1lIJdYrwMjxVI1PY7vS7X+KbXCQK9V1
+BGdoBSWi9Wdj+IZ0Su0KIE+w2Af/cOjfThes2pG6NmB13XABadD2UMRhR6DxvXdl
+VuY+EHlJyJU8xPG+WLztPw==</dsig:SignatureValue>
     <dsig:KeyInfo>
       <dsig:X509Data>
         <dsig:X509IssuerSerial>
     <dsig:KeyInfo>
       <dsig:X509Data>
         <dsig:X509IssuerSerial>
index b0d78982effacbbad4d76efe31b36e55fe9ad5bf..49713b6e4a51e7624dc07b82d4dfde54dfe74037 100644 (file)
@@ -9,8 +9,8 @@
     <Asset>
       <Id>urn:uuid:b3eba4a0-f542-4937-b972-1cc4667ed01a</Id>
       <AnnotationText>b3eba4a0-f542-4937-b972-1cc4667ed01a</AnnotationText>
     <Asset>
       <Id>urn:uuid:b3eba4a0-f542-4937-b972-1cc4667ed01a</Id>
       <AnnotationText>b3eba4a0-f542-4937-b972-1cc4667ed01a</AnnotationText>
-      <Hash>CP1vGWWg0jTELvnvLkVmj/PSFxI=</Hash>
-      <Size>9376</Size>
+      <Hash>3PjhZ80RuwV7hRG6Cv1tkN1wPlo=</Hash>
+      <Size>9358</Size>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
       <Type>text/xml</Type>
     </Asset>
     <Asset>
           <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: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>VDVmBjODM/VDWbPZNjmhJf9jF3s=</dsig:DigestValue>
+        <dsig:DigestValue>YV0vdwu/454wBquhHjbfIb4DwJ8=</dsig:DigestValue>
       </dsig:Reference>
     </dsig:SignedInfo>
       </dsig:Reference>
     </dsig:SignedInfo>
-    <dsig:SignatureValue>iYSJZxCK+OAlAoWjjzFQMO83VBQEdaIYWwdJsxwuBBVd0PRwJuDmR8ks5tq0K761
-M26zXD8O6xT2BOmTSEF1nBlElQoP23/wCnbFA44wYcSEpfZG0GuR+HzTNWlqigiq
-xNyNdOKfBBuYZ3s+u+EkxCZsYa/eo9jaPhqQxIJ2anspR5jmvoOY53IqcLuljS5F
-qmrV+JwlniSn/7MfGFsOCqD3kK8ssa7UM9K+hDtHQYQVAItYyfy/jbJDRUL3gV1B
-lsBHH3YSu2L7shdJFKROYJQYYQYtp/Dfk5VjbgUmJsTX+Kbw/FbweEzD3vxp8coy
-qLh+hVCRexNuXthspMtZtw==</dsig:SignatureValue>
+    <dsig:SignatureValue>PXv1x8H55W0zlKoD/R9UjUxKGG/i5/kUnCN/tcydAdhdLHdsNpnpgFCYKIyJ1KYW
+42NRZrU4aUpFShnqRTX1oQDdhghRS2NhnufWOc+BNck6mXHHqWvZxC+AWPfAKG1O
+gYPwov88bUsS/WhWFpFHhYq8KcCCY0NtbeooZ/2FWSLP/s2gngcRdDUudb5SDofR
+bUC2f17gPxDJnScAA1h9o3KQqPKtw/AYAofMi5Ogpq7hq4toV2owouR/gsV+DUgx
+Zl/tBfkCHRglWvy+RBPIZvdL+UFJwTuv6X+MVLpf6SGEl7KzjssBXpplWXdA6wHB
+vanmniT9ivHP9jTM52tMSA==</dsig:SignatureValue>
     <dsig:KeyInfo>
       <dsig:X509Data>
         <dsig:X509IssuerSerial>
     <dsig:KeyInfo>
       <dsig:X509Data>
         <dsig:X509IssuerSerial>
index c39080cbf07fbb71857ac3997587d3e3d5ab4618..5d0e85da9453b51f8c81c8bdfd97121a8e4a3992 100644 (file)
@@ -26,7 +26,7 @@
           <Path>cpl_f28b567b-3b9a-417a-aee4-6fc1a2c6a3af.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
           <Path>cpl_f28b567b-3b9a-417a-aee4-6fc1a2c6a3af.xml</Path>
           <VolumeIndex>1</VolumeIndex>
           <Offset>0</Offset>
-          <Length>1113</Length>
+          <Length>1105</Length>
         </Chunk>
       </ChunkList>
     </Asset>
         </Chunk>
       </ChunkList>
     </Asset>
index 6ed9860f5059be5951e1db03a699311da2b3b353..0f2e8d70ee604ec0d5ac24c5a34bbf83034a9069 100644 (file)
@@ -18,7 +18,7 @@
       <AssetList>
         <MainSubtitle>
           <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>
       <AssetList>
         <MainSubtitle>
           <Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</Id>
-          <AnnotationText>subs.xml</AnnotationText>
+          <AnnotationText></AnnotationText>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>6046</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
           <EditRate>24 1</EditRate>
           <IntrinsicDuration>6046</IntrinsicDuration>
           <EntryPoint>0</EntryPoint>
index 54e598d41caaf3db36699a6ec2383d861836c282..b8107a1a159d4f3a2b76853909b306e68b1c743a 100644 (file)
@@ -9,8 +9,8 @@
     <Asset>
       <Id>urn:uuid:f28b567b-3b9a-417a-aee4-6fc1a2c6a3af</Id>
       <AnnotationText>f28b567b-3b9a-417a-aee4-6fc1a2c6a3af</AnnotationText>
     <Asset>
       <Id>urn:uuid:f28b567b-3b9a-417a-aee4-6fc1a2c6a3af</Id>
       <AnnotationText>f28b567b-3b9a-417a-aee4-6fc1a2c6a3af</AnnotationText>
-      <Hash>Dt8xUBnEmiwA5+0BIIC7VfuEGJA=</Hash>
-      <Size>1113</Size>
+      <Hash>st3oqERkPDwHSRDC+WPEkgaRKwM=</Hash>
+      <Size>1105</Size>
       <Type>text/xml;asdcpKind=CPL</Type>
     </Asset>
     <Asset>
       <Type>text/xml;asdcpKind=CPL</Type>
     </Asset>
     <Asset>
index d0edbd3b3cdd5cfc09cf0f0b029d4968ab4a1ce6..d06d2068d95d223e4c17b684d0a1710c77a767b4 100644 (file)
@@ -95,11 +95,17 @@ main_picture (shared_ptr<Reel> reel, bool analyse, bool decompress)
                return;
        }
 
                return;
        }
 
-       cout << "      Picture ID:  " << reel->main_picture()->id()
-            << " entry " << reel->main_picture()->entry_point()
-            << " duration " << reel->main_picture()->duration()
-            << " (" << dcp::Time(reel->main_picture()->duration(), reel->main_picture()->frame_rate().as_float(), reel->main_picture()->frame_rate().as_float()).as_string(dcp::SMPTE) << ")"
-            << " intrinsic " << reel->main_picture()->intrinsic_duration();
+       cout << "      Picture ID:  " << reel->main_picture()->id();
+       if (reel->main_picture()->entry_point()) {
+               cout << " entry " << *reel->main_picture()->entry_point();
+       }
+       if (reel->main_picture()->duration()) {
+               cout << " duration " << *reel->main_picture()->duration()
+                    << " (" << dcp::Time(*reel->main_picture()->duration(), reel->main_picture()->frame_rate().as_float(), reel->main_picture()->frame_rate().as_float()).as_string(dcp::SMPTE) << ")"
+                    << " intrinsic " << reel->main_picture()->intrinsic_duration();
+       } else {
+               cout << " intrinsic duration " << reel->main_picture()->intrinsic_duration();
+       }
 
        if (reel->main_picture()->asset_ref().resolved()) {
                if (reel->main_picture()->asset()) {
 
        if (reel->main_picture()->asset_ref().resolved()) {
                if (reel->main_picture()->asset()) {
@@ -146,10 +152,17 @@ static void
 main_sound (shared_ptr<Reel> reel)
 {
        if (reel->main_sound()) {
 main_sound (shared_ptr<Reel> reel)
 {
        if (reel->main_sound()) {
-               cout << "      Sound ID:    " << reel->main_sound()->id()
-                    << " entry " << reel->main_picture()->entry_point()
-                    << " duration " << reel->main_picture()->duration()
-                    << " intrinsic " << reel->main_picture()->intrinsic_duration();
+               cout << "      Sound ID:    " << reel->main_sound()->id();
+               if (reel->main_sound()->entry_point()) {
+                    cout << " entry " << *reel->main_sound()->entry_point();
+               }
+               if (reel->main_sound()->duration()) {
+                       cout << " duration " << *reel->main_sound()->duration()
+                            << " intrinsic " << reel->main_sound()->intrinsic_duration();
+               } else {
+                       cout << " intrinsic duration " << reel->main_sound()->intrinsic_duration();
+               }
+
                if (reel->main_sound()->asset_ref().resolved()) {
                        if (reel->main_sound()->asset()) {
                                cout << "\n      Sound:       "
                if (reel->main_sound()->asset_ref().resolved()) {
                        if (reel->main_sound()->asset()) {
                                cout << "\n      Sound:       "