break;
case PIX_FMT_RGB24:
case PIX_FMT_RGBA:
+ case PIX_FMT_YUV422P10LE:
+ case PIX_FMT_YUV422P:
return size().height;
default:
assert (false);
{
switch (_pixel_format) {
case PIX_FMT_YUV420P:
+ case PIX_FMT_YUV422P10LE:
+ case PIX_FMT_YUV422P:
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:
+ case PIX_FMT_YUV422P:
+ 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:
+ case PIX_FMT_YUV422P:
memset (data()[0], 0, lines(0) * stride()[0]);
memset (data()[1], 0x80, lines(1) * stride()[1]);
memset (data()[2], 0x80, lines(2) * stride()[2]);
* @param p Pixel format.
* @param s Size in pixels.
*/
-SimpleImage::SimpleImage (PixelFormat p, Size s, function<int (int)> rounder)
+SimpleImage::SimpleImage (AVPixelFormat p, Size s, function<int (int)> rounder)
: Image (p)
, _size (s)
{
_data = (uint8_t **) av_malloc (4 * sizeof (uint8_t *));
_data[0] = _data[1] = _data[2] = _data[3] = 0;
- _line_size = (int *) av_malloc (4);
+ _line_size = (int *) av_malloc (4 * sizeof (int));
_line_size[0] = _line_size[1] = _line_size[2] = _line_size[3] = 0;
- _stride = (int *) av_malloc (4);
+ _stride = (int *) av_malloc (4 * sizeof (int));
_stride[0] = _stride[1] = _stride[2] = _stride[3] = 0;
switch (p) {
_line_size[0] = s.width * 4;
break;
case PIX_FMT_YUV420P:
+ case PIX_FMT_YUV422P:
_line_size[0] = s.width;
_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;
+ break;
default:
assert (false);
}
return _size;
}
-AlignedImage::AlignedImage (PixelFormat f, Size s)
+AlignedImage::AlignedImage (AVPixelFormat f, Size s)
: SimpleImage (f, s, boost::bind (round_up, _1, 32))
{
}
-CompactImage::CompactImage (PixelFormat f, Size s)
+CompactImage::CompactImage (AVPixelFormat f, Size s)
: SimpleImage (f, s, boost::bind (round_up, _1, 1))
{
}
}
-FilterBufferImage::FilterBufferImage (PixelFormat p, AVFilterBufferRef* b)
+FilterBufferImage::FilterBufferImage (AVPixelFormat p, AVFilterBufferRef* b)
: Image (p)
, _buffer (b)
{