X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=examples%2Fread_dcp.cc;h=f099409f81996acc5349349aac7478243b2ebe0c;hb=28823f5d28857dc728df5a8e23c3c6ec23b5ee45;hp=a851f0bbc8a5d518f6a4c4ecc9569d5016e88bb4;hpb=34f2b95c1638a2cfedf21de5a203d6c0b77abf11;p=libdcp.git diff --git a/examples/read_dcp.cc b/examples/read_dcp.cc index a851f0bb..f099409f 100644 --- a/examples/read_dcp.cc +++ b/examples/read_dcp.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2015 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of libdcp. @@ -36,8 +36,12 @@ #include "openjpeg_image.h" #include "colour_conversion.h" #include "rgb_xyz.h" +/* This DISABLE/ENABLE pair is just to ignore some warnings from Magick++.h; they + * can be removed. + */ +LIBDCP_DISABLE_WARNINGS #include -#include +LIBDCP_ENABLE_WARNINGS /** @file examples/read_dcp.cc * @brief Shows how to read a DCP. @@ -46,58 +50,64 @@ int main () { + /* Unless libdcp has been installed, you need to pass a path containing the "tags" folder here */ + dcp::init(boost::filesystem::path(".")); + Magick::InitializeMagick(nullptr); + /* Create a DCP, specifying where our existing data is */ - dcp::DCP dcp ("/home/carl/diagonal.com/APPASSIONATA_TLR_F_UK-DEFR_CH_51_2K_LOK_20121115_DGL_OV"); + dcp::DCP dcp("/home/carl/Test_DCP"); /* Read the DCP to find out about it */ - dcp.read (); + dcp.read(); - if (dcp.encrypted ()) { + if (dcp.all_encrypted()) { std::cout << "DCP is encrypted.\n"; + } else if (dcp.any_encrypted()) { + std::cout << "DCP is partially encrypted.\n"; } else { std::cout << "DCP is not encrypted.\n"; } std::cout << "DCP has " << dcp.cpls().size() << " CPLs.\n"; - std::list > assets = dcp.assets (); + auto assets = dcp.assets(); std::cout << "DCP has " << assets.size() << " assets.\n"; - for (std::list >::const_iterator i = assets.begin(); i != assets.end(); ++i) { - if (boost::dynamic_pointer_cast (*i)) { + for (auto i: assets) { + if (std::dynamic_pointer_cast(i)) { std::cout << "2D picture\n"; - } else if (boost::dynamic_pointer_cast (*i)) { + } else if (std::dynamic_pointer_cast(i)) { std::cout << "3D picture\n"; - } else if (boost::dynamic_pointer_cast (*i)) { + } else if (std::dynamic_pointer_cast(i)) { std::cout << "Sound\n"; - } else if (boost::dynamic_pointer_cast (*i)) { + } else if (std::dynamic_pointer_cast(i)) { std::cout << "Subtitle\n"; - } else if (boost::dynamic_pointer_cast (*i)) { + } else if (std::dynamic_pointer_cast(i)) { std::cout << "CPL\n"; } - std::cout << "\t" << (*i)->file()->leaf().string() << "\n"; + std::cout << "\t" << i->file()->leaf().string() << "\n"; } /* Take the first CPL */ - boost::shared_ptr cpl = dcp.cpls().front (); + auto cpl = dcp.cpls().front(); /* Get the picture asset in the first reel */ - boost::shared_ptr picture_asset = boost::dynamic_pointer_cast ( - cpl->reels().front()->main_picture()->asset() + auto picture_asset = std::dynamic_pointer_cast( + cpl->reels()[0]->main_picture()->asset() ); /* Get a reader for it */ - boost::shared_ptr picture_asset_reader = picture_asset->start_read(); + auto picture_asset_reader = picture_asset->start_read(); /* Get the 1000th frame of it */ - boost::shared_ptr picture_frame_j2k = picture_asset_reader->get_frame(999); + auto picture_frame_j2k = picture_asset_reader->get_frame(999); /* Get the frame as an XYZ image */ - boost::shared_ptr picture_image_xyz = picture_frame_j2k->xyz_image (); + auto picture_image_xyz = picture_frame_j2k->xyz_image(); /* Convert to ARGB */ - boost::scoped_array rgba (new uint8_t[picture_image_xyz->size().width * picture_image_xyz->size().height * 4]); - dcp::xyz_to_rgba (picture_image_xyz, dcp::ColourConversion::srgb_to_xyz(), rgba.get ()); + std::vector rgba(picture_image_xyz->size().width * picture_image_xyz->size().height * 4); + dcp::xyz_to_rgba(picture_image_xyz, dcp::ColourConversion::srgb_to_xyz(), rgba.data(), picture_image_xyz->size().width * 4); - Magick::Image image (picture_image_xyz->size().width, picture_image_xyz->size().height, "BGRA", Magick::CharPixel, rgba.get ()); - image.write ("frame.png"); + Magick::Image image(picture_image_xyz->size().width, picture_image_xyz->size().height, "BGRA", Magick::CharPixel, rgba.data()); + image.write("frame.png"); return 0; }