using std::string;
using boost::lexical_cast;
using boost::function;
+using boost::optional;
using namespace dcp;
/** Create an Asset with a randomly-generated ID */
asset->add_child("Id")->add_child_text ("urn:uuid:" + _id);
xmlpp::Node* chunk_list = asset->add_child ("ChunkList");
xmlpp::Node* chunk = chunk_list->add_child ("Chunk");
- boost::optional<boost::filesystem::path> path = relative_to_root (root, _file);
+ optional<boost::filesystem::path> path = relative_to_root (root, _file);
if (!path) {
throw MiscError (String::compose ("Asset %1 is not within the directory %2", _file, root));
}
}
string
-Asset::hash () const
+Asset::hash (function<void (float)> progress) const
{
assert (!_file.empty ());
if (_hash.empty ()) {
- _hash = make_digest (_file, 0);
+ _hash = make_digest (_file, progress);
}
return _hash;
#include "types.h"
#include <boost/filesystem.hpp>
#include <boost/function.hpp>
+#include <boost/bind.hpp>
namespace xmlpp {
class Node;
void set_file (boost::filesystem::path file) const;
- /** @return the hash of this asset's file. It will be
- * computed by this call if necessary.
- */
- std::string hash () const;
+ /** @return the hash of this asset's file */
+ std::string hash (boost::function<void (float)> progress = 0) const;
protected:
virtual std::string pkl_type () const = 0;
-
+
/** The disk file that represents this asset, if one exists */
mutable boost::filesystem::path _file;
/** Hash of _file, or empty if the hash has not yet been computed */
boost::shared_ptr<SoundMXF> mxf () {
return boost::dynamic_pointer_cast<SoundMXF> (_content.object ());
}
+
+ boost::shared_ptr<const SoundMXF> mxf () const {
+ return boost::dynamic_pointer_cast<const SoundMXF> (_content.object ());
+ }
private:
std::string cpl_node_name () const;
using std::list;
using std::setw;
using std::setfill;
+using std::ostream;
using boost::shared_ptr;
+using boost::optional;
+using boost::function;
using namespace dcp;
/** Create a UUID.
/** Create a digest for a file.
* @param filename File name.
- * @param progress Pointer to a progress reporting function, or 0. The function will be called
+ * @param progress Optional progress reporting function. The function will be called
* with a progress value between 0 and 1.
* @return Digest.
*/
string
-dcp::make_digest (boost::filesystem::path filename, boost::function<void (float)>* progress)
+dcp::make_digest (boost::filesystem::path filename, function<void (float)> progress)
{
Kumu::FileReader reader;
Kumu::Result_t r = reader.OpenRead (filename.string().c_str ());
SHA1_Update (&sha, read_buffer.Data(), read);
if (progress) {
- (*progress) (float (done) / size);
+ progress (float (done) / size);
done += read;
}
}
return !(a == b);
}
+ostream& dcp::operator<< (ostream& s, dcp::Size const & a)
+{
+ s << a.width << "x" << a.height;
+ return s;
+}
+
/** Decode a base64 string. The base64 decode routine in KM_util.cpp
* gives different values to both this and the command-line base64
* for some inputs. Not sure why.
#endif
}
-boost::optional<boost::filesystem::path>
+optional<boost::filesystem::path>
dcp::relative_to_root (boost::filesystem::path root, boost::filesystem::path file)
{
boost::filesystem::path::const_iterator i = root.begin ();
}
if (i != root.end ()) {
- return boost::optional<boost::filesystem::path> ();
+ return optional<boost::filesystem::path> ();
}
boost::filesystem::path rel;
extern bool operator== (Size const & a, Size const & b);
extern bool operator!= (Size const & a, Size const & b);
+extern std::ostream& operator<< (std::ostream& s, Size const & a);
extern std::string make_uuid ();
-extern std::string make_digest (boost::filesystem::path filename, boost::function<void (float)> *);
+extern std::string make_digest (boost::filesystem::path filename, boost::function<void (float)>);
extern std::string content_kind_to_string (ContentKind kind);
extern ContentKind content_kind_from_string (std::string kind);
extern bool empty_or_white_space (std::string s);
picture_mxf_writer.h
rgb_xyz.h
reel.h
+ reel_asset.h
+ reel_mono_picture_asset.h
+ reel_picture_asset.h
+ reel_sound_asset.h
+ reel_stereo_picture_asset.h
ref.h
argb_frame.h
signer.h
signer_chain.h
- sound_mxf.h
sound_frame.h
+ sound_mxf.h
+ sound_mxf_writer.h
stereo_picture_mxf.h
stereo_picture_frame.h
subtitle.h
+ subtitle_content.h
subtitle_string.h
types.h
util.h