break;
case PIX_FMT_RGB24:
case PIX_FMT_RGBA:
+ case PIX_FMT_YUV422P10LE:
return size().height;
default:
assert (false);
{
switch (_pixel_format) {
case PIX_FMT_YUV420P:
+ case PIX_FMT_YUV422P10LE:
return 3;
case PIX_FMT_RGB24:
case PIX_FMT_RGBA:
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(),
{
switch (_pixel_format) {
case PIX_FMT_YUV420P:
+ case PIX_FMT_YUV422P10LE:
memset (data()[0], 0, lines(0) * stride()[0]);
memset (data()[1], 0x80, lines(1) * stride()[1]);
memset (data()[2], 0x80, lines(2) * stride()[2]);
_line_size[1] = s.width / 2;
_line_size[2] = s.width / 2;
break;
+ case PIX_FMT_YUV422P10LE:
+ _line_size[0] = s.width * 2;
+ _line_size[1] = s.width;
+ _line_size[2] = s.width;
default:
assert (false);
}