Handle multiple audio streams in a single piece of content
[dcpomatic.git] / src / lib / ffmpeg_audio_stream.cc
index 6300958e094ec75d8ece6e4025f83ae274cd651d..7a9e8c18e651f2dfbbe016f489497ce2fb51165d 100644 (file)
@@ -26,9 +26,7 @@ using std::string;
 
 FFmpegAudioStream::FFmpegAudioStream (cxml::ConstNodePtr node, int version)
        : FFmpegStream (node)
-       , _frame_rate (node->number_child<int> ("FrameRate"))
-       , _channels (node->number_child<int64_t> ("Channels"))
-       , _mapping (node->node_child ("Mapping"), version)
+       , AudioStream (node->number_child<int> ("FrameRate"), AudioMapping (node->node_child ("Mapping"), version))
 {
        first_audio = node->optional_number_child<double> ("FirstAudio");
 }
@@ -37,10 +35,9 @@ void
 FFmpegAudioStream::as_xml (xmlpp::Node* root) const
 {
        FFmpegStream::as_xml (root);
-       root->add_child("FrameRate")->add_child_text (raw_convert<string> (_frame_rate));
-       root->add_child("Channels")->add_child_text (raw_convert<string> (_channels));
+       root->add_child("FrameRate")->add_child_text (raw_convert<string> (frame_rate ()));
+       mapping().as_xml (root->add_child("Mapping"));
        if (first_audio) {
-               root->add_child("FirstAudio")->add_child_text (raw_convert<string> (first_audio.get().get()));
+               root->add_child("FirstAudio")->add_child_text (raw_convert<string> (first_audio.get ()));
        }
-       _mapping.as_xml (root->add_child("Mapping"));
 }