- VideoContent::add_properties (p);
- AudioContent::add_properties (p);
-
- if (_bits_per_pixel) {
- int const sub = 219 * pow (2, _bits_per_pixel.get() - 8);
- int const total = pow (2, _bits_per_pixel.get());
-
- switch (_color_range) {
- case AVCOL_RANGE_UNSPECIFIED:
- /// TRANSLATORS: this means that the range of pixel values used in this
- /// file is unknown (not specified in the file).
- p.push_back (UserProperty (_("Video"), _("Colour range"), _("Unspecified")));
- break;
- case AVCOL_RANGE_MPEG:
- /// TRANSLATORS: this means that the range of pixel values used in this
- /// file is limited, so that not all possible values are valid.
- p.push_back (
- UserProperty (
- _("Video"), _("Colour range"), String::compose (_("Limited (%1-%2)"), (total - sub) / 2, (total + sub) / 2)
- )
- );
- break;
- case AVCOL_RANGE_JPEG:
- /// TRANSLATORS: this means that the range of pixel values used in this
- /// file is full, so that all possible pixel values are valid.
- p.push_back (UserProperty (_("Video"), _("Colour range"), String::compose (_("Full (0-%1)"), total)));
- break;
- default:
- DCPOMATIC_ASSERT (false);
+ Content::add_properties (p);
+
+ if (video) {
+ video->add_properties (p);
+
+ if (_bits_per_pixel) {
+ int const sub = 219 * pow (2, _bits_per_pixel.get() - 8);
+ int const total = pow (2, _bits_per_pixel.get());
+
+ switch (_color_range) {
+ case AVCOL_RANGE_UNSPECIFIED:
+ /// TRANSLATORS: this means that the range of pixel values used in this
+ /// file is unknown (not specified in the file).
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Colour range"), _("Unspecified")));
+ break;
+ case AVCOL_RANGE_MPEG:
+ /// TRANSLATORS: this means that the range of pixel values used in this
+ /// file is limited, so that not all possible values are valid.
+ p.push_back (
+ UserProperty (
+ UserProperty::VIDEO, _("Colour range"), String::compose (_("Limited (%1-%2)"), (total - sub) / 2, (total + sub) / 2)
+ )
+ );
+ break;
+ case AVCOL_RANGE_JPEG:
+ /// TRANSLATORS: this means that the range of pixel values used in this
+ /// file is full, so that all possible pixel values are valid.
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Colour range"), String::compose (_("Full (0-%1)"), total)));
+ break;
+ default:
+ DCPOMATIC_ASSERT (false);
+ }
+ } else {
+ switch (_color_range) {
+ case AVCOL_RANGE_UNSPECIFIED:
+ /// TRANSLATORS: this means that the range of pixel values used in this
+ /// file is unknown (not specified in the file).
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Colour range"), _("Unspecified")));
+ break;
+ case AVCOL_RANGE_MPEG:
+ /// TRANSLATORS: this means that the range of pixel values used in this
+ /// file is limited, so that not all possible values are valid.
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Colour range"), _("Limited")));
+ break;
+ case AVCOL_RANGE_JPEG:
+ /// TRANSLATORS: this means that the range of pixel values used in this
+ /// file is full, so that all possible pixel values are valid.
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Colour range"), _("Full")));
+ break;
+ default:
+ DCPOMATIC_ASSERT (false);
+ }