mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
commit
c52988fba2
@ -28,7 +28,7 @@ static char *pointer_overlay = &_fballoc_overlay;
|
|||||||
|
|
||||||
static char *fb_alloc_min_address()
|
static char *fb_alloc_min_address()
|
||||||
{
|
{
|
||||||
return (char *) (framebuffer_get_buffer() + framebuffer_get_size());
|
return (char *) (framebuffer_get_buffer() + framebuffer_get_frame_size());
|
||||||
}
|
}
|
||||||
|
|
||||||
__weak NORETURN void fb_alloc_fail()
|
__weak NORETURN void fb_alloc_fail()
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
#define CONSERVATIVE_JPEG_BUF_SIZE (OMV_JPEG_BUF_SIZE-64)
|
#define CONSERVATIVE_JPEG_BUF_SIZE (OMV_JPEG_BUF_SIZE-64)
|
||||||
|
|
||||||
extern char _fb_base;
|
extern char _fb_base;
|
||||||
|
extern char _fballoc;
|
||||||
framebuffer_t *framebuffer = (framebuffer_t *) &_fb_base;
|
framebuffer_t *framebuffer = (framebuffer_t *) &_fb_base;
|
||||||
|
|
||||||
extern char _jpeg_buf;
|
extern char _jpeg_buf;
|
||||||
@ -197,9 +198,34 @@ int32_t framebuffer_get_depth()
|
|||||||
return framebuffer->bpp;
|
return framebuffer->bpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t framebuffer_get_size()
|
uint32_t framebuffer_get_frame_size()
|
||||||
{
|
{
|
||||||
return OMV_RAW_BUF_SIZE;
|
switch (framebuffer->bpp) {
|
||||||
|
case -1: {
|
||||||
|
// Invalid frame.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case IMAGE_BPP_BINARY: {
|
||||||
|
return ((framebuffer->w + UINT32_T_MASK) >> UINT32_T_SHIFT) * framebuffer->h;
|
||||||
|
}
|
||||||
|
case IMAGE_BPP_GRAYSCALE: {
|
||||||
|
return (framebuffer->w * framebuffer->h) * sizeof(uint8_t);
|
||||||
|
}
|
||||||
|
case IMAGE_BPP_RGB565: {
|
||||||
|
return (framebuffer->w * framebuffer->h) * sizeof(uint16_t);
|
||||||
|
}
|
||||||
|
case IMAGE_BPP_BAYER: {
|
||||||
|
return framebuffer->w * framebuffer->h;
|
||||||
|
}
|
||||||
|
default: { // JPEG
|
||||||
|
return framebuffer->bpp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t framebuffer_get_buffer_size()
|
||||||
|
{
|
||||||
|
return &_fballoc - (char *) framebuffer->pixels;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *framebuffer_get_buffer()
|
uint8_t *framebuffer_get_buffer()
|
||||||
|
|||||||
@ -60,7 +60,12 @@ int32_t framebuffer_get_width();
|
|||||||
int32_t framebuffer_get_height();
|
int32_t framebuffer_get_height();
|
||||||
int32_t framebuffer_get_depth();
|
int32_t framebuffer_get_depth();
|
||||||
|
|
||||||
uint32_t framebuffer_get_size();
|
// Return the size of the current frame (w * h * bpp) if the framebuffer is initialized,
|
||||||
|
// otherwise return 0 if the framebuffer is unintialized or invalid (e.g. first frame).
|
||||||
|
uint32_t framebuffer_get_frame_size();
|
||||||
|
|
||||||
|
// Return the max frame size that fits the framebuffer (i.e OMV_RAW_BUF_SIZE - sizeof(framebuffer_t))
|
||||||
|
uint32_t framebuffer_get_buffer_size();
|
||||||
|
|
||||||
// Return the current buffer address.
|
// Return the current buffer address.
|
||||||
uint8_t *framebuffer_get_buffer();
|
uint8_t *framebuffer_get_buffer();
|
||||||
|
|||||||
@ -383,7 +383,7 @@ void py_helper_update_framebuffer(image_t *img)
|
|||||||
|
|
||||||
void py_helper_set_to_framebuffer(image_t *img)
|
void py_helper_set_to_framebuffer(image_t *img)
|
||||||
{
|
{
|
||||||
PY_ASSERT_TRUE_MSG((image_size(img) <= framebuffer_get_size()),
|
PY_ASSERT_TRUE_MSG((image_size(img) <= framebuffer_get_buffer_size()),
|
||||||
"The image doesn't fit in the frame buffer!");
|
"The image doesn't fit in the frame buffer!");
|
||||||
framebuffer_set(img->w, img->h, img->bpp);
|
framebuffer_set(img->w, img->h, img->bpp);
|
||||||
img->data = framebuffer_get_buffer();
|
img->data = framebuffer_get_buffer();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user