Tidy up test film naming.
[dcpomatic.git] / src / lib / film_state.cc
index 82d492b9aec370bced5d63932b62e71650adad74..0ab38214dd7b1d9cec3a16d7aabce95c6707f781 100644 (file)
@@ -113,17 +113,15 @@ FilmState::write_metadata () const
        f << "width " << _size.width << "\n";
        f << "height " << _size.height << "\n";
        f << "length " << _length << "\n";
-       f << "audio_channels " << _audio_channels << "\n";
        f << "audio_sample_rate " << _audio_sample_rate << "\n";
-       f << "audio_sample_format " << audio_sample_format_to_string (_audio_sample_format) << "\n";
        f << "content_digest " << _content_digest << "\n";
        f << "has_subtitles " << _has_subtitles << "\n";
 
-       for (vector<Stream>::const_iterator i = _audio_streams.begin(); i != _audio_streams.end(); ++i) {
+       for (vector<AudioStream>::const_iterator i = _audio_streams.begin(); i != _audio_streams.end(); ++i) {
                f << "audio_stream " << i->to_string () << "\n";
        }
 
-       for (vector<Stream>::const_iterator i = _subtitle_streams.begin(); i != _subtitle_streams.end(); ++i) {
+       for (vector<SubtitleStream>::const_iterator i = _subtitle_streams.begin(); i != _subtitle_streams.end(); ++i) {
                f << "subtitle_stream " << i->to_string () << "\n";
        }
 
@@ -220,20 +218,16 @@ FilmState::read_metadata ()
                        _size.height = atoi (v.c_str ());
                } else if (k == "length") {
                        _length = atof (v.c_str ());
-               } else if (k == "audio_channels") {
-                       _audio_channels = atoi (v.c_str ());
                } else if (k == "audio_sample_rate") {
                        _audio_sample_rate = atoi (v.c_str ());
-               } else if (k == "audio_sample_format") {
-                       _audio_sample_format = audio_sample_format_from_string (v);
                } else if (k == "content_digest") {
                        _content_digest = v;
                } else if (k == "has_subtitles") {
                        _has_subtitles = (v == "1");
                } else if (k == "audio_stream") {
-                       _audio_streams.push_back (Stream (v));
+                       _audio_streams.push_back (AudioStream (v));
                } else if (k == "subtitle_stream") {
-                       _subtitle_streams.push_back (Stream (v));
+                       _subtitle_streams.push_back (SubtitleStream (v));
                } else if (k == "frames_per_second") {
                        _frames_per_second = atof (v.c_str ());
                }
@@ -354,22 +348,9 @@ FilmState::content_type () const
        return VIDEO;
 }
 
-/** @return Number of bytes per sample of a single channel */
+/** @return The sampling rate that we will resample the audio to */
 int
-FilmState::bytes_per_sample () const
-{
-       switch (_audio_sample_format) {
-       case AV_SAMPLE_FMT_S16:
-               return 2;
-       default:
-               return 0;
-       }
-
-       return 0;
-}
-
-int
-FilmState::target_sample_rate () const
+FilmState::target_audio_sample_rate () const
 {
        /* Resample to a DCI-approved sample rate */
        double t = dcp_audio_sample_rate (_audio_sample_rate);
@@ -441,7 +422,7 @@ FilmState::dci_name () const
                d << "_";
        }
 
-       switch (_audio_channels) {
+       switch (_audio_streams[_audio_stream].channels()) {
        case 1:
                d << "10_";
                break;
@@ -451,6 +432,9 @@ FilmState::dci_name () const
        case 6:
                d << "51_";
                break;
+       case 8:
+               d << "71_";
+               break;
        }
 
        d << "2K_";
@@ -546,20 +530,18 @@ FilmState::set_content (string c)
        shared_ptr<Decoder> d = decoder_factory (s, o, 0, 0);
        
        set_size (d->native_size ());
-       set_length (d->length_in_frames ());
        set_frames_per_second (d->frames_per_second ());
-       set_audio_channels (d->audio_channels ());
        set_audio_sample_rate (d->audio_sample_rate ());
-       set_audio_sample_format (d->audio_sample_format ());
        set_has_subtitles (d->has_subtitles ());
        set_audio_streams (d->audio_streams ());
        set_subtitle_streams (d->subtitle_streams ());
-       set_audio_stream (audio_streams().empty() ? -1 : audio_streams().front().id);
-       set_subtitle_stream (subtitle_streams().empty() ? -1 : subtitle_streams().front().id);
-       set_content_digest (md5_digest (content_path ()));
+       set_audio_stream (audio_streams().empty() ? -1 : 0);
+       set_subtitle_stream (subtitle_streams().empty() ? -1 : 0);
        
        _content = c;
        signal_changed (CONTENT);
+
+       set_content_digest (md5_digest (content_path ()));
 }
               
 void
@@ -788,13 +770,6 @@ FilmState::set_length (int l)
        signal_changed (LENGTH);
 }
 
-void
-FilmState::set_audio_channels (int c)
-{
-       _audio_channels = c;
-       signal_changed (AUDIO_CHANNELS);
-}
-
 void
 FilmState::set_audio_sample_rate (int r)
 {
@@ -802,13 +777,6 @@ FilmState::set_audio_sample_rate (int r)
        signal_changed (AUDIO_SAMPLE_RATE);
 }
 
-void
-FilmState::set_audio_sample_format (AVSampleFormat f)
-{
-       _audio_sample_format = f;
-       _dirty = true;
-}
-
 void
 FilmState::set_content_digest (string d)
 {
@@ -824,14 +792,14 @@ FilmState::set_has_subtitles (bool s)
 }
 
 void
-FilmState::set_audio_streams (vector<Stream> s)
+FilmState::set_audio_streams (vector<AudioStream> s)
 {
        _audio_streams = s;
        _dirty = true;
 }
 
 void
-FilmState::set_subtitle_streams (vector<Stream> s)
+FilmState::set_subtitle_streams (vector<SubtitleStream> s)
 {
        _subtitle_streams = s;
        _dirty = true;
@@ -856,3 +824,13 @@ FilmState::state_copy () const
 {
        return shared_ptr<FilmState> (new FilmState (*this));
 }
+
+int
+FilmState::audio_channels () const
+{
+       if (_audio_stream == -1) {
+               return 0;
+       }
+
+       return _audio_streams[_audio_stream].channels ();
+}