@@ -38,7 +38,7 @@ static const char *TAG = "OSD";
3838
3939#define APP_DEFAULT_WIDTH 256
4040#define APP_DEFAULT_HEIGHT 240
41- #define APP_DEFAULT_ZOOM 256
41+ #define APP_DEFAULT_SCALE 2
4242
4343typedef struct {
4444 int16_t x ; /* Mouse X coordinate */
@@ -118,8 +118,6 @@ static uint16 colorPalette[256];
118118static bitmap_t * vidBitmap = NULL ;
119119static lv_obj_t * lvgl_video_canvas = NULL ;
120120static uint8_t * vid_buffer = NULL ;
121- static uint8_t * vid_buffer_tmp = NULL ;
122- static lv_img_dsc_t vid_tmp_img ;
123121
124122/* USB variables */
125123static QueueHandle_t hid_queue = NULL ;
@@ -148,25 +146,17 @@ void osd_setsound(void (*playfunc)(void *buffer, int size))
148146
149147int osd_init (void )
150148{
151- uint32_t buf_size = APP_DEFAULT_WIDTH * APP_DEFAULT_HEIGHT * sizeof (uint16_t );
149+ uint32_t buf_size = 4 * APP_DEFAULT_WIDTH * APP_DEFAULT_HEIGHT * sizeof (uint16_t );
152150 vid_buffer = heap_caps_malloc (buf_size , MALLOC_CAP_DEFAULT );
153151 assert (vid_buffer );
154152 memset (vid_buffer , 0x00 , buf_size );
155- //vid_buffer_tmp = heap_caps_malloc(buf_size, MALLOC_CAP_DEFAULT);
156- //assert(vid_buffer_tmp);
157- //memset(vid_buffer_tmp, 0x00, buf_size);
158-
159- /*vid_tmp_img.data = (void *)vid_buffer_tmp;
160- vid_tmp_img.header.cf = LV_IMG_CF_TRUE_COLOR;
161- vid_tmp_img.header.w = APP_DEFAULT_WIDTH;
162- vid_tmp_img.header.h = APP_DEFAULT_HEIGHT;*/
163153
164154 app_hid_init ();
165155
166156 bsp_display_lock (0 );
167157 lv_obj_set_style_bg_color (lv_scr_act (), lv_color_black (), 0 );
168158 lvgl_video_canvas = lv_canvas_create (lv_scr_act ());
169- lv_canvas_set_buffer (lvgl_video_canvas , vid_buffer , APP_DEFAULT_WIDTH , APP_DEFAULT_HEIGHT , LV_IMG_CF_TRUE_COLOR );
159+ lv_canvas_set_buffer (lvgl_video_canvas , vid_buffer , APP_DEFAULT_SCALE * APP_DEFAULT_WIDTH , APP_DEFAULT_SCALE * APP_DEFAULT_HEIGHT , LV_IMG_CF_TRUE_COLOR );
170160 lv_obj_center (lvgl_video_canvas );
171161 bsp_display_unlock ();
172162
@@ -375,18 +365,24 @@ static void app_osd_video_custom_blit(bitmap_t *primary, int num_dirties, rect_t
375365{
376366 const uint8_t * data = primary -> data ;
377367
378- for (int x = 0 ; x < APP_DEFAULT_WIDTH ; x ++ )
368+ bsp_display_lock (0 );
369+
370+ for (int y = 0 ; y < APP_DEFAULT_HEIGHT ; y ++ )
379371 {
380- for (int y = 0 ; y < APP_DEFAULT_HEIGHT ; y ++ )
372+ for (int x = 0 ; x < APP_DEFAULT_WIDTH ; x ++ )
381373 {
382- vid_buffer [(x * APP_DEFAULT_HEIGHT * 2 ) + (y * 2 )] = HIBYTE (colorPalette [data [0 ]]);
383- vid_buffer [(x * APP_DEFAULT_HEIGHT * 2 ) + (y * 2 )+ 1 ] = LOBYTE (colorPalette [data [0 ]]);
374+ for (int z = 0 ; z < APP_DEFAULT_SCALE ; z ++ )
375+ {
376+ vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH )] = HIBYTE (colorPalette [data [0 ]]);
377+ vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + 1 ] = LOBYTE (colorPalette [data [0 ]]);
378+
379+ vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + 2 ] = HIBYTE (colorPalette [data [0 ]]);
380+ vid_buffer [((x )* sizeof (uint16_t )* APP_DEFAULT_SCALE ) + (((APP_DEFAULT_SCALE * y )+ z )* APP_DEFAULT_SCALE * sizeof (uint16_t )* APP_DEFAULT_WIDTH ) + 3 ] = LOBYTE (colorPalette [data [0 ]]);
381+ }
384382 data ++ ;
385383 }
386384 }
387-
388- bsp_display_lock (0 );
389- //lv_canvas_transform(lvgl_video_canvas, &vid_tmp_img, 0, APP_DEFAULT_ZOOM, 0, 0, 0, 0, true);
385+
390386 lv_obj_invalidate (lvgl_video_canvas );
391387 bsp_display_unlock ();
392388}
0 commit comments