Emit no audio from DCPs if none is mapped
[dcpomatic.git] / src / lib / kdm_util.cc
index bf112ce1104cd8cdbdcb4c055074f6289ebc7691..dcfd1fe67b407060a8726cfc2bc0a1e322d734b3 100644 (file)
@@ -35,7 +35,13 @@ using boost::optional;
 
 
 KDMCertificatePeriod
-check_kdm_and_certificate_validity_periods(dcp::Certificate const& recipient, dcp::LocalTime kdm_from, dcp::LocalTime kdm_to)
+check_kdm_and_certificate_validity_periods(
+       string const& cinema_name,
+       string const& screen_name,
+       dcp::Certificate const& recipient,
+       dcp::LocalTime kdm_from,
+       dcp::LocalTime kdm_to
+       )
 {
        auto overlaps = [](dcp::LocalTime from_a, dcp::LocalTime to_a, dcp::LocalTime from_b, dcp::LocalTime to_b) {
                return std::max(from_a, from_b) < std::min(to_a, to_b);
@@ -45,16 +51,26 @@ check_kdm_and_certificate_validity_periods(dcp::Certificate const& recipient, dc
                return bigger_from <= smaller_from && bigger_to >= smaller_to;
        };
 
+       KDMCertificatePeriod period(
+               cinema_name,
+               screen_name,
+               recipient.not_before(),
+               recipient.not_after()
+               );
+
        if (contains(recipient.not_before(), recipient.not_after(), kdm_from, kdm_to)) {
-               return KDMCertificatePeriod::KDM_WITHIN_CERTIFICATE;
+               period.overlap = KDMCertificateOverlap::KDM_WITHIN_CERTIFICATE;
+               return period;
        }
 
        if (overlaps(recipient.not_before(), recipient.not_after(), kdm_from, kdm_to)) {
                /* The KDM overlaps the certificate validity: maybe not the end of the world */
-               return KDMCertificatePeriod::KDM_OVERLAPS_CERTIFICATE;
+               period.overlap = KDMCertificateOverlap::KDM_OVERLAPS_CERTIFICATE;
+               return period;
        } else {
                /* The KDM validity is totally outside the certificate validity: bad news */
-               return KDMCertificatePeriod::KDM_OUTSIDE_CERTIFICATE;
+               period.overlap = KDMCertificateOverlap::KDM_OUTSIDE_CERTIFICATE;
+               return period;
        }
 }