+string
+AudioContent::processing_description () const
+{
+ vector<AudioStreamPtr> streams = audio_streams ();
+ if (streams.empty ()) {
+ return "";
+ }
+
+ /* Possible answers are:
+ 1. all audio will be resampled from x to y.
+ 2. all audio will be resampled to y (from a variety of rates)
+ 3. some audio will be resampled to y (from a variety of rates)
+ 4. nothing will be resampled.
+ */
+
+ bool not_resampled = false;
+ bool resampled = false;
+ bool same = true;
+
+ optional<int> common_frame_rate;
+ BOOST_FOREACH (AudioStreamPtr i, streams) {
+ if (i->frame_rate() != resampled_audio_frame_rate()) {
+ resampled = true;
+ } else {
+ not_resampled = true;
+ }
+
+ if (common_frame_rate && common_frame_rate != i->frame_rate ()) {
+ same = false;
+ }
+ common_frame_rate = i->frame_rate ();
+ }
+
+ if (not_resampled && !resampled) {
+ return _("Audio will not be resampled");
+ }
+
+ if (not_resampled && resampled) {
+ return String::compose (_("Some audio will be resampled to %1kHz"), resampled_audio_frame_rate ());
+ }
+
+ if (!not_resampled && resampled) {
+ if (same) {
+ return String::compose (_("Audio will be resampled from %1kHz to %2kHz"), common_frame_rate.get(), resampled_audio_frame_rate ());
+ } else {
+ return String::compose (_("Audio will be resampled to %1kHz"), resampled_audio_frame_rate ());
+ }
+ }
+
+ return "";
+}
+
+/** @return true if any stream in this content has a sampling rate of more than 48kHz */
+bool
+AudioContent::has_rate_above_48k () const