#include "log.h"
#include "exceptions.h"
#include "frame_rate_change.h"
-#include "raw_convert.h"
#include "subtitle_content.h"
-#include <locked_sstream.h>
+#include <dcp/raw_convert.h>
#include <libcxml/cxml.h>
extern "C" {
#include <libavformat/avformat.h>
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
using boost::optional;
+using dcp::raw_convert;
int const FFmpegContentProperty::SUBTITLE_STREAMS = 100;
int const FFmpegContentProperty::SUBTITLE_STREAM = 101;
}
void
-FFmpegContent::as_xml (xmlpp::Node* node) const
+FFmpegContent::as_xml (xmlpp::Node* node, bool with_paths) const
{
node->add_child("Type")->add_child_text ("FFmpeg");
- Content::as_xml (node);
+ Content::as_xml (node, with_paths);
if (video) {
video->as_xml (node);
node->add_child("FirstVideo")->add_child_text (raw_convert<string> (_first_video.get().get()));
}
- node->add_child("ColorRange")->add_child_text (raw_convert<string> (_color_range));
- node->add_child("ColorPrimaries")->add_child_text (raw_convert<string> (_color_primaries));
- node->add_child("ColorTransferCharacteristic")->add_child_text (raw_convert<string> (_color_trc));
- node->add_child("Colorspace")->add_child_text (raw_convert<string> (_colorspace));
+ node->add_child("ColorRange")->add_child_text (raw_convert<string> (static_cast<int> (_color_range)));
+ node->add_child("ColorPrimaries")->add_child_text (raw_convert<string> (static_cast<int> (_color_primaries)));
+ node->add_child("ColorTransferCharacteristic")->add_child_text (raw_convert<string> (static_cast<int> (_color_trc)));
+ node->add_child("Colorspace")->add_child_text (raw_convert<string> (static_cast<int> (_colorspace)));
if (_bits_per_pixel) {
node->add_child("BitsPerPixel")->add_child_text (raw_convert<string> (_bits_per_pixel.get ()));
}
string
FFmpegContent::identifier () const
{
- locked_stringstream s;
-
- s << Content::identifier();
+ string s = Content::identifier();
if (video) {
- s << "_" << video->identifier();
+ s += "_" + video->identifier();
}
if (subtitle) {
- s << "_" << subtitle->identifier();
+ s += "_" + subtitle->identifier();
}
boost::mutex::scoped_lock lm (_mutex);
if (_subtitle_stream) {
- s << "_" << _subtitle_stream->identifier ();
+ s += "_" + _subtitle_stream->identifier ();
}
for (vector<Filter const *>::const_iterator i = _filters.begin(); i != _filters.end(); ++i) {
- s << "_" << (*i)->id ();
+ s += "_" + (*i)->id ();
}
- return s.str ();
+ return s;
}
list<ContentTimePeriod>
p.push_back (UserProperty (UserProperty::VIDEO, _("Colourspace"), spaces[_colorspace]));
if (_bits_per_pixel) {
- p.push_back (UserProperty (UserProperty::VIDEO, _("Bits per pixel"), raw_convert<string> (_bits_per_pixel.get ())));
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Bits per pixel"), _bits_per_pixel.get ()));
}
}
return fa;
}
+
+void
+FFmpegContent::use_template (shared_ptr<const Content> c)
+{
+ Content::use_template (c);
+
+ shared_ptr<const FFmpegContent> fc = dynamic_pointer_cast<const FFmpegContent> (c);
+ _filters = fc->_filters;
+}