diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-10-19 22:50:47 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-10-19 22:50:47 +0100 |
| commit | 9c44c5fa8eaf00ef4e61c08273b8df55047ac082 (patch) | |
| tree | 4529be91d9426e051c895776b5afd2fd1fa1c556 /src/lib | |
| parent | 6829a1c1b3c577cdd6bc6d206dd52608b0a976ab (diff) | |
Add decryption support.v2.13.63
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/ffmpeg.cc | 3 | ||||
| -rw-r--r-- | src/lib/ffmpeg_content.cc | 5 | ||||
| -rw-r--r-- | src/lib/ffmpeg_content.h | 6 |
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 |
