+class NetworkError : public std::runtime_error
+{
+public:
+ explicit NetworkError (std::string s, boost::optional<std::string> d = boost::optional<std::string>());
+
+ std::string summary () const {
+ return _summary;
+ }
+
+ boost::optional<std::string> detail () const {
+ return _detail;
+ }
+
+private:
+ std::string _summary;
+ boost::optional<std::string> _detail;
+};
+
+
+/** @class KDMError
+ * @brief A problem with a KDM.
+ */
+class KDMError : public std::runtime_error
+{
+public:
+ KDMError (std::string s, std::string d);
+ ~KDMError () throw() {}
+
+ std::string summary () const {
+ return _summary;
+ }
+
+ std::string detail () const {
+ return _detail;
+ }
+
+private:
+ std::string _summary;
+ std::string _detail;
+};
+
+
+/** @class PixelFormatError
+ * @brief A problem with an unsupported pixel format.
+ */
+class PixelFormatError : public std::runtime_error
+{
+public:
+ PixelFormatError (std::string o, AVPixelFormat f);
+};
+
+
+/** @class TextSubtitleError
+ * @brief An error that occurs while parsing a TextSubtitleError file.
+ */
+class TextSubtitleError : public FileError
+{
+public:
+ TextSubtitleError (std::string, std::string, boost::filesystem::path);
+};
+
+
+class DCPError : public std::runtime_error