Skip to content

Commit 21181c5

Browse files
committed
libpisp: utils: Fix support for wallpaper and semiplanar formats
Correct the stride calucation and add YUV420SP, YUV420SP_COL128, and YUV420SP10_COL128 identifiers. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
1 parent 4f3c86b commit 21181c5

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/helpers/v4l2_device.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ static FormatInfo get_v4l2_format(const std::string &format)
4343
{ "UYVY", { V4L2_PIX_FMT_UYVY, 1 } },
4444
{ "NV12", { V4L2_PIX_FMT_NV12M, 2 } },
4545
{ "YUV420SP_COL128", { V4L2_PIX_FMT_NV12MT_COL128, 2 } },
46+
{ "YUV420SP10_COL128", { V4L2_PIX_FMT_NV12MT_10_COL128, 2 } },
4647
};
4748

4849
auto it = formats.find(format);

src/libpisp/common/pisp_utils.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void compute_stride_align(pisp_image_format_config &config, int align, bool pres
6464
{
6565
if (PISP_IMAGE_FORMAT_WALLPAPER(config.format))
6666
{
67-
config.stride2 = config.stride = config.height * PISP_WALLPAPER_WIDTH;
67+
config.stride2 = config.stride = ((config.height + 7) & ~7) * PISP_WALLPAPER_WIDTH;
6868
if (PISP_IMAGE_FORMAT_SAMPLING_420(config.format))
6969
config.stride2 /= 2;
7070
return;
@@ -222,11 +222,19 @@ static const std::map<std::string, uint32_t> &formats_table()
222222
// Note that alternate names and plane orderings are not defined to keep a 1:1 mapping.
223223
static const std::map<std::string, uint32_t> formats = {
224224
{ "YUV444P", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 + PISP_IMAGE_FORMAT_SAMPLING_444 +
225-
PISP_IMAGE_FORMAT_PLANARITY_PLANAR },
225+
PISP_IMAGE_FORMAT_PLANARITY_PLANAR },
226226
{ "YUV422P", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 + PISP_IMAGE_FORMAT_SAMPLING_422 +
227-
PISP_IMAGE_FORMAT_PLANARITY_PLANAR },
227+
PISP_IMAGE_FORMAT_PLANARITY_PLANAR },
228228
{ "YUV420P", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 + PISP_IMAGE_FORMAT_SAMPLING_420 +
229-
PISP_IMAGE_FORMAT_PLANARITY_PLANAR },
229+
PISP_IMAGE_FORMAT_PLANARITY_PLANAR },
230+
{ "YUV420SP", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 + PISP_IMAGE_FORMAT_SAMPLING_420 +
231+
PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR },
232+
{ "YUV420SP_COL128", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 +
233+
PISP_IMAGE_FORMAT_SAMPLING_420 + PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR +
234+
PISP_IMAGE_FORMAT_WALLPAPER_ROLL },
235+
{ "YUV420SP10_COL128", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_10 +
236+
PISP_IMAGE_FORMAT_SAMPLING_420 + PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR +
237+
PISP_IMAGE_FORMAT_WALLPAPER_ROLL },
230238
{ "NV12", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 + PISP_IMAGE_FORMAT_SAMPLING_420 +
231239
PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR },
232240
{ "NV21", PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_8 + PISP_IMAGE_FORMAT_SAMPLING_420 +

0 commit comments

Comments
 (0)