Logging improvements to allow prettier displays in the server GUI.
[dcpomatic.git] / src / lib / ffmpeg_audio_stream.cc
index 255952b8fd02b366535c472823031f95f1ad97d1..d7fc7eaedf56b24dfdb768cea1c84c0fc122d82f 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;
+using boost::optional;
 
 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");
+       optional<ContentTime::Type> const f = node->optional_number_child<ContentTime::Type> ("FirstAudio");
+       if (f) {
+               first_audio = ContentTime (f.get ());
+       }
 }
 
 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().get ()));
        }
-       mapping.as_xml (root->add_child("Mapping"));
 }