From 9bc2d9b95e22fd23acc55cf090ddd1f99a0c02b0 Mon Sep 17 00:00:00 2001 From: "M. Liebmann" Date: Wed, 22 Mar 2017 01:20:58 +0100 Subject: [PATCH] hd[1|2]/libcoolstream: Update headers for new libcoolstream functions libcoolstream-mt.so version 3.2.0 required Functions: - updateOsdScreenInfo() - GetVideoSystem() - GetVideoSystemFormatName() - fbCopy() - fbFill() - cs_set_extra_debug() --- .../coolstream/hd1/libcoolstream/cs_api.h | 3 ++ .../coolstream/hd1/libcoolstream/helpers_cs.h | 16 ++++++++++ .../coolstream/hd1/libcoolstream/video_cs.h | 29 +++++++++++++++++++ .../coolstream/hd2/libcoolstream/helpers_cs.h | 16 ++++++++++ .../coolstream/hd2/libcoolstream/video_cs.h | 14 +++++++++ 5 files changed, 78 insertions(+) create mode 100644 lib/hardware/coolstream/hd1/libcoolstream/helpers_cs.h create mode 100644 lib/hardware/coolstream/hd2/libcoolstream/helpers_cs.h diff --git a/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h b/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h index 1051c99c0..9a4e77259 100644 --- a/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h +++ b/lib/hardware/coolstream/hd1/libcoolstream/cs_api.h @@ -47,6 +47,9 @@ enum CS_LOG_MODULE { void cs_api_init(void); void cs_api_exit(void); +/* Dummy for compatibility with HD2 */ +#define cs_new_auto_videosystem(); + // Memory helpers void *cs_malloc_uncached(size_t size); void cs_free_uncached(void *ptr); diff --git a/lib/hardware/coolstream/hd1/libcoolstream/helpers_cs.h b/lib/hardware/coolstream/hd1/libcoolstream/helpers_cs.h new file mode 100644 index 000000000..8e7ea0b93 --- /dev/null +++ b/lib/hardware/coolstream/hd1/libcoolstream/helpers_cs.h @@ -0,0 +1,16 @@ +#ifndef __HELPERS_CS_H__ +#define __HELPERS_CS_H__ + +enum { + CS_EXTRA_DEBUG_OFF = 0x00000000, + CS_EXTRA_DEBUG_VIDEO1 = 0x00000001, + CS_EXTRA_DEBUG_ALL = 0xFFFFFFFF +}; + +void cs_set_extra_debug(uint32_t mode); + +const char* __func_ext__f(const char* _func_, int _line_, const char* _file_, bool havePathFile); +#define __func_ext__ __func_ext__f(__PRETTY_FUNCTION__, __LINE__, NULL, true) +#define __func_ext_file__ __func_ext__f(__PRETTY_FUNCTION__, __LINE__, __path_file__, true) + +#endif // __HELPERS_CS_H__ diff --git a/lib/hardware/coolstream/hd1/libcoolstream/video_cs.h b/lib/hardware/coolstream/hd1/libcoolstream/video_cs.h index 47524c1b6..b29677e83 100644 --- a/lib/hardware/coolstream/hd1/libcoolstream/video_cs.h +++ b/lib/hardware/coolstream/hd1/libcoolstream/video_cs.h @@ -9,9 +9,11 @@ #ifndef __VIDEO_CS_H_ #define __VIDEO_CS_H_ +#include #include #include #include +#include #include "cs_types.h" @@ -123,6 +125,18 @@ typedef enum VIDEO_CONTROL_MAX = VIDEO_CONTROL_SHARPNESS } VIDEO_CONTROL; +typedef struct cs_vs_format_t +{ + char format[16]; +} cs_vs_format_struct_t; + +enum { + CS_FBCOPY_BB2FB = 0, + CS_FBCOPY_FB2FB = 1, + CS_FBCOPY_MEM2FB = 2, + CS_FBCOPY_FB2MEM = 3 +}; + class cVideo { private: CS_VIDEO_PDATA *privateData; @@ -155,6 +169,11 @@ private: vfd_icon mode_icon; unsigned int unit; cDemux *demux; + int current_video_system; + bool isReadScreeninfo; + fb_var_screeninfo varScreeninfo; + fb_fix_screeninfo fixScreeninfo; + // int SelectAutoFormat(); void ScalePic(); @@ -163,6 +182,9 @@ public: cVideo(int mode, void * hChannel, void * hBuffer, unsigned int Unit = 0); ~cVideo(void); + /* Important! + Call this function when osd resolution has been changed */ + void updateOsdScreenInfo(); void * GetDRM(void); void * GetTVEnc(); void * GetTVEncSD(); @@ -207,6 +229,11 @@ public: int64_t GetPTS(void); int Flush(void); + /* get video system infos */ + int GetVideoSystem(); + /* when system = -1 then use current video system */ + void GetVideoSystemFormatName(cs_vs_format_t* format, int system = -1); + /* set video_system */ int SetVideoSystem(int video_system, bool remember = true); int SetStreamType(VIDEO_FORMAT type); @@ -234,6 +261,8 @@ public: int StartVBI(unsigned short pid); int StopVBI(void); bool GetScreenImage(unsigned char * &data, int &xres, int &yres, bool get_video = true, bool get_osd = false, bool scale_to_video = false); + int fbCopy(uint32_t *mem_p, int width, int height, int dst_x, int dst_y, int src_x, int src_y, int mode); + int fbFill(int sx, int sy, int width, int height, fb_pixel_t col, int mode=0); void SetDemux(cDemux *Demux); }; diff --git a/lib/hardware/coolstream/hd2/libcoolstream/helpers_cs.h b/lib/hardware/coolstream/hd2/libcoolstream/helpers_cs.h new file mode 100644 index 000000000..8e7ea0b93 --- /dev/null +++ b/lib/hardware/coolstream/hd2/libcoolstream/helpers_cs.h @@ -0,0 +1,16 @@ +#ifndef __HELPERS_CS_H__ +#define __HELPERS_CS_H__ + +enum { + CS_EXTRA_DEBUG_OFF = 0x00000000, + CS_EXTRA_DEBUG_VIDEO1 = 0x00000001, + CS_EXTRA_DEBUG_ALL = 0xFFFFFFFF +}; + +void cs_set_extra_debug(uint32_t mode); + +const char* __func_ext__f(const char* _func_, int _line_, const char* _file_, bool havePathFile); +#define __func_ext__ __func_ext__f(__PRETTY_FUNCTION__, __LINE__, NULL, true) +#define __func_ext_file__ __func_ext__f(__PRETTY_FUNCTION__, __LINE__, __path_file__, true) + +#endif // __HELPERS_CS_H__ diff --git a/lib/hardware/coolstream/hd2/libcoolstream/video_cs.h b/lib/hardware/coolstream/hd2/libcoolstream/video_cs.h index 71f4e6db5..515d4ad3f 100644 --- a/lib/hardware/coolstream/hd2/libcoolstream/video_cs.h +++ b/lib/hardware/coolstream/hd2/libcoolstream/video_cs.h @@ -9,6 +9,7 @@ #ifndef __VIDEO_CS_H_ #define __VIDEO_CS_H_ +#include #include #include @@ -158,6 +159,13 @@ typedef struct cs_vs_format_t char formatSD[16]; } cs_vs_format_struct_t; +enum { + CS_FBCOPY_BB2FB = 0, + CS_FBCOPY_FB2FB = 1, + CS_FBCOPY_MEM2FB = 2, + CS_FBCOPY_FB2MEM = 3 +}; + class cDemux; class cAudio; @@ -206,6 +214,10 @@ public: cVideo(int mode, void * hChannel, void * hBuffer); ~cVideo(void); + /* Important! + Call this function when osd resolution has been changed */ + void updateOsdScreenInfo(); + void * GetVPP(void); void * GetTVEnc(); void * GetTVEncSD(); @@ -282,6 +294,8 @@ public: int StartVBI(unsigned short pid); int StopVBI(void); bool GetScreenImage(unsigned char * &data, int &xres, int &yres, bool get_video = true, bool get_osd = false, bool scale_to_video = false); + int fbCopy(uint32_t *mem_p, int width, int height, int dst_x, int dst_y, int src_x, int src_y, int mode); + int fbFill(int sx, int sy, int width, int height, fb_pixel_t col, int mode=0); void SetDemux(cDemux *Demux); static cVideo *GetDecoder(unsigned int Unit); bool SyncSTC(void);