namespace libdcp -> dcp.
[libdcp.git] / examples / make_dcp.cc
index 0d6a8215c6ba13f36989ccb6f32cd7806745de14..d5852168dba602b08e7a15ae8842f6d6b9dfe2ca 100644 (file)
 /* If you are using an installed libdcp, these #includes would need to be changed to
 #include <libdcp/dcp.h>
 #include <libdcp/cpl.h>
-#include <libdcp/picture_asset.h>
+#include <libdcp/mono_picture_asset.h>
 ... etc. ...
 */
 
 #include "dcp.h"
 #include "cpl.h"
-#include "picture_asset.h"
+#include "mono_picture_asset.h"
 #include "sound_asset.h"
 #include "reel.h"
 
@@ -51,7 +51,7 @@ int
 main ()
 {
        /* Make a DCP object.  "My Film DCP" is the directory name for the DCP */
-       libdcp::DCP dcp ("My Film DCP");
+       dcp::DCP dcp ("My Film DCP");
        
        /* Now make a CPL object.
 
@@ -59,24 +59,34 @@ main ()
           FEATURE is the type that the projector will list the DCP as.
           24 is the frame rate, and the DCP will be 48 frames long (ie 2 seconds at 24 fps).
        */      
-       boost::shared_ptr<libdcp::CPL> cpl (new libdcp::CPL ("My Film DCP", "My Film", libdcp::FEATURE, 24, 48));
+       boost::shared_ptr<dcp::CPL> cpl (new dcp::CPL ("My Film DCP", "My Film", dcp::FEATURE, 24, 48));
 
        /* And add the CPL to the DCP */
        dcp.add_cpl (cpl);
 
-       /* Now make a `picture asset'.  This is a collection of the JPEG2000 files that make up the picture, one per frame.
-          Here we're using a function (video_frame) to obtain the name of the JPEG2000 file for each frame.
+       /* Now make a `picture asset'.  This is a collection of the JPEG2000 files that make up the picture; one per frame.
+          First, create the object.
+       */
+
+       boost::shared_ptr<dcp::MonoPictureAsset> picture_asset (
+               new dcp::MonoPictureAsset ("My Film DCP", "video.mxf")
+               );
+
+       /* Now set up its parameters; we have the frame rate, the
+          number of frames and the resolution of the frames;
+          1998x1080 is the DCI Flat specification for 2K projectors.
+       */
 
+       picture_asset->set_edit_rate (24);
+       picture_asset->set_intrinsic_duration (24);
+       picture_asset->set_size (dcp::Size (1998, 1080));
+
+       /* Now we can create the asset itself.  Here using a function (video_frame) to obtain the name of the JPEG2000 file for each frame.
           The result will be an MXF file written to the directory "My Film DCP" (which should be the same as the DCP's
           directory above) called "video.mxf".
-
-          The other parameters specify the entry_point (the frame at which the projector should start showing the picture),
-          the frame rate, the number of frames and the resolution of the frames; 1998x1080 is the DCI Flat specification
-          for 2K projectors.
        */
-       boost::shared_ptr<libdcp::MonoPictureAsset> picture_asset (
-               new libdcp::MonoPictureAsset (video_frame, "My Film DCP", "video.mxf", 0, 24, 48, libdcp::Size (1998, 1080))
-               );
+
+       picture_asset->create (video_frame);
 
        /* Now we will create a `sound asset', which is made up of a WAV file for each channel of audio.  Here we're using
           stereo, so we add two WAV files to a vector.
@@ -89,27 +99,28 @@ main ()
               Left surround
               Right surround
        */
-       std::vector<std::string> sound_files;
+       std::vector<boost::filesystem::path> sound_files;
        sound_files.push_back ("examples/sine_440_-12dB.wav");
        sound_files.push_back ("examples/sine_880_-12dB.wav");
 
        /* Now we can create the sound asset using these files */
-       boost::shared_ptr<libdcp::SoundAsset> sound_asset (
-               new libdcp::SoundAsset (sound_files, "My Film DCP", "audio.mxf", 0, 24, 48)
-               );
+       boost::shared_ptr<dcp::SoundAsset> sound_asset (new dcp::SoundAsset ("My Film DCP", "audio.mxf"));
+       sound_asset->set_edit_rate (24);
+       sound_asset->set_intrinsic_duration (48);
+       sound_asset->create (sound_files);
 
        /* Now that we have the assets, we can create a Reel to put them in and add it to the CPL */
        cpl->add_reel (
-               boost::shared_ptr<libdcp::Reel> (
-                       new libdcp::Reel (picture_asset, sound_asset, boost::shared_ptr<libdcp::SubtitleAsset> ())
+               boost::shared_ptr<dcp::Reel> (
+                       new dcp::Reel (picture_asset, sound_asset, boost::shared_ptr<dcp::SubtitleAsset> ())
                        )
                );
 
        /* Finally, we call this to write the XML description files to the DCP.  After this, the DCP
           is ready to ingest and play.
        */
-       libdcp::XMLMetadata metadata;
-       dcp.write_xml (metadata);
+       dcp::XMLMetadata metadata;
+       dcp.write_xml (false, metadata);
 
        return 0;
 }