summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--Android.mk14
-rw-r--r--screen_source/Android.mk31
-rw-r--r--screen_source/aml_screen.cpp296
-rw-r--r--screen_source/v4l2_vdin.cpp676
-rw-r--r--screen_source/v4l2_vdin.h144
-rw-r--r--tv_callback.h18
-rw-r--r--tv_input.cpp263
-rw-r--r--tvapi/android/Android.mk2
-rw-r--r--tvapi/android/include/ITv.h98
-rw-r--r--tvapi/android/include/ITvClient.h56
-rw-r--r--tvapi/android/include/ITvService.h66
-rw-r--r--tvapi/android/include/Tv.h158
-rw-r--r--tvapi/android/include/tvcmd.h1212
-rw-r--r--tvapi/android/jni/Android.mk135
-rw-r--r--tvapi/android/jni/cfbc_jni.cpp18
-rw-r--r--tvapi/android/jni/cfbc_test.cpp86
-rw-r--r--tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp (renamed from tvapi/android/jni/android_amlogic_tv.cpp)929
-rw-r--r--tvapi/android/libtvbinder/Android.mk48
-rw-r--r--tvapi/android/libtvbinder/ITv.cpp292
-rw-r--r--tvapi/android/libtvbinder/ITvClient.cpp116
-rw-r--r--tvapi/android/libtvbinder/ITvService.cpp100
-rw-r--r--tvapi/android/libtvbinder/Tv.cpp378
-rw-r--r--tvapi/android/tv/Android.mk23
-rw-r--r--tvapi/android/tv/CTv.cpp104
-rw-r--r--tvapi/android/tv/CTv.h54
-rw-r--r--tvapi/android/tvserver/Android.mk164
-rw-r--r--tvapi/android/tvserver/TvService.cpp8911
-rw-r--r--tvapi/android/tvserver/TvService.h170
-rw-r--r--tvapi/android/tvserver/main.cpp46
-rw-r--r--tvapi/android/tvserver/tv_callback.h18
-rw-r--r--[-rwxr-xr-x]tvapi/build/include/.gitignore0
-rw-r--r--tvapi/build/include/xxxconfig.h1
-rw-r--r--tvapi/docs/tv.uml12156
-rw-r--r--tvapi/libtv/Android.mk12
-rw-r--r--tvapi/libtv/audio/CAudioCustomerCtrl.cpp126
-rw-r--r--tvapi/libtv/audio/CAudioCustomerCtrl.h31
-rw-r--r--tvapi/libtv/audio/CTvAudio.cpp30
-rw-r--r--tvapi/libtv/audio/CTvAudio.h76
-rw-r--r--tvapi/libtv/audio/audio_alsa.cpp2073
-rw-r--r--tvapi/libtv/audio/audio_alsa.h257
-rw-r--r--tvapi/libtv/audio/audio_android.cpp1035
-rw-r--r--tvapi/libtv/audio/audio_android.h78
-rw-r--r--tvapi/libtv/audio/audio_android_effect.cpp591
-rw-r--r--tvapi/libtv/audio/audio_android_effect.h65
-rw-r--r--tvapi/libtv/audio/audio_api.cpp2470
-rw-r--r--tvapi/libtv/audio/audio_api.h323
-rw-r--r--tvapi/libtv/audio/audio_effect.cpp356
-rw-r--r--tvapi/libtv/audio/audio_effect.h58
-rw-r--r--tvapi/libtv/include/amstream.h526
-rw-r--r--tvapi/libtv/include/amvecm.h136
-rw-r--r--tvapi/libtv/include/cm.h308
-rw-r--r--tvapi/libtv/include/hdmirx_cec.h316
-rw-r--r--tvapi/libtv/include/ve.h461
-rw-r--r--tvapi/libtv/tv/AutoBackLight.cpp425
-rw-r--r--tvapi/libtv/tv/CAutoPQparam.cpp150
-rw-r--r--tvapi/libtv/tv/CAutoPQparam.h41
-rw-r--r--tvapi/libtv/tv/CAv.cpp116
-rw-r--r--tvapi/libtv/tv/CAv.h24
-rw-r--r--tvapi/libtv/tv/CFbcCommunication.cpp443
-rw-r--r--tvapi/libtv/tv/CFbcCommunication.h25
-rw-r--r--tvapi/libtv/tv/CFrontEnd.cpp198
-rw-r--r--tvapi/libtv/tv/CFrontEnd.h19
-rw-r--r--tvapi/libtv/tv/CTv.cpp13003
-rw-r--r--tvapi/libtv/tv/CTv.h1453
-rw-r--r--tvapi/libtv/tv/CTvBooking.cpp324
-rw-r--r--tvapi/libtv/tv/CTvBooking.h166
-rw-r--r--tvapi/libtv/tv/CTvEpg.cpp24
-rw-r--r--tvapi/libtv/tv/CTvEv.h12
-rw-r--r--tvapi/libtv/tv/CTvLog.h8
-rw-r--r--tvapi/libtv/tv/CTvRecord.cpp552
-rw-r--r--tvapi/libtv/tv/CTvRecord.h92
-rw-r--r--tvapi/libtv/tv/CTvSatellite.h42
-rw-r--r--tvapi/libtv/tv/CTvScanner.cpp335
-rw-r--r--tvapi/libtv/tv/CTvScanner.h26
-rw-r--r--tvapi/libtv/tv/CTvScreenCapture.cpp1279
-rw-r--r--tvapi/libtv/tv/CTvScreenCapture.h351
-rw-r--r--tvapi/libtv/tv/CTvSubtitle.cpp361
-rw-r--r--tvapi/libtv/tv/CTvSubtitle.h484
-rw-r--r--tvapi/libtv/tv/CTvVchipCheck.cpp6
-rw-r--r--tvapi/libtv/tv/CUpgradeFBC.cpp4
-rw-r--r--tvapi/libtv/tv/CUpgradeFBC.h282
-rw-r--r--tvapi/libtv/tv/ScreenCatch.cpp379
-rw-r--r--tvapi/libtv/tvconfig/CIniFile.cpp706
-rw-r--r--tvapi/libtv/tvconfig/tvconfig.conf58
-rw-r--r--tvapi/libtv/tvconfig/tvconfig.cpp106
-rw-r--r--tvapi/libtv/tvconfig/tvconfig.h40
-rw-r--r--tvapi/libtv/tvdb/CTvChannel.cpp694
-rw-r--r--tvapi/libtv/tvdb/CTvChannel.h574
-rw-r--r--tvapi/libtv/tvdb/CTvDatabase.cpp25
-rw-r--r--tvapi/libtv/tvdb/CTvDatabase.h188
-rw-r--r--tvapi/libtv/tvdb/CTvDimension.cpp86
-rw-r--r--tvapi/libtv/tvdb/CTvDimension.h194
-rw-r--r--tvapi/libtv/tvdb/CTvEvent.cpp483
-rw-r--r--tvapi/libtv/tvdb/CTvEvent.h170
-rw-r--r--tvapi/libtv/tvdb/CTvGroup.cpp88
-rw-r--r--tvapi/libtv/tvdb/CTvGroup.h60
-rw-r--r--tvapi/libtv/tvdb/CTvProgram.cpp1806
-rw-r--r--tvapi/libtv/tvdb/CTvProgram.h1066
-rw-r--r--tvapi/libtv/tvdb/CTvRegion.cpp366
-rw-r--r--tvapi/libtv/tvdb/CTvRegion.h84
-rw-r--r--tvapi/libtv/tvin/CHDMIRxCEC.cpp38
-rw-r--r--tvapi/libtv/tvin/CSourceConnectDetect.cpp478
-rw-r--r--tvapi/libtv/tvin/CSourceConnectDetect.h73
-rw-r--r--tvapi/libtv/tvin/CTvin.cpp203
-rw-r--r--tvapi/libtv/tvin/CTvin.h191
-rw-r--r--tvapi/libtv/tvsetting/CBlobDevice.cpp54
-rw-r--r--tvapi/libtv/tvsetting/CBlobDevice.h100
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceE2prom.cpp403
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceE2prom.h152
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceFile.cpp160
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceFile.h52
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceRam.cpp258
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceRam.h74
-rw-r--r--tvapi/libtv/tvsetting/CTvSetting.cpp4658
-rw-r--r--tvapi/libtv/tvsetting/CTvSetting.h30
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingCfg.h782
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingDeviceFactory.cpp10
-rw-r--r--tvapi/libtv/tvsetting/TvKeyData.cpp2726
-rw-r--r--tvapi/libtv/tvsetting/TvKeyData.h64
-rw-r--r--tvapi/libtv/tvsetting/audio_cfg.cpp2575
-rw-r--r--tvapi/libtv/tvsetting/audio_cfg.h239
-rw-r--r--tvapi/libtv/tvutils/CCondition.h2
-rw-r--r--tvapi/libtv/tvutils/CFile.cpp65
-rw-r--r--tvapi/libtv/tvutils/CFile.h3
-rw-r--r--tvapi/libtv/tvutils/CHdmiCecCmd.cpp2
-rw-r--r--tvapi/libtv/tvutils/CMsgQueue.cpp31
-rw-r--r--tvapi/libtv/tvutils/CMsgQueue.h3
-rw-r--r--tvapi/libtv/tvutils/CSerialCommunication.h96
-rw-r--r--tvapi/libtv/tvutils/CSerialPort.cpp18
-rw-r--r--tvapi/libtv/tvutils/CSqlite.cpp8
-rw-r--r--tvapi/libtv/tvutils/CSqlite.h12
-rw-r--r--tvapi/libtv/tvutils/CThread.cpp2
-rw-r--r--tvapi/libtv/tvutils/CTvInput.cpp25
-rw-r--r--tvapi/libtv/tvutils/CTvInput.h4
-rw-r--r--tvapi/libtv/tvutils/serial_base.h34
-rw-r--r--tvapi/libtv/tvutils/serial_operate.cpp66
-rw-r--r--tvapi/libtv/tvutils/serial_operate.h70
-rw-r--r--tvapi/libtv/tvutils/tvutils.cpp3931
-rw-r--r--tvapi/libtv/tvutils/tvutils.h222
-rw-r--r--tvapi/libtv/tvutils/zepoll.cpp2
-rw-r--r--tvapi/libtv/version/version.cpp188
-rw-r--r--tvapi/libtv/version/version.h22
-rw-r--r--tvapi/libtv/vpp/CPQdb.cpp3509
-rw-r--r--tvapi/libtv/vpp/CPQdb.h340
-rw-r--r--tvapi/libtv/vpp/CVpp.cpp5602
-rw-r--r--tvapi/libtv/vpp/CVpp.h230
-rw-r--r--tvapi/tvtests/Android.mk98
-rw-r--r--tvapi/tvtests/android_tvtest.cpp2
-rw-r--r--tvapi/tvtests/comm_test.cpp4
-rw-r--r--tvapi/tvtests/ssm_test.cpp420
-rw-r--r--tvapi/tvtests/tvconfig_test.cpp854
151 files changed, 45277 insertions, 47437 deletions
diff --git a/tvapi/libtv/tv/CTvScreenCapture.h b/tvapi/libtv/tv/CTvScreenCapture.h
index 09a4bbb..194fa44 100644
--- a/tvapi/libtv/tv/CTvScreenCapture.h
+++ b/tvapi/libtv/tv/CTvScreenCapture.h
@@ -1,174 +1,177 @@
-#ifndef CTVSCREENCAPTURE_H__
-#define CTVSCREENCAPTURE_H__
-
-#define VIDEOCAPDEV "/dev/amvideocap0"
-
-#define AMVIDEOCAP_IOC_MAGIC 'V'
-#include <linux/videodev2.h>
-#include <binder/MemoryHeapBase.h>
-#include <binder/MemoryBase.h>
-#include "CTvLog.h"
-#include "CTvEv.h"
-
-#define CAP_FLAG_AT_CURRENT 0
-#define CAP_FLAG_AT_TIME_WINDOW 1
-#define CAP_FLAG_AT_END 2
-
-
-#define FALSE 0
-#define SUCCEED 0
-#define FAILED -1
-
-using namespace android;
-
-struct buffer {
- void *start;
- size_t length;
-};
-
-
-struct camera {
- char *device_name;
- int fd;
- int width;
- int height;
- int display_depth;
- int image_size;
- int frame_number; //fps
- int bitrate ; // bitrate
- struct v4l2_capability v4l2_cap;
- struct v4l2_cropcap v4l2_cropcap;
- struct v4l2_format v4l2_fmt;
- struct v4l2_crop crop;
- struct buffer *buffers;
-};
-
-/*
-format see linux/ge2d/ge2d.h
-like:
-GE2D_FORMAT_S24_RGB
-*/
-#define ENDIAN_SHIFT 24
-#define LITTLE_ENDIAN (1 << ENDIAN_SHIFT)
-#define FMT_S24_RGB (LITTLE_ENDIAN|0x00200) /* 10_00_0_00_0_00 */
-#define FMT_S16_RGB (LITTLE_ENDIAN|0x00100) /* 01_00_0_00_0_00 */
-#define FMT_S32_RGBA (LITTLE_ENDIAN|0x00300) /* 11_00_0_00_0_00 */
-
-#define COLOR_MAP_SHIFT 20
-#define COLOR_MAP_MASK (0xf << COLOR_MAP_SHIFT)
-/* 16 bit */
-#define COLOR_MAP_RGB565 (5 << COLOR_MAP_SHIFT)
-/* 24 bit */
-#define COLOR_MAP_RGB888 (0 << COLOR_MAP_SHIFT)
-#define COLOR_MAP_BGR888 (5 << COLOR_MAP_SHIFT)
-/* 32 bit */
-#define COLOR_MAP_RGBA8888 (0 << COLOR_MAP_SHIFT)
-#define COLOR_MAP_ARGB8888 (1 << COLOR_MAP_SHIFT)
-#define COLOR_MAP_ABGR8888 (2 << COLOR_MAP_SHIFT)
-#define COLOR_MAP_BGRA8888 (3 << COLOR_MAP_SHIFT)
-
-/*16 bit*/
-#define FORMAT_S16_RGB_565 (FMT_S16_RGB | COLOR_MAP_RGB565)
-/*24 bit*/
-#define FORMAT_S24_BGR (FMT_S24_RGB | COLOR_MAP_BGR888)
-#define FORMAT_S24_RGB (FMT_S24_RGB | COLOR_MAP_RGB888)
-/*32 bit*/
-#define FORMAT_S32_ARGB (FMT_S32_RGBA | COLOR_MAP_ARGB8888)
-#define FORMAT_S32_ABGR (FMT_S32_RGBA | COLOR_MAP_ABGR8888)
-#define FORMAT_S32_BGRA (FMT_S32_RGBA | COLOR_MAP_BGRA8888)
-#define FORMAT_S32_RGBA (FMT_S32_RGBA | COLOR_MAP_RGBA8888)
-
-#define AMVIDEOCAP_IOW_SET_WANTFRAME_FORMAT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x01, int)
-#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int)
-#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int)
-#define AMVIDEOCAP_IOW_SET_WANTFRAME_TIMESTAMP_MS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x04, u64)
-#define AMVIDEOCAP_IOW_SET_WANTFRAME_WAIT_MAX_MS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x05, u64)
-#define AMVIDEOCAP_IOW_SET_WANTFRAME_AT_FLAGS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x06, int)
-
-
-#define AMVIDEOCAP_IOR_GET_FRAME_FORMAT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x10, int)
-#define AMVIDEOCAP_IOR_GET_FRAME_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x11, int)
-#define AMVIDEOCAP_IOR_GET_FRAME_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x12, int)
-#define AMVIDEOCAP_IOR_GET_FRAME_TIMESTAMP_MS _IOR(AMVIDEOCAP_IOC_MAGIC, 0x13, int)
-
-
-#define AMVIDEOCAP_IOR_GET_SRCFRAME_FORMAT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x20, int)
-#define AMVIDEOCAP_IOR_GET_SRCFRAME_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x21, int)
-#define AMVIDEOCAP_IOR_GET_SRCFRAME_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x22, int)
-
-
-#define AMVIDEOCAP_IOR_GET_STATE _IOR(AMVIDEOCAP_IOC_MAGIC, 0x31, int)
-#define AMVIDEOCAP_IOW_SET_START_CAPTURE _IOW(AMVIDEOCAP_IOC_MAGIC, 0x32, int)
-#define AMVIDEOCAP_IOW_SET_CANCEL_CAPTURE _IOW(AMVIDEOCAP_IOC_MAGIC, 0x33, int)
-
-#define AMVIDEOCAP_IOR_SET_SRC_X _IOR(AMVIDEOCAP_IOC_MAGIC, 0x40, int)
-#define AMVIDEOCAP_IOR_SET_SRC_Y _IOR(AMVIDEOCAP_IOC_MAGIC, 0x41, int)
-#define AMVIDEOCAP_IOR_SET_SRC_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x42, int)
-#define AMVIDEOCAP_IOR_SET_SRC_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x43, int)
-
-enum amvideocap_state {
- AMVIDEOCAP_STATE_INIT = 0,
- AMVIDEOCAP_STATE_ON_CAPTURE = 200,
- AMVIDEOCAP_STATE_FINISHED_CAPTURE = 300,
- AMVIDEOCAP_STATE_ERROR = 0xffff,
-};
-
-class CTvScreenCapture {
-public:
- CTvScreenCapture();
- ~CTvScreenCapture();
-
- int InitVCap(sp<IMemory> Mem);
- int SetVideoParameter(int width, int height, int frame);
- int VideoStart();
- int GetVideoData( int *length);
- int VideoStop();
- int DeinitVideoCap();
- class CapEvent : public CTvEv {
- public:
- CapEvent(): CTvEv(CTvEv::TV_EVENT_HDMI_IN_CAP) {};
- ~CapEvent() {};
-
- int mFrameNum;
- int mFrameWide;
- int mFrameHeight;
- int mFrameSize;
- };
-
- class TvIObserver {
- public:
- TvIObserver() {};
- virtual ~TvIObserver() {};
- virtual void onTvEvent ( const CTvEv &ev ) = 0;
- };
-
- int setObserver(TvIObserver *ob)
- {
- mpObserver = ob;
- return 0;
- }
-
-private:
-
- int xioctl(int fd, int request, void *arg);
- int OpenCamera(struct camera *pCameraDev);
- int InitMmap(struct camera *cam) ;
- //int SetFrameRate( struct camera *cam);
- int InitCamera(struct camera *cam) ;
- int StartCapturing(struct camera *cam);
- int StopCapturing(struct camera *cam);
- int UninitCamera(struct camera *cam);
- int CloseCamera(struct camera *cam);
- void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb);
- void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len);
-private:
- sp<IMemory> m_pMem;
- camera m_capV4l2Cam;
- unsigned int m_capNumBuffers;
-
- char *m_pData;
- TvIObserver *mpObserver;
- CapEvent mCapEvt;
-};
-#endif
-
+#ifndef CTVSCREENCAPTURE_H__
+#define CTVSCREENCAPTURE_H__
+
+#define VIDEOCAPDEV "/dev/amvideocap0"
+
+#define AMVIDEOCAP_IOC_MAGIC 'V'
+#include <linux/videodev2.h>
+#include <binder/MemoryHeapBase.h>
+#include <binder/MemoryBase.h>
+#include "CTvLog.h"
+#include "CTvEv.h"
+
+#define CAP_FLAG_AT_CURRENT 0
+#define CAP_FLAG_AT_TIME_WINDOW 1
+#define CAP_FLAG_AT_END 2
+
+
+#define FALSE 0
+#define SUCCEED 0
+#define FAILED -1
+
+using namespace android;
+
+struct buffer {
+ void *start;
+ size_t length;
+};
+
+
+struct camera {
+ char *device_name;
+ int fd;
+ int width;
+ int height;
+ int display_depth;
+ int image_size;
+ int frame_number; //fps
+ int bitrate ; // bitrate
+ struct v4l2_capability v4l2_cap;
+ struct v4l2_cropcap v4l2_cropcap;
+ struct v4l2_format v4l2_fmt;
+ struct v4l2_crop crop;
+ struct buffer *buffers;
+};
+
+/*
+format see linux/ge2d/ge2d.h
+like:
+GE2D_FORMAT_S24_RGB
+*/
+#define ENDIAN_SHIFT 24
+#define LITTLE_ENDIAN (1 << ENDIAN_SHIFT)
+#define FMT_S24_RGB (LITTLE_ENDIAN|0x00200) /* 10_00_0_00_0_00 */
+#define FMT_S16_RGB (LITTLE_ENDIAN|0x00100) /* 01_00_0_00_0_00 */
+#define FMT_S32_RGBA (LITTLE_ENDIAN|0x00300) /* 11_00_0_00_0_00 */
+
+#define COLOR_MAP_SHIFT 20
+#define COLOR_MAP_MASK (0xf << COLOR_MAP_SHIFT)
+/* 16 bit */
+#define COLOR_MAP_RGB565 (5 << COLOR_MAP_SHIFT)
+/* 24 bit */
+#define COLOR_MAP_RGB888 (0 << COLOR_MAP_SHIFT)
+#define COLOR_MAP_BGR888 (5 << COLOR_MAP_SHIFT)
+/* 32 bit */
+#define COLOR_MAP_RGBA8888 (0 << COLOR_MAP_SHIFT)
+#define COLOR_MAP_ARGB8888 (1 << COLOR_MAP_SHIFT)
+#define COLOR_MAP_ABGR8888 (2 << COLOR_MAP_SHIFT)
+#define COLOR_MAP_BGRA8888 (3 << COLOR_MAP_SHIFT)
+
+/*16 bit*/
+#define FORMAT_S16_RGB_565 (FMT_S16_RGB | COLOR_MAP_RGB565)
+/*24 bit*/
+#define FORMAT_S24_BGR (FMT_S24_RGB | COLOR_MAP_BGR888)
+#define FORMAT_S24_RGB (FMT_S24_RGB | COLOR_MAP_RGB888)
+/*32 bit*/
+#define FORMAT_S32_ARGB (FMT_S32_RGBA | COLOR_MAP_ARGB8888)
+#define FORMAT_S32_ABGR (FMT_S32_RGBA | COLOR_MAP_ABGR8888)
+#define FORMAT_S32_BGRA (FMT_S32_RGBA | COLOR_MAP_BGRA8888)
+#define FORMAT_S32_RGBA (FMT_S32_RGBA | COLOR_MAP_RGBA8888)
+
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_FORMAT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x01, int)
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int)
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int)
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_TIMESTAMP_MS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x04, u64)
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_WAIT_MAX_MS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x05, u64)
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_AT_FLAGS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x06, int)
+
+
+#define AMVIDEOCAP_IOR_GET_FRAME_FORMAT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x10, int)
+#define AMVIDEOCAP_IOR_GET_FRAME_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x11, int)
+#define AMVIDEOCAP_IOR_GET_FRAME_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x12, int)
+#define AMVIDEOCAP_IOR_GET_FRAME_TIMESTAMP_MS _IOR(AMVIDEOCAP_IOC_MAGIC, 0x13, int)
+
+
+#define AMVIDEOCAP_IOR_GET_SRCFRAME_FORMAT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x20, int)
+#define AMVIDEOCAP_IOR_GET_SRCFRAME_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x21, int)
+#define AMVIDEOCAP_IOR_GET_SRCFRAME_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x22, int)
+
+
+#define AMVIDEOCAP_IOR_GET_STATE _IOR(AMVIDEOCAP_IOC_MAGIC, 0x31, int)
+#define AMVIDEOCAP_IOW_SET_START_CAPTURE _IOW(AMVIDEOCAP_IOC_MAGIC, 0x32, int)
+#define AMVIDEOCAP_IOW_SET_CANCEL_CAPTURE _IOW(AMVIDEOCAP_IOC_MAGIC, 0x33, int)
+
+#define AMVIDEOCAP_IOR_SET_SRC_X _IOR(AMVIDEOCAP_IOC_MAGIC, 0x40, int)
+#define AMVIDEOCAP_IOR_SET_SRC_Y _IOR(AMVIDEOCAP_IOC_MAGIC, 0x41, int)
+#define AMVIDEOCAP_IOR_SET_SRC_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x42, int)
+#define AMVIDEOCAP_IOR_SET_SRC_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x43, int)
+
+enum amvideocap_state {
+ AMVIDEOCAP_STATE_INIT = 0,
+ AMVIDEOCAP_STATE_ON_CAPTURE = 200,
+ AMVIDEOCAP_STATE_FINISHED_CAPTURE = 300,
+ AMVIDEOCAP_STATE_ERROR = 0xffff,
+};
+
+class CTvScreenCapture {
+public:
+ CTvScreenCapture();
+ ~CTvScreenCapture();
+
+ int InitVCap(sp<IMemory> Mem);
+ int SetVideoParameter(int width, int height, int frame);
+ int VideoStart();
+ int GetVideoData( int *length);
+ int VideoStop();
+ int DeinitVideoCap();
+ int CapMediaPlayerVideoLayerOnly(int width, int height);
+ int CapOsdAndVideoLayer(int width, int height);
+ class CapEvent : public CTvEv {
+ public:
+ CapEvent(): CTvEv(CTvEv::TV_EVENT_HDMI_IN_CAP) {};
+ ~CapEvent() {};
+
+ int mFrameNum;
+ int mFrameWide;
+ int mFrameHeight;
+ int mFrameSize;
+ };
+
+ class TvIObserver {
+ public:
+ TvIObserver() {};
+ virtual ~TvIObserver() {};
+ virtual void onTvEvent ( const CTvEv &ev ) = 0;
+ };
+
+ int setObserver(TvIObserver *ob)
+ {
+ mpObserver = ob;
+ return 0;
+ }
+
+private:
+
+ int xioctl(int fd, int request, void *arg);
+ int OpenCamera(struct camera *pCameraDev);
+ int InitMmap(struct camera *cam) ;
+ //int SetFrameRate( struct camera *cam);
+ int InitCamera(struct camera *cam) ;
+ int StartCapturing(struct camera *cam);
+ int StopCapturing(struct camera *cam);
+ int UninitCamera(struct camera *cam);
+ int CloseCamera(struct camera *cam);
+ void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb);
+ void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len);
+ int AmvideocapCapFrame(char *buf, int size, int *w, int *h, int *ret_size);
+private:
+ sp<IMemory> m_pMem;
+ camera m_capV4l2Cam;
+ unsigned int m_capNumBuffers;
+
+ char *m_pData;
+ TvIObserver *mpObserver;
+ CapEvent mCapEvt;
+};
+#endif
+