summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-06-07 21:27:40 +0100
committerCarl Hetherington <cth@carlh.net>2017-06-07 21:27:40 +0100
commit2d9f569c146b391159f362c854457ce1facac1e8 (patch)
treea89e9932ed139854210341b13bdd9903cae07981 /src
parent3458d0ec34f08a8eeef9b158f26a476a18548353 (diff)
Fix crash when alpha-blending subtitles onto YUV420 images.
Diffstat (limited to 'src')
-rw-r--r--src/lib/image.cc10
-rw-r--r--src/lib/image.h2
-rw-r--r--src/lib/player_video.cc2
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) {