summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-10-17 14:28:02 +0100
committerCarl Hetherington <cth@carlh.net>2012-10-17 14:28:02 +0100
commitfd940c35fc6f6857b93e07a8fb9ac2110dab9475 (patch)
tree66edbb0ca30d0c6a0440e4efc3a6499dee947ea4 /src/lib
parentda25b742c3fd0022f0964d8aa3b77a89cc08a644 (diff)
Try to support 422 in post processing.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/image.cc18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/lib/image.cc b/src/lib/image.cc
index 9162637c7..06b98c4d3 100644
--- a/src/lib/image.cc
+++ b/src/lib/image.cc
@@ -173,10 +173,22 @@ Image::scale_and_convert_to_rgb (Size out_size, int padding, Scaler const * scal
shared_ptr<Image>
Image::post_process (string pp) const
{
- shared_ptr<Image> out (new AlignedImage (PIX_FMT_YUV420P, size ()));
-
+ shared_ptr<Image> out (new AlignedImage (pixel_format(), size ()));
+
+ int pp_format = 0;
+ switch (pixel_format()) {
+ case PIX_FMT_YUV420P:
+ pp_format = PP_FORMAT_420;
+ break;
+ case PIX_FMT_YUV422P10LE:
+ pp_format = PP_FORMAT_422;
+ break;
+ default:
+ assert (false);
+ }
+
pp_mode* mode = pp_get_mode_by_name_and_quality (pp.c_str (), PP_QUALITY_MAX);
- pp_context* context = pp_get_context (size().width, size().height, PP_FORMAT_420 | PP_CPU_CAPS_MMX2);
+ pp_context* context = pp_get_context (size().width, size().height, pp_format | PP_CPU_CAPS_MMX2);
pp_postprocess (
(const uint8_t **) data(), stride(),