summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--tv_input.cpp45
-rw-r--r--tvapi/android/Android.mk2
-rw-r--r--tvapi/android/include/ITv.h100
-rw-r--r--tvapi/android/include/ITvClient.h58
-rw-r--r--tvapi/android/include/ITvService.h68
-rw-r--r--tvapi/android/include/Tv.h161
-rw-r--r--tvapi/android/include/tvcmd.h1188
-rw-r--r--tvapi/android/jni/Android.mk132
-rw-r--r--tvapi/android/jni/android_amlogic_tv.cpp911
-rw-r--r--tvapi/android/jni/cfbc_jni.cpp214
-rw-r--r--tvapi/android/jni/cfbc_test.cpp86
-rw-r--r--tvapi/android/libtvbinder/Android.mk48
-rw-r--r--tvapi/android/libtvbinder/ITv.cpp289
-rw-r--r--tvapi/android/libtvbinder/ITvClient.cpp117
-rw-r--r--tvapi/android/libtvbinder/ITvService.cpp101
-rw-r--r--tvapi/android/libtvbinder/Tv.cpp378
-rw-r--r--tvapi/android/tvserver/Android.mk162
-rw-r--r--tvapi/android/tvserver/TvService.cpp8755
-rw-r--r--tvapi/android/tvserver/TvService.h164
-rw-r--r--tvapi/android/tvserver/main.cpp46
-rwxr-xr-x[-rw-r--r--]tvapi/build/include/.gitignore0
-rw-r--r--tvapi/docs/tv.uml12156
-rw-r--r--tvapi/libtv/Android.mk3
-rw-r--r--tvapi/libtv/audio/audio_alsa.cpp2426
-rw-r--r--tvapi/libtv/audio/audio_alsa.h261
-rw-r--r--tvapi/libtv/audio/audio_android.cpp2070
-rw-r--r--tvapi/libtv/audio/audio_android.h157
-rw-r--r--tvapi/libtv/audio/audio_android_effect.cpp1182
-rw-r--r--tvapi/libtv/audio/audio_android_effect.h131
-rw-r--r--tvapi/libtv/audio/audio_api.cpp4940
-rw-r--r--tvapi/libtv/audio/audio_api.h647
-rw-r--r--tvapi/libtv/audio/audio_effect.cpp456
-rw-r--r--tvapi/libtv/audio/audio_effect.h63
-rw-r--r--tvapi/libtv/include/amstream.h526
-rw-r--r--tvapi/libtv/include/amvecm.h136
-rw-r--r--tvapi/libtv/include/cm.h306
-rw-r--r--tvapi/libtv/include/hdmirx_cec.h508
-rw-r--r--tvapi/libtv/include/ve.h438
-rw-r--r--tvapi/libtv/tv/AutoBackLight.cpp426
-rw-r--r--tvapi/libtv/tv/AutoBackLight.h47
-rw-r--r--tvapi/libtv/tv/CAv.cpp484
-rw-r--r--tvapi/libtv/tv/CAv.h194
-rw-r--r--tvapi/libtv/tv/CFbcCommunication.cpp2326
-rw-r--r--tvapi/libtv/tv/CFbcCommunication.h680
-rw-r--r--tvapi/libtv/tv/CFrontEnd.cpp838
-rw-r--r--tvapi/libtv/tv/CFrontEnd.h227
-rw-r--r--tvapi/libtv/tv/CTv.cpp10755
-rw-r--r--tvapi/libtv/tv/CTv.h1269
-rw-r--r--tvapi/libtv/tv/CTvBooking.cpp324
-rw-r--r--tvapi/libtv/tv/CTvBooking.h167
-rw-r--r--tvapi/libtv/tv/CTvDmx.cpp8
-rw-r--r--tvapi/libtv/tv/CTvDmx.h15
-rw-r--r--tvapi/libtv/tv/CTvEpg.cpp260
-rw-r--r--tvapi/libtv/tv/CTvEpg.h280
-rw-r--r--tvapi/libtv/tv/CTvEv.cpp2
-rw-r--r--tvapi/libtv/tv/CTvEv.h314
-rw-r--r--tvapi/libtv/tv/CTvLog.h8
-rw-r--r--tvapi/libtv/tv/CTvRecord.cpp552
-rw-r--r--tvapi/libtv/tv/CTvRecord.h93
-rw-r--r--tvapi/libtv/tv/CTvSatellite.h43
-rw-r--r--tvapi/libtv/tv/CTvScanner.cpp1417
-rw-r--r--tvapi/libtv/tv/CTvScanner.h319
-rw-r--r--tvapi/libtv/tv/CTvScreenCapture.cpp1060
-rw-r--r--tvapi/libtv/tv/CTvScreenCapture.h351
-rw-r--r--tvapi/libtv/tv/CTvSubtitle.cpp272
-rw-r--r--tvapi/libtv/tv/CTvSubtitle.h469
-rw-r--r--tvapi/libtv/tv/CTvTime.h137
-rw-r--r--tvapi/libtv/tv/CTvVchipCheck.cpp250
-rw-r--r--tvapi/libtv/tv/CTvVchipCheck.h43
-rw-r--r--tvapi/libtv/tv/CUpgradeFBC.cpp974
-rw-r--r--tvapi/libtv/tv/CUpgradeFBC.h284
-rw-r--r--tvapi/libtv/tvconfig/CIniFile.cpp706
-rw-r--r--tvapi/libtv/tvconfig/CIniFile.h79
-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.h575
-rw-r--r--tvapi/libtv/tvdb/CTvDatabase.cpp300
-rw-r--r--tvapi/libtv/tvdb/CTvDatabase.h190
-rw-r--r--tvapi/libtv/tvdb/CTvDimension.cpp714
-rw-r--r--tvapi/libtv/tvdb/CTvDimension.h196
-rw-r--r--tvapi/libtv/tvdb/CTvEvent.cpp482
-rw-r--r--tvapi/libtv/tvdb/CTvEvent.h171
-rw-r--r--tvapi/libtv/tvdb/CTvGroup.cpp88
-rw-r--r--tvapi/libtv/tvdb/CTvGroup.h61
-rw-r--r--tvapi/libtv/tvdb/CTvProgram.cpp1766
-rw-r--r--tvapi/libtv/tvdb/CTvProgram.h1065
-rw-r--r--tvapi/libtv/tvdb/CTvRegion.cpp366
-rw-r--r--tvapi/libtv/tvdb/CTvRegion.h85
-rw-r--r--tvapi/libtv/tvin/CHDMIRxCEC.cpp830
-rw-r--r--tvapi/libtv/tvin/CSourceConnectDetect.cpp448
-rw-r--r--tvapi/libtv/tvin/CTvin.cpp4240
-rw-r--r--tvapi/libtv/tvin/CTvin.h2222
-rw-r--r--tvapi/libtv/tvsetting/CBlobDevice.cpp54
-rw-r--r--tvapi/libtv/tvsetting/CBlobDevice.h101
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceE2prom.cpp706
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceE2prom.h153
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceFile.cpp160
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceFile.h53
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceRam.cpp258
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceRam.h75
-rw-r--r--tvapi/libtv/tvsetting/CTvSetting.cpp4424
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingCfg.h742
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingDeviceFactory.cpp38
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingDeviceFactory.h11
-rw-r--r--tvapi/libtv/tvsetting/TvKeyData.cpp2784
-rw-r--r--tvapi/libtv/tvsetting/audio_cfg.cpp3706
-rw-r--r--tvapi/libtv/tvsetting/audio_cfg.h338
-rw-r--r--tvapi/libtv/tvutils/CCondition.h87
-rw-r--r--tvapi/libtv/tvutils/CFile.cpp250
-rw-r--r--tvapi/libtv/tvutils/CFile.h53
-rw-r--r--tvapi/libtv/tvutils/CHdmiCecCmd.cpp6
-rw-r--r--tvapi/libtv/tvutils/CHdmiCecCmd.h9
-rw-r--r--tvapi/libtv/tvutils/CMsgQueue.cpp144
-rw-r--r--tvapi/libtv/tvutils/CMsgQueue.h44
-rw-r--r--tvapi/libtv/tvutils/CMutex.h116
-rw-r--r--tvapi/libtv/tvutils/CSerialCommunication.cpp118
-rw-r--r--tvapi/libtv/tvutils/CSerialCommunication.h98
-rw-r--r--tvapi/libtv/tvutils/CSerialPort.cpp568
-rw-r--r--tvapi/libtv/tvutils/CSerialPort.h45
-rw-r--r--tvapi/libtv/tvutils/CSqlite.cpp126
-rw-r--r--tvapi/libtv/tvutils/CSqlite.h292
-rw-r--r--tvapi/libtv/tvutils/CThread.cpp212
-rw-r--r--tvapi/libtv/tvutils/CThread.h79
-rw-r--r--tvapi/libtv/tvutils/CTvInput.cpp196
-rw-r--r--tvapi/libtv/tvutils/CTvInput.h49
-rw-r--r--tvapi/libtv/tvutils/serial_base.cpp560
-rw-r--r--tvapi/libtv/tvutils/serial_base.h34
-rw-r--r--tvapi/libtv/tvutils/serial_operate.cpp336
-rw-r--r--tvapi/libtv/tvutils/serial_operate.h72
-rw-r--r--tvapi/libtv/tvutils/tvutils.cpp3822
-rw-r--r--tvapi/libtv/tvutils/tvutils.h238
-rw-r--r--tvapi/libtv/tvutils/zepoll.cpp66
-rw-r--r--tvapi/libtv/tvutils/zepoll.h57
-rw-r--r--tvapi/libtv/version/version.cpp188
-rw-r--r--tvapi/libtv/version/version.h22
-rw-r--r--tvapi/libtv/vpp/CPQdb.cpp3183
-rw-r--r--tvapi/libtv/vpp/CPQdb.h321
-rw-r--r--tvapi/libtv/vpp/CVpp.cpp4772
-rw-r--r--tvapi/libtv/vpp/CVpp.h683
-rw-r--r--tvapi/libtv/vpp/pqdata.cpp216
-rw-r--r--tvapi/tvtests/Android.mk98
-rw-r--r--tvapi/tvtests/android_tvtest.cpp30
-rw-r--r--tvapi/tvtests/comm_test.cpp42
-rw-r--r--tvapi/tvtests/ssm_test.cpp420
-rw-r--r--tvapi/tvtests/tvconfig_test.cpp854
147 files changed, 55964 insertions, 55946 deletions
diff --git a/tvapi/libtv/tvdb/CTvProgram.h b/tvapi/libtv/tvdb/CTvProgram.h
index 8abf94f..cd82b27 100644
--- a/tvapi/libtv/tvdb/CTvProgram.h
+++ b/tvapi/libtv/tvdb/CTvProgram.h
@@ -1,536 +1,529 @@
-//
-//
-// amlogic 2013
-//
-// @ Project : tv
-// @ File Name : CTvProgram.h
-// @ Date : 2013-11
-// @ Author :
-//
-//
-
-
-#if !defined(_CTVPROGRAM_H)
-#define _CTVPROGRAM_H
-
-#include "CTvDatabase.h"
-#include "CTvChannel.h"
-#include <utils/String8.h>
-#include <utils/RefBase.h>
-#include <stdlib.h>
-#include "CTvLog.h"
-using namespace android;
-// Program对应ATV中的一个频道,DTV中的一个service
-class CTvEvent;
-class CTvProgram : public LightRefBase<CTvProgram>
-{
-public:
- /*this type value is link to enum AM_SCAN_ServiceType in am_scan.h
- * enum AM_SCAN_ServiceType
- {
- AM_SCAN_SRV_UNKNOWN = 0, < 未知类型
- AM_SCAN_SRV_DTV = 1, < 数字电视类型
- AM_SCAN_SRV_DRADIO = 2, < 数字广播类型
- AM_SCAN_SRV_ATV = 3, < 模拟电视类型
- };
- * /
- /**未定义类型*/
- static const int TYPE_UNKNOWN = 0;
- /**电视节目*/
- static const int TYPE_TV = 4;
- /**广播节目*/
- static const int TYPE_RADIO = 2;
- /**模拟节目*/
- static const int TYPE_ATV = 3;
- /**数据节目*/
- static const int TYPE_DATA = 5;
- /**数字节目*/
- static const int TYPE_DTV = 1 ;
- /** PVR/Timeshifting playback program*/
- static const int TYPE_PLAYBACK = 6;
-
- static const int PROGRAM_SKIP_NO = 0;
- static const int PROGRAM_SKIP_YES = 1;
- static const int PROGRAM_SKIP_UNKOWN = 2;
-
- /**
- *Service中的基础元素信息
- */
-public:
- class Element
- {
- private :
- int mpid;
-
- public :
- Element(int pid)
- {
- this->mpid = pid;
- }
- /**
- *取得基础元素的PID
- *@return 返回PID
- */
- int getPID()
- {
- return mpid;
- }
- };
-
-
-
- /**
- *多语言基础元素信息
- */
-public:
- class MultiLangElement : public Element
- {
- private :
- String8 mlang;
-
- public :
- MultiLangElement(int pid, String8 lang): Element(pid)
- {
- this->mlang = lang;
- }
-
- /**
- *取得元素对应的语言
- *@return 返回3字符语言字符串
- */
- String8 getLang()
- {
- return mlang;
- }
- };
-
-
-
- /**
- *视频信息
- */
-public :
- class Video : public Element
- {
- public:
- /**MPEG1/2*/
- static const int FORMAT_MPEG12 = 0;
- /**MPEG4*/
- static const int FORMAT_MPEG4 = 1;
- /**H.264*/
- static const int FORMAT_H264 = 2;
- /**MJPEG*/
- static const int FORMAT_MJPEG = 3;
- /**Real video*/
- static const int FORMAT_REAL = 4;
- /**JPEG*/
- static const int FORMAT_JPEG = 5;
- /**Microsoft VC1*/
- static const int FORMAT_VC1 = 6;
- /**AVS*/
- static const int FORMAT_AVS = 7;
- /**YUV*/
- static const int FORMAT_YUV = 8;
- /**H.264 MVC*/
- static const int FORMAT_H264MVC = 9;
- /**QJPEG*/
- static const int FORMAT_QJPEG = 10;
-
- Video(int pid, int fmt): Element(pid)
- {
- this->mformat = fmt;
- }
-
- /**
- *取得视频编码格式
- *@return 返回视频编码格式
- */
- int getFormat()
- {
- return mformat;
- }
- private :
- int mformat;
- };
-
- /**
- *音频信息
- */
-public :
- class Audio : public MultiLangElement
- {
- public :
- /**MPEG*/
- static const int FORMAT_MPEG = 0;
- /**PCM 16位小端*/
- static const int FORMAT_PCM_S16LE = 1;
- /**AAC*/
- static const int FORMAT_AAC = 2;
- /**AC3*/
- static const int FORMAT_AC3 = 3;
- /**ALAW*/
- static const int FORMAT_ALAW = 4;
- /**MULAW*/
- static const int FORMAT_MULAW = 5;
- /**DTS*/
- static const int FORMAT_DTS = 6;
- /**PCM 16位大端*/
- static const int FORMAT_PCM_S16BE = 7;
- /**FLAC*/
- static const int FORMAT_FLAC = 8;
- /**COOK*/
- static const int FORMAT_COOK = 9;
- /**PCM 8位*/
- static const int FORMAT_PCM_U8 = 10;
- /**ADPCM*/
- static const int FORMAT_ADPCM = 11;
- /**AMR*/
- static const int FORMAT_AMR = 12;
- /**RAAC*/
- static const int FORMAT_RAAC = 13;
- /**WMA*/
- static const int FORMAT_WMA = 14;
- /**WMA Pro*/
- static const int FORMAT_WMAPRO = 15;
- /**蓝光PCM*/
- static const int FORMAT_PCM_BLURAY = 16;
- /**ALAC*/
- static const int FORMAT_ALAC = 17;
- /**Vorbis*/
- static const int FORMAT_VORBIS = 18;
- /**AAC latm格式*/
- static const int FORMAT_AAC_LATM = 19;
- /**APE*/
- static const int FORMAT_APE = 20;
-
-
- Audio(int pid, String8 lang, int fmt): MultiLangElement(pid, lang)
- {
- this->mformat = fmt;
- }
-
- /**
- *取得音频编码格式
- *@return 返回音频编码格式
- */
- int getFormat()
- {
- return mformat;
- }
- private :
- int mformat;
- };
-
- /**
- *字幕信息
- */
-public :
- class Subtitle : public MultiLangElement
- {
- public :
- /**DVB subtitle*/
- static const int TYPE_DVB_SUBTITLE = 1;
- /**数字电视Teletext*/
- static const int TYPE_DTV_TELETEXT = 2;
- /**模拟电视Teletext*/
- static const int TYPE_ATV_TELETEXT = 3;
- /**数字电视Closed caption*/
- static const int TYPE_DTV_CC = 4;
- /**模拟电视Closed caption*/
- static const int TYPE_ATV_CC = 5;
-
-
-
- Subtitle(int pid, String8 lang, int type, int num1, int num2): MultiLangElement(pid, lang)
- {
-
- this->type = type;
- if (type == TYPE_DVB_SUBTITLE) {
- compositionPage = num1;
- ancillaryPage = num2;
- } else if (type == TYPE_DTV_TELETEXT) {
- magazineNo = num1;
- pageNo = num2;
- }
- }
-
- /**
- *取得字幕类型
- *@return 返回字幕类型
- */
- int getType()
- {
- return type;
- }
-
- /**
- *取得DVB subtitle的composition page ID
- *@return 返回composition page ID
- */
- int getCompositionPageID()
- {
- return compositionPage;
- }
-
- /**
- *取得DVB subtitle的ancillary page ID
- *@return 返回ancillary page ID
- */
- int getAncillaryPageID()
- {
- return ancillaryPage;
- }
-
- /**
- *取得teletext的magazine number
- *@return 返回magazine number
- */
- int getMagazineNumber()
- {
- return magazineNo;
- }
-
- /**
- *取得teletext的page number
- *@return 返回page number
- */
- int getPageNumber()
- {
- return pageNo;
- }
-
- private :
- int compositionPage;
- int ancillaryPage;
- int magazineNo;
- int pageNo;
- int type;
- };
-
- /**
- *Teletext信息
- */
-public :
- class Teletext : public MultiLangElement
- {
- public:
- Teletext(int pid, String8 lang, int mag, int page): MultiLangElement(pid, lang)
- {
- magazineNo = mag;
- pageNo = page;
- }
-
- /**
- *取得teletext的magazine number
- *@return 返回magazine number
- */
- int getMagazineNumber()
- {
- return magazineNo;
- }
-
- /**
- *取得teletext的page number
- *@return 返回page number
- */
- int getPageNumber()
- {
- return pageNo;
- }
-
- private :
- int magazineNo;
- int pageNo;
- };
-
- //节目号信息
-public:
- /**如果没有发现子频道,忽略用户的输入*/
- static const int MINOR_CHECK_NONE = 0;
- /**如果没有发现子频道,向上寻找(子频道数字增加),找到子频道号最大的*/
- static const int MINOR_CHECK_UP = 1;
- /**如果没有发现子频道,向下寻找(子频道数字减小),找到子频道号最小的*/
- static const int MINOR_CHECK_DOWN = 2;
- /*如果没有发现子频道,向上寻找,然后找到向上最近的.*/
- static const int MINOR_CHECK_NEAREST_UP = 3;
- /*如果没有发现子频道,向下寻找,然后找到向下最近的.*/
- static const int MINOR_CHECK_NEAREST_DOWN = 4;
-
- /**
- *取得节目号
- *@return 返回节目号
- */
- int getNumber()
- {
- return major;
- }
-
- /**
- *取得主节目号(ATSC)
- *@return 返回节目的主节目号
- */
- int getMajor()
- {
- return major;
- }
-
- /**
- *取得次节目号(ATSC)
- *@return 返回节目的次节目号
- */
- int getMinor()
- {
- return minor;
- }
-
- /**
- *是否为ATSC模式
- *@return 如果是ATSC模式返回true
- */
- bool isATSCMode()
- {
- return atscMode;
- }
-
- /**
- *取得子频道号自动查找策略(ATSC)
- *@return 返回子频道号自动查找策略
- */
- int getMinorCheck()
- {
- return minorCheck;
- }
-
-private:
- int major;
- int minor;
- int minorCheck;
- bool atscMode;
-
-
-public:
- CTvProgram(CTvDatabase::Cursor &c);
- CTvProgram(int channelID, int type, int num, int skipFlag);
- /**
- *向数据库添加一个Program,atscMode
- */
- CTvProgram(int channelID, int type, int major, int minor, int skipFlag);
- ~CTvProgram();
- // 创建并向数据库添加一个Program
- CTvProgram(int channelID, int type);
-
- CTvProgram();
-
-
- int getCurrentAudio(String8 defaultLang);
- Video *getVideo()
- {
- return mpVideo;
- }
- Audio *getAudio(int id)
- {
- if (mvAudios.size() <= 0) return NULL;
- return mvAudios[id];
- }
-
- int getAudioTrackSize()
- {
- return mvAudios.size();
- }
- static int selectByID(int id, CTvProgram &p);
- static CTvProgram selectByNumber(int num, int type);
- int selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check = MINOR_CHECK_NONE);
- int selectByNumber(int type, int num, CTvProgram &prog);
- static int selectByChannel(int channelID, int type, Vector<sp<CTvProgram> > &out);
- // 列出全部TVProgram
- static int selectAll(bool no_skip, Vector<sp<CTvProgram> > &out);
- static int selectByType(int type, int skip, Vector<sp<CTvProgram> > &out);
- static int selectByChanID(int type, int skip, Vector<sp<CTvProgram> > &out);
- static Vector<CTvProgram> selectByChannel(int channelID);
- // 根据节目名称中的关键字查找指定TVProgram
- static Vector<CTvProgram> selectByName(int name);
- void tvProgramDelByChannelID(int channelID);
- int getID()
- {
- return id;
- };
- int getSrc()
- {
- return src;
- };
- int getProgType()
- {
- return type;
- };
- int getChanOrderNum()
- {
- return chanOrderNum;
- };
- int getChanVolume()
- {
- return volume;
- };
- int getSourceId()
- {
- return sourceID;
- };
- int getServiceId()
- {
- return dvbServiceID;
- };
- int getProgSkipFlag();
- void setCurrAudioTrackIndex(int programId, int audioIndex);
- int getCurrAudioTrackIndex();
-
- String8 getName();
- void getCurrentSubtitle();
- void getCurrentTeletext();
- int getChannel(CTvChannel &c);
- int upDateChannel(CTvChannel &c, int std, int freq, int fineFreq);
- int updateVolComp(int progID, int volValue);
- void updateProgramName(int progId, String8 strName);
- void setSkipFlag(int progId, bool bSkipFlag);
- void setFavoriteFlag(int progId, bool bFavor);
- int getFavoriteFlag()
- {
- return favorite;
- };
- void deleteProgram(int progId);
- static int CleanAllProgramBySrvType(int srvType);
- void setLockFlag(int progId, bool bLockFlag);
- bool getLockFlag();
- void swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2);
- static int deleteChannelsProgram(CTvChannel &c);
-private:
- int CreateFromCursor(CTvDatabase::Cursor &c);
- int selectProgramInChannelByNumber(int channelID, int num, CTvDatabase::Cursor &c);
- int selectProgramInChannelByNumber(int channelID, int major, int minor, CTvDatabase::Cursor &c);
- CTvChannel channel;
- int id;
- int dvbServiceID;
- int type;
- String8 name;
- int channelID;
- int skip;
- int favorite;
- int volume;
- int sourceID;
- int pmtPID;
- int src;
- int audioTrack;
- int chanOrderNum;
- int currAudTrackIndex;
- bool lock;
- bool scrambled;
- // video信息,类型不定
- Video *mpVideo;
- // audio信息,类型不定
- Vector<Audio *> mvAudios;
- // subtitle信息类型不定
- Vector<Subtitle *> mvSubtitles;
- // teletext信息,类型不定
- Vector<Teletext *> mvTeletexts;
-
-};
-
-#endif //_CTVPROGRAM_H
+//
+//
+// amlogic 2013
+//
+// @ Project : tv
+// @ File Name : CTvProgram.h
+// @ Date : 2013-11
+// @ Author :
+//
+//
+
+
+#if !defined(_CTVPROGRAM_H)
+#define _CTVPROGRAM_H
+
+#include "CTvDatabase.h"
+#include "CTvChannel.h"
+#include <utils/String8.h>
+#include <utils/RefBase.h>
+#include <stdlib.h>
+#include "CTvLog.h"
+using namespace android;
+// Program对应ATV中的一个频道,DTV中的一个service
+class CTvEvent;
+class CTvProgram : public LightRefBase<CTvProgram> {
+public:
+ /*this type value is link to enum AM_SCAN_ServiceType in am_scan.h
+ * enum AM_SCAN_ServiceType
+ {
+ AM_SCAN_SRV_UNKNOWN = 0, < 未知类型
+ AM_SCAN_SRV_DTV = 1, < 数字电视类型
+ AM_SCAN_SRV_DRADIO = 2, < 数字广播类型
+ AM_SCAN_SRV_ATV = 3, < 模拟电视类型
+ };
+ * /
+ /**未定义类型*/
+ static const int TYPE_UNKNOWN = 0;
+ /**电视节目*/
+ static const int TYPE_TV = 4;
+ /**广播节目*/
+ static const int TYPE_RADIO = 2;
+ /**模拟节目*/
+ static const int TYPE_ATV = 3;
+ /**数据节目*/
+ static const int TYPE_DATA = 5;
+ /**数字节目*/
+ static const int TYPE_DTV = 1 ;
+ /** PVR/Timeshifting playback program*/
+ static const int TYPE_PLAYBACK = 6;
+
+ static const int PROGRAM_SKIP_NO = 0;
+ static const int PROGRAM_SKIP_YES = 1;
+ static const int PROGRAM_SKIP_UNKOWN = 2;
+
+ /**
+ *Service中的基础元素信息
+ */
+public:
+ class Element {
+ private :
+ int mpid;
+
+ public :
+ Element(int pid)
+ {
+ this->mpid = pid;
+ }
+ /**
+ *取得基础元素的PID
+ *@return 返回PID
+ */
+ int getPID()
+ {
+ return mpid;
+ }
+ };
+
+
+
+ /**
+ *多语言基础元素信息
+ */
+public:
+ class MultiLangElement : public Element {
+ private :
+ String8 mlang;
+
+ public :
+ MultiLangElement(int pid, String8 lang): Element(pid)
+ {
+ this->mlang = lang;
+ }
+
+ /**
+ *取得元素对应的语言
+ *@return 返回3字符语言字符串
+ */
+ String8 getLang()
+ {
+ return mlang;
+ }
+ };
+
+
+
+ /**
+ *视频信息
+ */
+public :
+ class Video : public Element {
+ public:
+ /**MPEG1/2*/
+ static const int FORMAT_MPEG12 = 0;
+ /**MPEG4*/
+ static const int FORMAT_MPEG4 = 1;
+ /**H.264*/
+ static const int FORMAT_H264 = 2;
+ /**MJPEG*/
+ static const int FORMAT_MJPEG = 3;
+ /**Real video*/
+ static const int FORMAT_REAL = 4;
+ /**JPEG*/
+ static const int FORMAT_JPEG = 5;
+ /**Microsoft VC1*/
+ static const int FORMAT_VC1 = 6;
+ /**AVS*/
+ static const int FORMAT_AVS = 7;
+ /**YUV*/
+ static const int FORMAT_YUV = 8;
+ /**H.264 MVC*/
+ static const int FORMAT_H264MVC = 9;
+ /**QJPEG*/
+ static const int FORMAT_QJPEG = 10;
+
+ Video(int pid, int fmt): Element(pid)
+ {
+ this->mformat = fmt;
+ }
+
+ /**
+ *取得视频编码格式
+ *@return 返回视频编码格式
+ */
+ int getFormat()
+ {
+ return mformat;
+ }
+ private :
+ int mformat;
+ };
+
+ /**
+ *音频信息
+ */
+public :
+ class Audio : public MultiLangElement {
+ public :
+ /**MPEG*/
+ static const int FORMAT_MPEG = 0;
+ /**PCM 16位小端*/
+ static const int FORMAT_PCM_S16LE = 1;
+ /**AAC*/
+ static const int FORMAT_AAC = 2;
+ /**AC3*/
+ static const int FORMAT_AC3 = 3;
+ /**ALAW*/
+ static const int FORMAT_ALAW = 4;
+ /**MULAW*/
+ static const int FORMAT_MULAW = 5;
+ /**DTS*/
+ static const int FORMAT_DTS = 6;
+ /**PCM 16位大端*/
+ static const int FORMAT_PCM_S16BE = 7;
+ /**FLAC*/
+ static const int FORMAT_FLAC = 8;
+ /**COOK*/
+ static const int FORMAT_COOK = 9;
+ /**PCM 8位*/
+ static const int FORMAT_PCM_U8 = 10;
+ /**ADPCM*/
+ static const int FORMAT_ADPCM = 11;
+ /**AMR*/
+ static const int FORMAT_AMR = 12;
+ /**RAAC*/
+ static const int FORMAT_RAAC = 13;
+ /**WMA*/
+ static const int FORMAT_WMA = 14;
+ /**WMA Pro*/
+ static const int FORMAT_WMAPRO = 15;
+ /**蓝光PCM*/
+ static const int FORMAT_PCM_BLURAY = 16;
+ /**ALAC*/
+ static const int FORMAT_ALAC = 17;
+ /**Vorbis*/
+ static const int FORMAT_VORBIS = 18;
+ /**AAC latm格式*/
+ static const int FORMAT_AAC_LATM = 19;
+ /**APE*/
+ static const int FORMAT_APE = 20;
+
+
+ Audio(int pid, String8 lang, int fmt): MultiLangElement(pid, lang)
+ {
+ this->mformat = fmt;
+ }
+
+ /**
+ *取得音频编码格式
+ *@return 返回音频编码格式
+ */
+ int getFormat()
+ {
+ return mformat;
+ }
+ private :
+ int mformat;
+ };
+
+ /**
+ *字幕信息
+ */
+public :
+ class Subtitle : public MultiLangElement {
+ public :
+ /**DVB subtitle*/
+ static const int TYPE_DVB_SUBTITLE = 1;
+ /**数字电视Teletext*/
+ static const int TYPE_DTV_TELETEXT = 2;
+ /**模拟电视Teletext*/
+ static const int TYPE_ATV_TELETEXT = 3;
+ /**数字电视Closed caption*/
+ static const int TYPE_DTV_CC = 4;
+ /**模拟电视Closed caption*/
+ static const int TYPE_ATV_CC = 5;
+
+
+
+ Subtitle(int pid, String8 lang, int type, int num1, int num2): MultiLangElement(pid, lang)
+ {
+
+ this->type = type;
+ if(type == TYPE_DVB_SUBTITLE) {
+ compositionPage = num1;
+ ancillaryPage = num2;
+ } else if(type == TYPE_DTV_TELETEXT) {
+ magazineNo = num1;
+ pageNo = num2;
+ }
+ }
+
+ /**
+ *取得字幕类型
+ *@return 返回字幕类型
+ */
+ int getType()
+ {
+ return type;
+ }
+
+ /**
+ *取得DVB subtitle的composition page ID
+ *@return 返回composition page ID
+ */
+ int getCompositionPageID()
+ {
+ return compositionPage;
+ }
+
+ /**
+ *取得DVB subtitle的ancillary page ID
+ *@return 返回ancillary page ID
+ */
+ int getAncillaryPageID()
+ {
+ return ancillaryPage;
+ }
+
+ /**
+ *取得teletext的magazine number
+ *@return 返回magazine number
+ */
+ int getMagazineNumber()
+ {
+ return magazineNo;
+ }
+
+ /**
+ *取得teletext的page number
+ *@return 返回page number
+ */
+ int getPageNumber()
+ {
+ return pageNo;
+ }
+
+ private :
+ int compositionPage;
+ int ancillaryPage;
+ int magazineNo;
+ int pageNo;
+ int type;
+ };
+
+ /**
+ *Teletext信息
+ */
+public :
+ class Teletext : public MultiLangElement {
+ public:
+ Teletext(int pid, String8 lang, int mag, int page): MultiLangElement(pid, lang)
+ {
+ magazineNo = mag;
+ pageNo = page;
+ }
+
+ /**
+ *取得teletext的magazine number
+ *@return 返回magazine number
+ */
+ int getMagazineNumber()
+ {
+ return magazineNo;
+ }
+
+ /**
+ *取得teletext的page number
+ *@return 返回page number
+ */
+ int getPageNumber()
+ {
+ return pageNo;
+ }
+
+ private :
+ int magazineNo;
+ int pageNo;
+ };
+
+ //节目号信息
+public:
+ /**如果没有发现子频道,忽略用户的输入*/
+ static const int MINOR_CHECK_NONE = 0;
+ /**如果没有发现子频道,向上寻找(子频道数字增加),找到子频道号最大的*/
+ static const int MINOR_CHECK_UP = 1;
+ /**如果没有发现子频道,向下寻找(子频道数字减小),找到子频道号最小的*/
+ static const int MINOR_CHECK_DOWN = 2;
+ /*如果没有发现子频道,向上寻找,然后找到向上最近的.*/
+ static const int MINOR_CHECK_NEAREST_UP = 3;
+ /*如果没有发现子频道,向下寻找,然后找到向下最近的.*/
+ static const int MINOR_CHECK_NEAREST_DOWN = 4;
+
+ /**
+ *取得节目号
+ *@return 返回节目号
+ */
+ int getNumber()
+ {
+ return major;
+ }
+
+ /**
+ *取得主节目号(ATSC)
+ *@return 返回节目的主节目号
+ */
+ int getMajor()
+ {
+ return major;
+ }
+
+ /**
+ *取得次节目号(ATSC)
+ *@return 返回节目的次节目号
+ */
+ int getMinor()
+ {
+ return minor;
+ }
+
+ /**
+ *是否为ATSC模式
+ *@return 如果是ATSC模式返回true
+ */
+ bool isATSCMode()
+ {
+ return atscMode;
+ }
+
+ /**
+ *取得子频道号自动查找策略(ATSC)
+ *@return 返回子频道号自动查找策略
+ */
+ int getMinorCheck()
+ {
+ return minorCheck;
+ }
+
+private:
+ int major;
+ int minor;
+ int minorCheck;
+ bool atscMode;
+
+
+public:
+ CTvProgram(CTvDatabase::Cursor &c);
+ CTvProgram(int channelID, int type, int num, int skipFlag);
+ /**
+ *向数据库添加一个Program,atscMode
+ */
+ CTvProgram(int channelID, int type, int major, int minor, int skipFlag);
+ ~CTvProgram();
+ // 创建并向数据库添加一个Program
+ CTvProgram(int channelID, int type);
+
+ CTvProgram();
+
+
+ int getCurrentAudio(String8 defaultLang);
+ Video *getVideo()
+ {
+ return mpVideo;
+ }
+ Audio *getAudio(int id)
+ {
+ if(mvAudios.size() <= 0) return NULL;
+ return mvAudios[id];
+ }
+
+ int getAudioTrackSize()
+ {
+ return mvAudios.size();
+ }
+ static int selectByID(int id, CTvProgram &p);
+ static CTvProgram selectByNumber(int num, int type);
+ int selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check = MINOR_CHECK_NONE);
+ int selectByNumber(int type, int num, CTvProgram &prog);
+ static int selectByChannel(int channelID, int type, Vector<sp<CTvProgram> > &out);
+ // 列出全部TVProgram
+ static int selectAll(bool no_skip, Vector<sp<CTvProgram> > &out);
+ static int selectByType(int type, int skip, Vector<sp<CTvProgram> > &out);
+ static int selectByChanID(int type, int skip, Vector<sp<CTvProgram> > &out);
+ static Vector<CTvProgram> selectByChannel(int channelID);
+ // 根据节目名称中的关键字查找指定TVProgram
+ static Vector<CTvProgram> selectByName(int name);
+ void tvProgramDelByChannelID(int channelID);
+ int getID()
+ {
+ return id;
+ };
+ int getSrc()
+ {
+ return src;
+ };
+ int getProgType()
+ {
+ return type;
+ };
+ int getChanOrderNum()
+ {
+ return chanOrderNum;
+ };
+ int getChanVolume()
+ {
+ return volume;
+ };
+ int getSourceId()
+ {
+ return sourceID;
+ };
+ int getServiceId()
+ {
+ return dvbServiceID;
+ };
+ int getProgSkipFlag();
+ void setCurrAudioTrackIndex(int programId, int audioIndex);
+ int getCurrAudioTrackIndex();
+
+ String8 getName();
+ void getCurrentSubtitle();
+ void getCurrentTeletext();
+ int getChannel(CTvChannel &c);
+ int upDateChannel(CTvChannel &c, int std, int freq, int fineFreq);
+ int updateVolComp(int progID, int volValue);
+ void updateProgramName(int progId, String8 strName);
+ void setSkipFlag(int progId, bool bSkipFlag);
+ void setFavoriteFlag(int progId, bool bFavor);
+ int getFavoriteFlag()
+ {
+ return favorite;
+ };
+ void deleteProgram(int progId);
+ static int CleanAllProgramBySrvType(int srvType);
+ void setLockFlag(int progId, bool bLockFlag);
+ bool getLockFlag();
+ void swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2);
+ static int deleteChannelsProgram(CTvChannel &c);
+private:
+ int CreateFromCursor(CTvDatabase::Cursor &c);
+ int selectProgramInChannelByNumber(int channelID, int num, CTvDatabase::Cursor &c);
+ int selectProgramInChannelByNumber(int channelID, int major, int minor, CTvDatabase::Cursor &c);
+ CTvChannel channel;
+ int id;
+ int dvbServiceID;
+ int type;
+ String8 name;
+ int channelID;
+ int skip;
+ int favorite;
+ int volume;
+ int sourceID;
+ int pmtPID;
+ int src;
+ int audioTrack;
+ int chanOrderNum;
+ int currAudTrackIndex;
+ bool lock;
+ bool scrambled;
+ // video信息,类型不定
+ Video *mpVideo;
+ // audio信息,类型不定
+ Vector<Audio *> mvAudios;
+ // subtitle信息类型不定
+ Vector<Subtitle *> mvSubtitles;
+ // teletext信息,类型不定
+ Vector<Teletext *> mvTeletexts;
+
+};
+
+#endif //_CTVPROGRAM_H