mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-15 16:35:06 +03:00
android: camera_buffer: Add stride/offset/size function
This adds getter functions of stride, offset and size to CameraBuffer interface. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
c5e2ed7806
commit
6453e75c7a
3 changed files with 65 additions and 0 deletions
|
@ -31,6 +31,10 @@ public:
|
||||||
libcamera::Span<const uint8_t> plane(unsigned int plane) const;
|
libcamera::Span<const uint8_t> plane(unsigned int plane) const;
|
||||||
libcamera::Span<uint8_t> plane(unsigned int plane);
|
libcamera::Span<uint8_t> plane(unsigned int plane);
|
||||||
|
|
||||||
|
unsigned int stride(unsigned int plane) const;
|
||||||
|
unsigned int offset(unsigned int plane) const;
|
||||||
|
unsigned int size(unsigned int plane) const;
|
||||||
|
|
||||||
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
|
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,6 +66,18 @@ Span<uint8_t> CameraBuffer::plane(unsigned int plane) \
|
||||||
{ \
|
{ \
|
||||||
return _d()->plane(plane); \
|
return _d()->plane(plane); \
|
||||||
} \
|
} \
|
||||||
|
unsigned int CameraBuffer::stride(unsigned int plane) const \
|
||||||
|
{ \
|
||||||
|
return _d()->stride(plane); \
|
||||||
|
} \
|
||||||
|
unsigned int CameraBuffer::offset(unsigned int plane) const \
|
||||||
|
{ \
|
||||||
|
return _d()->offset(plane); \
|
||||||
|
} \
|
||||||
|
unsigned int CameraBuffer::size(unsigned int plane) const \
|
||||||
|
{ \
|
||||||
|
return _d()->size(plane); \
|
||||||
|
} \
|
||||||
size_t CameraBuffer::jpegBufferSize(size_t maxJpegBufferSize) const \
|
size_t CameraBuffer::jpegBufferSize(size_t maxJpegBufferSize) const \
|
||||||
{ \
|
{ \
|
||||||
return _d()->jpegBufferSize(maxJpegBufferSize); \
|
return _d()->jpegBufferSize(maxJpegBufferSize); \
|
||||||
|
|
|
@ -31,6 +31,10 @@ public:
|
||||||
|
|
||||||
Span<uint8_t> plane(unsigned int plane);
|
Span<uint8_t> plane(unsigned int plane);
|
||||||
|
|
||||||
|
unsigned int stride(unsigned int plane) const;
|
||||||
|
unsigned int offset(unsigned int plane) const;
|
||||||
|
unsigned int size(unsigned int plane) const;
|
||||||
|
|
||||||
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
|
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -111,6 +115,21 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)
|
||||||
bufferManager_->GetPlaneSize(handle_, plane) };
|
bufferManager_->GetPlaneSize(handle_, plane) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int CameraBuffer::Private::stride(unsigned int plane) const
|
||||||
|
{
|
||||||
|
return cros::CameraBufferManager::GetPlaneStride(handle_, plane);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int CameraBuffer::Private::offset(unsigned int plane) const
|
||||||
|
{
|
||||||
|
return cros::CameraBufferManager::GetPlaneOffset(handle_, plane);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int CameraBuffer::Private::size(unsigned int plane) const
|
||||||
|
{
|
||||||
|
return cros::CameraBufferManager::GetPlaneSize(handle_, plane);
|
||||||
|
}
|
||||||
|
|
||||||
size_t CameraBuffer::Private::jpegBufferSize([[maybe_unused]] size_t maxJpegBufferSize) const
|
size_t CameraBuffer::Private::jpegBufferSize([[maybe_unused]] size_t maxJpegBufferSize) const
|
||||||
{
|
{
|
||||||
return bufferManager_->GetPlaneSize(handle_, 0);
|
return bufferManager_->GetPlaneSize(handle_, 0);
|
||||||
|
|
|
@ -34,10 +34,15 @@ public:
|
||||||
|
|
||||||
Span<uint8_t> plane(unsigned int plane);
|
Span<uint8_t> plane(unsigned int plane);
|
||||||
|
|
||||||
|
unsigned int stride(unsigned int plane) const;
|
||||||
|
unsigned int offset(unsigned int plane) const;
|
||||||
|
unsigned int size(unsigned int plane) const;
|
||||||
|
|
||||||
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
|
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct PlaneInfo {
|
struct PlaneInfo {
|
||||||
|
unsigned int stride;
|
||||||
unsigned int offset;
|
unsigned int offset;
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
};
|
};
|
||||||
|
@ -114,6 +119,7 @@ CameraBuffer::Private::Private([[maybe_unused]] CameraBuffer *cameraBuffer,
|
||||||
const unsigned int planeSize =
|
const unsigned int planeSize =
|
||||||
stride * ((size.height + vertSubSample - 1) / vertSubSample);
|
stride * ((size.height + vertSubSample - 1) / vertSubSample);
|
||||||
|
|
||||||
|
planeInfo_[i].stride = stride;
|
||||||
planeInfo_[i].offset = offset;
|
planeInfo_[i].offset = offset;
|
||||||
planeInfo_[i].size = planeSize;
|
planeInfo_[i].size = planeSize;
|
||||||
|
|
||||||
|
@ -148,6 +154,30 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)
|
||||||
return planes_[plane];
|
return planes_[plane];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int CameraBuffer::Private::stride(unsigned int plane) const
|
||||||
|
{
|
||||||
|
if (plane >= planeInfo_.size())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return planeInfo_[plane].stride;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int CameraBuffer::Private::offset(unsigned int plane) const
|
||||||
|
{
|
||||||
|
if (plane >= planeInfo_.size())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return planeInfo_[plane].offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int CameraBuffer::Private::size(unsigned int plane) const
|
||||||
|
{
|
||||||
|
if (plane >= planeInfo_.size())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return planeInfo_[plane].size;
|
||||||
|
}
|
||||||
|
|
||||||
size_t CameraBuffer::Private::jpegBufferSize(size_t maxJpegBufferSize) const
|
size_t CameraBuffer::Private::jpegBufferSize(size_t maxJpegBufferSize) const
|
||||||
{
|
{
|
||||||
ASSERT(bufferLength_ >= 0);
|
ASSERT(bufferLength_ >= 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue