+ if (dcp->audio && !dcp->audio->streams().empty()) {
+ checked_set (_dcp[r++], wxString::Format(_("Audio channels: %d"), dcp->audio->streams().front()->channels()));
+ }
+ if (!dcp->text.empty()) {
+ checked_set (_dcp[r++], _("Subtitles: yes"));
+ } else {
+ checked_set (_dcp[r++], _("Subtitles: no"));
+ }
+
+ optional<double> vfr;
+ vfr = dcp->video_frame_rate ();
+ DCPOMATIC_ASSERT (vfr);
+
+ string const len = String::compose(
+ wx_to_std(_("Length: %1 (%2 frames)")),
+ time_to_hmsf(dcp->full_length(), lrint(*vfr)),
+ dcp->full_length().frames_round(*vfr)
+ );
+
+ checked_set (_dcp[r++], std_to_wx(len));
+
+ dcp::Size decode = dcp->video->size();
+ optional<int> reduction = _viewer->dcp_decode_reduction();
+ if (reduction) {
+ decode.width /= pow(2, *reduction);
+ decode.height /= pow(2, *reduction);
+ }
+
+ checked_set (_decode_resolution, wxString::Format(_("Decode resolution: %dx%d"), decode.width, decode.height));
+
+ DCPOMATIC_ASSERT(r <= dcp_lines);