ipa: rpi: cam_helper: Extend embedded data parsing to RAW14 modes
Fix embedded data byte-skipping for 14-bit modes (4 out of 7 bytes carry register data), and allow 14-bit modes in IMX708 PDAF parsing. Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
a63af956ac
commit
caed5a551b
2 changed files with 8 additions and 5 deletions
|
@ -269,7 +269,7 @@ bool CamHelperImx708::parsePdafData(const uint8_t *ptr, size_t len,
|
|||
{
|
||||
size_t step = bpp >> 1; /* bytes per PDAF grid entry */
|
||||
|
||||
if (bpp < 10 || bpp > 12 || len < 194 * step || ptr[0] != 0 || ptr[1] >= 0x40) {
|
||||
if (bpp < 10 || bpp > 14 || len < 194 * step || ptr[0] != 0 || ptr[1] >= 0x40) {
|
||||
LOG(IPARPI, Error) << "PDAF data in unsupported format";
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -86,10 +86,13 @@ MdParserSmia::ParseStatus MdParserSmia::findRegs(libcamera::Span<const uint8_t>
|
|||
while (1) {
|
||||
int tag = buffer[currentOffset++];
|
||||
|
||||
if ((bitsPerPixel_ == 10 &&
|
||||
/* Non-dummy bytes come in even-sized blocks: skip can only ever follow tag */
|
||||
while ((bitsPerPixel_ == 10 &&
|
||||
(currentOffset + 1 - currentLineStart) % 5 == 0) ||
|
||||
(bitsPerPixel_ == 12 &&
|
||||
(currentOffset + 1 - currentLineStart) % 3 == 0)) {
|
||||
(currentOffset + 1 - currentLineStart) % 3 == 0) ||
|
||||
(bitsPerPixel_ == 14 &&
|
||||
(currentOffset - currentLineStart) % 7 >= 4)) {
|
||||
if (buffer[currentOffset++] != RegSkip)
|
||||
return BadDummy;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue