summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-10-19 22:50:47 +0100
committerCarl Hetherington <cth@carlh.net>2018-10-19 22:50:47 +0100
commit9c44c5fa8eaf00ef4e61c08273b8df55047ac082 (patch)
tree4529be91d9426e051c895776b5afd2fd1fa1c556
parent6829a1c1b3c577cdd6bc6d206dd52608b0a976ab (diff)
Add decryption support.v2.13.63
-rw-r--r--src/lib/ffmpeg.cc3
-rw-r--r--src/lib/ffmpeg_content.cc5
-rw-r--r--src/lib/ffmpeg_content.h6
3 files changed, 13 insertions, 1 deletions
diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc
index 5171166d5..1502b3de9 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -128,6 +128,9 @@ FFmpeg::setup_general ()
*/
av_dict_set (&options, "analyzeduration", raw_convert<string> (5 * 60 * 1000000).c_str(), 0);
av_dict_set (&options, "probesize", raw_convert<string> (5 * 60 * 1000000).c_str(), 0);
+ if (_ffmpeg_content->decryption_key()) {
+ av_dict_set (&options, "decryption_key", _ffmpeg_content->decryption_key()->c_str(), 0);
+ }
int e = avformat_open_input (&_format_context, 0, 0, &options);
if (e < 0) {
diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc
index 961c0b0a3..70b867172 100644
--- a/src/lib/ffmpeg_content.cc
+++ b/src/lib/ffmpeg_content.cc
@@ -125,7 +125,7 @@ FFmpegContent::FFmpegContent (shared_ptr<const Film> film, cxml::ConstNodePtr no
_color_trc = get_optional_enum<AVColorTransferCharacteristic>(node, "ColorTransferCharacteristic");
_colorspace = get_optional_enum<AVColorSpace>(node, "Colorspace");
_bits_per_pixel = node->optional_number_child<int> ("BitsPerPixel");
-
+ _decryption_key = node->optional_string_child ("DecryptionKey");
}
FFmpegContent::FFmpegContent (shared_ptr<const Film> film, vector<shared_ptr<Content> > c)
@@ -246,6 +246,9 @@ FFmpegContent::as_xml (xmlpp::Node* node, bool with_paths) const
if (_bits_per_pixel) {
node->add_child("BitsPerPixel")->add_child_text (raw_convert<string> (*_bits_per_pixel));
}
+ if (_decryption_key) {
+ node->add_child("DecryptionKey")->add_child_text (_decryption_key.get());
+ }
}
void
diff --git a/src/lib/ffmpeg_content.h b/src/lib/ffmpeg_content.h
index 64f6f9ff8..87a892e68 100644
--- a/src/lib/ffmpeg_content.h
+++ b/src/lib/ffmpeg_content.h
@@ -93,6 +93,11 @@ public:
void signal_subtitle_stream_changed ();
+ boost::optional<std::string> decryption_key () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _decryption_key;
+ }
+
private:
void add_properties (std::list<UserProperty> &) const;
@@ -110,6 +115,7 @@ private:
boost::optional<AVColorTransferCharacteristic> _color_trc;
boost::optional<AVColorSpace> _colorspace;
boost::optional<int> _bits_per_pixel;
+ boost::optional<std::string> _decryption_key;
};
#endif