diff --git a/libtriple/video_td.cpp b/libtriple/video_td.cpp index 079bfa4..f3dfaa7 100644 --- a/libtriple/video_td.cpp +++ b/libtriple/video_td.cpp @@ -942,6 +942,12 @@ bool cVideo::GetScreenImage(unsigned char * &video, int &xres, int &yres, bool g } uint16_t w = *(uint16_t *)(map + WIDTH_OFF); uint16_t h = *(uint16_t *)(map + HEIGHT_OFF); + if (w > 720 || h > 576) { + lt_info("%s: unhandled resolution %dx%d, is the tuner locked?\n", __func__, w, h); + munmap(map, VIDEO_SIZE); + close(mfd); + return false; + } uint8_t *luma, *chroma; int needmem = w * h * 5 / 4; /* chroma is 1/4 in size of luma */ int lumasize = w * h; diff --git a/libtriple/video_td.h b/libtriple/video_td.h index 8f4893b..f73bb04 100644 --- a/libtriple/video_td.h +++ b/libtriple/video_td.h @@ -6,6 +6,8 @@ //#define video_displayformat_t vidDispMode_t #include "../common/cs_types.h" +#define STB_HAL_VIDEO_HAS_GETSCREENIMAGE 1 + typedef enum { ANALOG_SD_RGB_SCART = 0x00, ANALOG_SD_YPRPB_SCART,