diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-06-07 21:27:40 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-06-07 21:27:40 +0100 |
| commit | 2d9f569c146b391159f362c854457ce1facac1e8 (patch) | |
| tree | a89e9932ed139854210341b13bdd9903cae07981 /src | |
| parent | 3458d0ec34f08a8eeef9b158f26a476a18548353 (diff) | |
Fix crash when alpha-blending subtitles onto YUV420 images.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/image.cc | 10 | ||||
| -rw-r--r-- | src/lib/image.h | 2 | ||||
| -rw-r--r-- | src/lib/player_video.cc | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/lib/image.cc b/src/lib/image.cc index b82cc6072..03a4d96b4 100644 --- a/src/lib/image.cc +++ b/src/lib/image.cc @@ -1035,3 +1035,13 @@ Image::fade (float f) throw PixelFormatError ("fade()", _pixel_format); } } + +shared_ptr<Image> +Image::ensure_aligned (shared_ptr<Image> image) +{ + if (image->aligned()) { + return image; + } + + return shared_ptr<Image> (new Image (image, true)); +} diff --git a/src/lib/image.h b/src/lib/image.h index fd5adb076..9a5a7dae8 100644 --- a/src/lib/image.h +++ b/src/lib/image.h @@ -77,6 +77,8 @@ public: return _pixel_format; } + static boost::shared_ptr<Image> ensure_aligned (boost::shared_ptr<Image> image); + private: friend struct pixel_formats_test; diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc index 2e53a6aa6..6f0977e62 100644 --- a/src/lib/player_video.cc +++ b/src/lib/player_video.cc @@ -135,7 +135,7 @@ PlayerVideo::image (dcp::NoteHandler note, function<AVPixelFormat (AVPixelFormat ); if (_subtitle) { - out->alpha_blend (_subtitle->image, _subtitle->position); + out->alpha_blend (Image::ensure_aligned (_subtitle->image), _subtitle->position); } if (_fade) { |
