Report video range from MPEG2 DCPs correctly.
authorCarl Hetherington <cth@carlh.net>
Sun, 7 Apr 2024 21:44:26 +0000 (23:44 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 22 Apr 2024 11:03:04 +0000 (13:03 +0200)
src/lib/dcp_examiner.cc
src/lib/dcp_examiner.h

index 92491947cf67665da99576da0e1fe128464194a8..2297868681457ad14b23245eb7b68e4385f8efbb 100644 (file)
@@ -164,6 +164,10 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content, bool tolerant)
                                } else if (_video_size.get() != asset->size ()) {
                                        throw DCPError (_("Mismatched video sizes in DCP"));
                                }
+
+                               if (dynamic_pointer_cast<dcp::MPEG2PictureAsset>(asset)) {
+                                       _video_range = VideoRange::VIDEO;
+                               }
                        }
                }
 
index 425552632ced7c86eca03829b82ec0557f9797db..d6baf7d50a330d1e0cde2e43bc243c1ca3441c27 100644 (file)
@@ -61,7 +61,7 @@ public:
        }
 
        VideoRange range () const override {
-               return VideoRange::FULL;
+               return _video_range;
        }
 
        PixelQuanta pixel_quanta () const override {
@@ -211,6 +211,7 @@ private:
        Frame _atmos_length = 0;
        dcp::Fraction _atmos_edit_rate;
        EnumIndexedVector<bool, TextType> _has_non_zero_entry_point;
+       VideoRange _video_range = VideoRange::FULL;
 
        struct Font
        {