From 06114a4f18591f31a9f8531d04b0e787b96a1e83 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 7 Feb 2026 22:02:49 +0100 Subject: Add use-type to ReusableReelAsset. --- src/lib/reusable_reel_asset.cc | 2 +- src/lib/reusable_reel_asset.h | 14 +++++++++++--- test/vf_test.cc | 6 ++++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/lib/reusable_reel_asset.cc b/src/lib/reusable_reel_asset.cc index 06471010c..14058906a 100644 --- a/src/lib/reusable_reel_asset.cc +++ b/src/lib/reusable_reel_asset.cc @@ -50,7 +50,7 @@ maybe_add_asset(list& a, shared_ptr r, Frame r->set_duration (r->actual_duration() - reel_trim_start - reel_trim_end); if (r->actual_duration() > 0) { a.push_back ( - ReusableReelAsset(r, DCPTimePeriod(from, from + DCPTime::from_frames(r->actual_duration(), ffr))) + ReusableReelAsset(r, DCPTimePeriod(from, from + DCPTime::from_frames(r->actual_duration(), ffr)), ReusableReelAsset::Use::REFERENCE) ); } } diff --git a/src/lib/reusable_reel_asset.h b/src/lib/reusable_reel_asset.h index 0ad4d0799..ad0378c41 100644 --- a/src/lib/reusable_reel_asset.h +++ b/src/lib/reusable_reel_asset.h @@ -34,15 +34,23 @@ class Playlist; class ReusableReelAsset { public: - ReusableReelAsset (std::shared_ptr asset_, dcpomatic::DCPTimePeriod period_) - : asset (asset_) - , period (period_) + enum class Use { + REFERENCE, + COPY + }; + + ReusableReelAsset(std::shared_ptr asset_, dcpomatic::DCPTimePeriod period_, Use use_) + : asset(asset_) + , period(period_) + , use(use_) {} /** The asset */ std::shared_ptr asset; /** Period that this asset covers in the DCP */ dcpomatic::DCPTimePeriod period; + /** How this asset is used - referred to or copied */ + Use use; }; diff --git a/test/vf_test.cc b/test/vf_test.cc index cafd5fe90..af3740f0b 100644 --- a/test/vf_test.cc +++ b/test/vf_test.cc @@ -266,9 +266,11 @@ BOOST_AUTO_TEST_CASE(vf_test5) make_and_verify_dcp(vf, {dcp::VerificationNote::Code::EXTERNAL_ASSET}, false); /* Check that the selected reel assets are right */ - BOOST_REQUIRE_EQUAL(a.size(), 4U); - auto i = a.begin(); auto a = get_reusable_reel_assets(vf, vf->playlist()); + vector b; + std::copy_if(a.begin(), a.end(), back_inserter(b), [](ReusableReelAsset const& asset) { return asset.use == ReusableReelAsset::Use::REFERENCE; }); + BOOST_REQUIRE_EQUAL(b.size(), 4U); + auto i = b.begin(); BOOST_CHECK(i->period == DCPTimePeriod(DCPTime(0), DCPTime(960000))); ++i; BOOST_CHECK(i->period == DCPTimePeriod(DCPTime(0), DCPTime(960000))); -- cgit v1.2.3