}
boost::filesystem::path p = film->audio_analysis_dir ();
- p /= digest() + "_" + audio_mapping().digest();
+ p /= digest().get_value_or ("X") + "_" + audio_mapping().digest();
return p;
}
for (list<cxml::NodePtr>::const_iterator i = path_children.begin(); i != path_children.end(); ++i) {
_paths.push_back ((*i)->content ());
}
- _digest = node->string_child ("Digest");
+ _digest = node->optional_string_child ("Digest");
_position = DCPTime (node->number_child<double> ("Position"));
_trim_start = DCPTime (node->number_child<double> ("TrimStart"));
_trim_end = DCPTime (node->number_child<double> ("TrimEnd"));
for (vector<boost::filesystem::path>::const_iterator i = _paths.begin(); i != _paths.end(); ++i) {
node->add_child("Path")->add_child_text (i->string ());
}
- node->add_child("Digest")->add_child_text (_digest);
+ if (_digest) {
+ node->add_child("Digest")->add_child_text (_digest.get ());
+ }
node->add_child("Position")->add_child_text (raw_convert<string> (_position.get ()));
node->add_child("TrimStart")->add_child_text (raw_convert<string> (_trim_start.get ()));
node->add_child("TrimEnd")->add_child_text (raw_convert<string> (_trim_end.get ()));
bool paths_valid () const;
/** @return MD5 digest of the content's file(s) */
- std::string digest () const {
+ boost::optional<std::string> digest () const {
boost::mutex::scoped_lock lm (_mutex);
return _digest;
}
std::vector<boost::filesystem::path> _paths;
private:
- std::string _digest;
+ boost::optional<std::string> _digest;
DCPTime _position;
DCPTime _trim_start;
DCPTime _trim_end;
*/
boost::filesystem::path p = film->audio_analysis_dir ();
- string name = digest ();
+ string name = digest().get_value_or ("X");
if (audio_stream ()) {
name += "_" + audio_stream()->identifier ();
}