diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-04-14 22:16:27 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-04-14 22:16:27 +0200 |
| commit | 4ab86ef0295bcd6bb9297996a06006f371d22bae (patch) | |
| tree | fefc1706a67a10f6aa1a7c5d576e5cb8826ce950 /src/lib/player_video.cc | |
| parent | 3b31d2d8a129ae6d8d267427bd6b5bc444b40b2a (diff) | |
Ignore and report failures to decode frames during playback (#1593).
Diffstat (limited to 'src/lib/player_video.cc')
| -rw-r--r-- | src/lib/player_video.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc index bd643af60..8d55ffb2e 100644 --- a/src/lib/player_video.cc +++ b/src/lib/player_video.cc @@ -54,7 +54,8 @@ PlayerVideo::PlayerVideo ( optional<ColourConversion> colour_conversion, VideoRange video_range, weak_ptr<Content> content, - optional<Frame> video_frame + optional<Frame> video_frame, + bool error ) : _in (in) , _crop (crop) @@ -67,6 +68,7 @@ PlayerVideo::PlayerVideo ( , _video_range (video_range) , _content (content) , _video_frame (video_frame) + , _error (error) { } @@ -81,6 +83,7 @@ PlayerVideo::PlayerVideo (shared_ptr<cxml::Node> node, shared_ptr<Socket> socket _eyes = (Eyes) node->number_child<int> ("Eyes"); _part = (Part) node->number_child<int> ("Part"); _video_range = (VideoRange) node->number_child<int>("VideoRange"); + _error = node->optional_bool_child("Error").get_value_or (false); /* Assume that the ColourConversion uses the current state version */ _colour_conversion = ColourConversion::from_xml (node, Film::current_state_version); @@ -133,6 +136,7 @@ PlayerVideo::make_image (function<AVPixelFormat (AVPixelFormat)> pixel_format, b _image_fade = _fade; ImageProxy::Result prox = _in->image (_inter_size); + _error = prox.error; Crop total_crop = _crop; switch (_part) { @@ -194,6 +198,7 @@ PlayerVideo::add_metadata (xmlpp::Node* node) const node->add_child("Eyes")->add_child_text (raw_convert<string> (static_cast<int> (_eyes))); node->add_child("Part")->add_child_text (raw_convert<string> (static_cast<int> (_part))); node->add_child("VideoRange")->add_child_text(raw_convert<string>(static_cast<int>(_video_range))); + node->add_child("Error")->add_child_text(_error ? "1" : "0"); if (_colour_conversion) { _colour_conversion.get().as_xml (node); } @@ -315,7 +320,8 @@ PlayerVideo::shallow_copy () const _colour_conversion, _video_range, _content, - _video_frame + _video_frame, + _error ) ); } |
