Handle multiple audio streams in a single piece of content
[dcpomatic.git] / src / lib / ffmpeg_audio_stream.cc
index 255952b8fd02b366535c472823031f95f1ad97d1..7a9e8c18e651f2dfbbe016f489497ce2fb51165d 100644 (file)
 
 */
 
+#include "ffmpeg_audio_stream.h"
+#include "raw_convert.h"
 #include <libxml++/libxml++.h>
 #include <libcxml/cxml.h>
-#include <dcp/raw_convert.h>
-#include "ffmpeg_audio_stream.h"
 
 using std::string;
-using dcp::raw_convert;
 
 FFmpegAudioStream::FFmpegAudioStream (cxml::ConstNodePtr node, int version)
        : FFmpegStream (node)
-       , mapping (node->node_child ("Mapping"), version)
+       , AudioStream (node->number_child<int> ("FrameRate"), AudioMapping (node->node_child ("Mapping"), version))
 {
-       frame_rate = node->number_child<int> ("FrameRate");
-       channels = node->number_child<int64_t> ("Channels");
        first_audio = node->optional_number_child<double> ("FirstAudio");
 }
 
@@ -38,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"));
 }