summaryrefslogtreecommitdiff
path: root/src/cpl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpl.cc')
-rw-r--r--src/cpl.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cpl.cc b/src/cpl.cc
index ea49eb34..46d73c47 100644
--- a/src/cpl.cc
+++ b/src/cpl.cc
@@ -850,3 +850,31 @@ CPL::can_be_read() const
return std::all_of(r.begin(), r.end(), [](shared_ptr<const Reel> reel) { return reel->can_be_read(); });
}
+
+PictureEncoding
+CPL::picture_encoding() const
+{
+ PictureEncoding encoding = PictureEncoding::NO_VIDEO;
+
+ for (auto reel: reels()) {
+ auto const reel_encoding = reel->picture_encoding();
+ switch (reel_encoding) {
+ case PictureEncoding::NO_VIDEO:
+ break;
+ case PictureEncoding::JPEG2000:
+ case PictureEncoding::MPEG2:
+ if (encoding == PictureEncoding::NO_VIDEO) {
+ encoding = reel_encoding;
+ } else if (encoding != reel_encoding) {
+ encoding = PictureEncoding::MIXED;
+ }
+ break;
+ case PictureEncoding::MIXED:
+ encoding = PictureEncoding::MIXED;
+ break;
+ }
+ }
+
+ return encoding;
+}
+