+ bool yuv () const {
+ return false;
+ }
+
+ VideoRange range () const {
+ return VideoRange::FULL;
+ }
+
+ std::string name () const {
+ return _name;
+ }
+
+ bool encrypted () const {
+ return _encrypted;
+ }
+
+ bool needs_assets () const {
+ return _needs_assets;
+ }
+
+ bool has_audio () const {
+ return _has_audio;
+ }
+
+ int audio_channels () const {
+ return _audio_channels.get_value_or (0);
+ }
+
+ Frame audio_length () const {
+ return _audio_length;
+ }
+
+ int audio_frame_rate () const {
+ return _audio_frame_rate.get_value_or (48000);
+ }
+
+ boost::optional<dcp::LanguageTag> audio_language () const {
+ return _audio_language;
+ }
+
+ /** @param type TEXT_OPEN_SUBTITLE or TEXT_CLOSED_CAPTION.
+ * @return Number of assets of this type in this DCP.
+ */
+ int text_count (TextType type) const {
+ return _text_count[static_cast<int>(type)];
+ }
+
+ boost::optional<dcp::LanguageTag> open_subtitle_language () const {
+ return _open_subtitle_language;
+ }
+
+ DCPTextTrack dcp_text_track (int i) const {
+ DCPOMATIC_ASSERT (i >= 0 && i < static_cast<int>(_dcp_text_tracks.size()));
+ return _dcp_text_tracks[i];
+ }
+
+ bool kdm_valid () const {
+ return _kdm_valid;
+ }
+
+ boost::optional<dcp::Standard> standard () const {
+ return _standard;
+ }
+
+ bool three_d () const {
+ return _three_d;
+ }
+
+ dcp::ContentKind content_kind () const {
+ return _content_kind;
+ }
+
+ std::string cpl () const {
+ return _cpl;
+ }
+
+ std::list<int64_t> reel_lengths () const {
+ return _reel_lengths;
+ }
+
+ std::map<dcp::Marker, dcp::Time> markers () const {
+ return _markers;
+ }
+
+ std::vector<dcp::Rating> ratings () const {
+ return _ratings;
+ }
+
+ std::vector<std::string> content_versions () const {
+ return _content_versions;
+ }
+
+ bool has_atmos () const {
+ return _has_atmos;
+ }
+
+ Frame atmos_length () const {
+ return _atmos_length;
+ }
+
+ dcp::Fraction atmos_edit_rate () const {
+ return _atmos_edit_rate;
+ }
+