mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
common/usbdbg: Enable RAW binary mode streaming.
This commit is contained in:
parent
6e705114f1
commit
afcd12cb6a
@ -146,10 +146,11 @@ void usbdbg_data_in(uint32_t size, usbdbg_write_callback_t write_callback) {
|
|||||||
case USBDBG_FRAME_SIZE: {
|
case USBDBG_FRAME_SIZE: {
|
||||||
// Return 0 if FB is locked or not ready.
|
// Return 0 if FB is locked or not ready.
|
||||||
uint32_t buffer[3] = { 0 };
|
uint32_t buffer[3] = { 0 };
|
||||||
// Try to lock FB. If header size == 0 frame is not ready
|
buffer[2] = -1; // size < 0
|
||||||
|
// Try to lock FB. If header size < 0 frame is not ready
|
||||||
if (mutex_try_lock_alternate(&JPEG_FB()->lock, MUTEX_TID_IDE)) {
|
if (mutex_try_lock_alternate(&JPEG_FB()->lock, MUTEX_TID_IDE)) {
|
||||||
// If header size == 0 frame is not ready
|
// If header size < 0 frame is not ready
|
||||||
if (JPEG_FB()->size == 0) {
|
if (JPEG_FB()->size < 0) {
|
||||||
// unlock FB
|
// unlock FB
|
||||||
mutex_unlock(&JPEG_FB()->lock, MUTEX_TID_IDE);
|
mutex_unlock(&JPEG_FB()->lock, MUTEX_TID_IDE);
|
||||||
} else {
|
} else {
|
||||||
@ -170,7 +171,7 @@ void usbdbg_data_in(uint32_t size, usbdbg_write_callback_t write_callback) {
|
|||||||
xfer_offs += size;
|
xfer_offs += size;
|
||||||
if (xfer_offs == xfer_size) {
|
if (xfer_offs == xfer_size) {
|
||||||
cmd = USBDBG_NONE;
|
cmd = USBDBG_NONE;
|
||||||
JPEG_FB()->w = 0; JPEG_FB()->h = 0; JPEG_FB()->size = 0;
|
JPEG_FB()->w = 0; JPEG_FB()->h = 0; JPEG_FB()->size = -1;
|
||||||
mutex_unlock(&JPEG_FB()->lock, MUTEX_TID_IDE);
|
mutex_unlock(&JPEG_FB()->lock, MUTEX_TID_IDE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -203,6 +204,7 @@ void usbdbg_data_in(uint32_t size, usbdbg_write_callback_t write_callback) {
|
|||||||
|
|
||||||
case USBDBG_GET_STATE: {
|
case USBDBG_GET_STATE: {
|
||||||
uint32_t buffer[16] = { 0 };
|
uint32_t buffer[16] = { 0 };
|
||||||
|
buffer[3] = -1; // size < 0
|
||||||
|
|
||||||
// Set script running flag
|
// Set script running flag
|
||||||
if (script_running) {
|
if (script_running) {
|
||||||
@ -215,10 +217,10 @@ void usbdbg_data_in(uint32_t size, usbdbg_write_callback_t write_callback) {
|
|||||||
buffer[0] |= USBDBG_STATE_FLAGS_TEXT;
|
buffer[0] |= USBDBG_STATE_FLAGS_TEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to lock FB. If header size == 0 frame is not ready
|
// Try to lock FB. If header size < 0 frame is not ready
|
||||||
if (mutex_try_lock_alternate(&JPEG_FB()->lock, MUTEX_TID_IDE)) {
|
if (mutex_try_lock_alternate(&JPEG_FB()->lock, MUTEX_TID_IDE)) {
|
||||||
// If header size == 0 frame is not ready
|
// If header size < 0 frame is not ready
|
||||||
if (JPEG_FB()->size == 0) {
|
if (JPEG_FB()->size < 0) {
|
||||||
// unlock FB
|
// unlock FB
|
||||||
mutex_unlock(&JPEG_FB()->lock, MUTEX_TID_IDE);
|
mutex_unlock(&JPEG_FB()->lock, MUTEX_TID_IDE);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -86,6 +86,9 @@ void framebuffer_init0() {
|
|||||||
// Enable streaming.
|
// Enable streaming.
|
||||||
MAIN_FB()->streaming_enabled = true; // controlled by the OpenMV Cam.
|
MAIN_FB()->streaming_enabled = true; // controlled by the OpenMV Cam.
|
||||||
|
|
||||||
|
// Set invalid size.
|
||||||
|
JPEG_FB()->size = -1;
|
||||||
|
|
||||||
// Set default quality
|
// Set default quality
|
||||||
JPEG_FB()->quality = ((OMV_JPEG_QUALITY_HIGH - OMV_JPEG_QUALITY_LOW) / 2) + OMV_JPEG_QUALITY_LOW;
|
JPEG_FB()->quality = ((OMV_JPEG_QUALITY_HIGH - OMV_JPEG_QUALITY_LOW) / 2) + OMV_JPEG_QUALITY_LOW;
|
||||||
|
|
||||||
@ -117,7 +120,7 @@ static void jpegbuffer_init_from_image(image_t *img) {
|
|||||||
if (img == NULL) {
|
if (img == NULL) {
|
||||||
jpeg_framebuffer->w = 0;
|
jpeg_framebuffer->w = 0;
|
||||||
jpeg_framebuffer->h = 0;
|
jpeg_framebuffer->h = 0;
|
||||||
jpeg_framebuffer->size = 0;
|
jpeg_framebuffer->size = -1;
|
||||||
} else {
|
} else {
|
||||||
jpeg_framebuffer->w = img->w;
|
jpeg_framebuffer->w = img->w;
|
||||||
jpeg_framebuffer->h = img->h;
|
jpeg_framebuffer->h = img->h;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user