summaryrefslogtreecommitdiff
path: root/examples/device/video_capture/src/main.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2023-03-17 23:53:38 +0700
committerhathach <[email protected]>2023-03-17 23:53:38 +0700
commitbdfcd50b1b601f85389a09cdaf183b2f27c1d470 (patch)
tree0ed9312b74a74c875fd17b86353ac02559ac7081 /examples/device/video_capture/src/main.c
parent73f22e31c7a31e9b974e27407b906bbc8cb05a7a (diff)
parent65ee11ff630169c01a33860fbf8507d2d8f29a71 (diff)
Merge branch 'master' into portability
Diffstat (limited to 'examples/device/video_capture/src/main.c')
-rw-r--r--examples/device/video_capture/src/main.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/examples/device/video_capture/src/main.c b/examples/device/video_capture/src/main.c
index 0f81c693a..5654e0b61 100644
--- a/examples/device/video_capture/src/main.c
+++ b/examples/device/video_capture/src/main.c
@@ -1,4 +1,4 @@
-/*
+/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Ha Thach (tinyusb.org)
@@ -110,6 +110,23 @@ static unsigned interval_ms = 1000 / FRAME_RATE;
/* YUY2 frame buffer */
#ifdef CFG_EXAMPLE_VIDEO_READONLY
#include "images.h"
+
+# if !defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPG)
+static struct {
+ uint32_t size;
+ uint8_t const *buffer;
+} const frames[] = {
+ {color_bar_0_jpg_len, color_bar_0_jpg},
+ {color_bar_1_jpg_len, color_bar_1_jpg},
+ {color_bar_2_jpg_len, color_bar_2_jpg},
+ {color_bar_3_jpg_len, color_bar_3_jpg},
+ {color_bar_4_jpg_len, color_bar_4_jpg},
+ {color_bar_5_jpg_len, color_bar_5_jpg},
+ {color_bar_6_jpg_len, color_bar_6_jpg},
+ {color_bar_7_jpg_len, color_bar_7_jpg},
+};
+# endif
+
#else
static uint8_t frame_buffer[FRAME_WIDTH * FRAME_HEIGHT * 16 / 8];
static void fill_color_bar(uint8_t *buffer, unsigned start_position)
@@ -166,8 +183,12 @@ void video_task(void)
already_sent = 1;
start_ms = board_millis();
#ifdef CFG_EXAMPLE_VIDEO_READONLY
- tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t) &frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
+# if defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPG)
+ tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t)&frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
FRAME_WIDTH * FRAME_HEIGHT * 16/8);
+# else
+ tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t)frames[frame_num % 8].buffer, frames[frame_num % 8].size);
+# endif
#else
fill_color_bar(frame_buffer, frame_num);
tud_video_n_frame_xfer(0, 0, (void*)frame_buffer, FRAME_WIDTH * FRAME_HEIGHT * 16/8);
@@ -180,8 +201,12 @@ void video_task(void)
start_ms += interval_ms;
#ifdef CFG_EXAMPLE_VIDEO_READONLY
- tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t) &frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
+# if defined(CFG_EXAMPLE_VIDEO_DISABLE_MJPG)
+ tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t)&frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
FRAME_WIDTH * FRAME_HEIGHT * 16/8);
+# else
+ tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t)frames[frame_num % 8].buffer, frames[frame_num % 8].size);
+# endif
#else
fill_color_bar(frame_buffer, frame_num);
tud_video_n_frame_xfer(0, 0, (void*)frame_buffer, FRAME_WIDTH * FRAME_HEIGHT * 16/8);