summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tv/CAv.h (plain)
blob: e394e4934485583cd79da626477852d3b292365e
1#ifndef _C_AV_H
2#define _C_AV_H
3#include "am_av.h"
4#include "am_aout.h"
5#include "CTvEv.h"
6#include "CTvLog.h"
7static const char *PATH_FRAME_COUNT = "/sys/module/di/parameters/frame_count";
8//3D=====================================================================
9static const char *PATH_SET_3D_TYPE = "/sys/class/video/threedim_mode";
10static const char *PATH_VIDEO_AMVIDEO = "/dev/amvideo";
11//3和1是做不同的3dsclaer 0是不做任何scaler
12static const char *PATH_3D_SCALER = "/sys/module/amvideo/parameters/force_3d_scaler";
13//0是不做3dscaler 1是做3dscaler
14static const char *PATH_VIDEO_SCALER = "/sys/class/video/stereo_scaler";
15
16/*cmd use for 3d operation*/
17#define MODE_3D_DISABLE 0x00000000
18#define MODE_3D_ENABLE 0x00000001
19#define MODE_3D_AUTO 0x00000002
20#define MODE_3D_LR 0x00000004
21#define MODE_3D_TB 0x00000008
22#define MODE_3D_LA 0x00000010
23#define MODE_3D_FA 0x00000020
24#define MODE_3D_LR_SWITCH 0x00000100
25#define MODE_3D_TO_2D_L 0x00000200
26#define MODE_3D_TO_2D_R 0x00000400
27#define MODE_3D_MVC 0x00000800
28#define MODE_3D_OUT_TB 0x00010000
29#define MODE_3D_OUT_LR 0x00020000
30
31/*when the output mode is field alterlative*/
32//LRLRLRLRL mode
33#define MODE_3D_OUT_FA_L_FIRST 0x00001000
34#define MODE_3D_OUT_FA_R_FIRST 0x00002000
35//LBRBLBRB
36#define MODE_3D_OUT_FA_LB_FIRST 0x00004000
37#define MODE_3D_OUT_FA_RB_FIRST 0x00008000
38
39
40typedef enum VIDEO_3D_MODE_E {
41 VIDEO_3D_MODE_DISABLE,
42 VIDEO_3D_MODE_AUTO,
43 VIDEO_3D_MODE_LR,
44 VIDEO_3D_MODE_TB,
45 VIDEO_3D_MODE_LA,
46 VIDEO_3D_MODE_FA
47} VIDEO_3D_MODE_T;
48
49//end 3D===================================================================
50typedef enum video_display_resolution_e {
51 VPP_DISPLAY_RESOLUTION_1366X768,
52 VPP_DISPLAY_RESOLUTION_1920X1080,
53 VPP_DISPLAY_RESOLUTION_3840X2160,
54 VPP_DISPLAY_RESOLUTION_MAX,
55} video_display_resolution_t;
56
57
58class CAv {
59public:
60 CAv();
61 ~CAv();
62 //video screen_mode
63 static const int VIDEO_WIDEOPTION_NORMAL = 0;
64 static const int VIDEO_WIDEOPTION_FULL_STRETCH = 1;
65 static const int VIDEO_WIDEOPTION_4_3 = 2;
66 static const int VIDEO_WIDEOPTION_16_9 = 3;
67 static const int VIDEO_WIDEOPTION_NONLINEAR = 4;
68 static const int VIDEO_WIDEOPTION_NORMAL_NOSCALEUP = 5;
69 static const int VIDEO_WIDEOPTION_CROP_FULL = 6;
70 static const int VIDEO_WIDEOPTION_CROP = 7;
71 //
72 static const int DISABLE_VIDEO_COLOR_BLUE = 1;
73 static const int DISABLE_VIDEO_COLOR_BLACK = 2;
74 class AVEvent : public CTvEv {
75 public:
76 AVEvent(): CTvEv(CTvEv::TV_EVENT_AV)
77 {
78
79 };
80 ~AVEvent()
81 {
82 };
83 static const int EVENT_AV_STOP = 1;
84 static const int EVENT_AV_RESUEM = 2;
85 static const int EVENT_AV_SCAMBLED = 3;
86 static const int EVENT_AV_UNSUPPORT = 4;
87 int type;
88 int param;
89 };
90
91 class IObserver {
92 public:
93 IObserver() {};
94 virtual ~IObserver() {};
95 virtual void onEvent(const AVEvent &ev) = 0;
96 };
97 //1 VS n
98 //int addObserver(IObserver* ob);
99 //int removeObserver(IObserver* ob);
100
101 //1 VS 1
102 int setObserver(IObserver *ob)
103 {
104 mpObserver = ob;
105 return 0;
106 }
107
108 int Open();
109 int Close();
110 int SetVideoWindow(int x, int y, int w, int h);
111 int GetVideoStatus(AM_AV_VideoStatus_t *status);
112 int SwitchTSAudio(int apid, AM_AV_AFormat_t afmt);
113 int ResetAudioDecoder();
114 int SetTSSource(AM_AV_TSSource_t ts_source);
115 int StartTS(uint16_t vpid, uint16_t apid, AM_AV_VFormat_t vfmt, AM_AV_AFormat_t afmt);
116 int StopTS();
117 int AudioGetOutputMode(AM_AOUT_OutputMode_t *mode);
118 int AudioSetOutputMode(AM_AOUT_OutputMode_t mode);
119 int SetVideoScreenColor (int vdin_blending_mask, int y, int u, int v);
120 int DisableVideoWithBlueColor();
121 int DisableVideoWithBlackColor();
122 int EnableVideoAuto();
123 int EnableVideoNow();
124 int EnableVideoBlackout();
125 int DisableVideoBlackout();
126 int getVideoDisableValue();
127 int SetVideoLayerDisable ( int value );
128 int ClearVideoBuffer();
129 int setVideoScreenMode ( int value );
130 int getVideoScreenMode();
131 int setVideoAxis ( int h, int v, int width, int height );
132 video_display_resolution_t getVideoDisplayResolution();
133 //LR_switch: 1 is enable, 3D_TO_2D:1 is L , 2 is R
134 int set3DMode(VIDEO_3D_MODE_T mode, int LR_switch, int mode_3D_TO_2D);
135 //
136private:
137 static void av_evt_callback ( long dev_no, int event_type, void *param, void *user_data );
138 int mTvPlayDevId;
139 IObserver *mpObserver;
140 AVEvent mCurAvEvent;
141 int mCurVideoLayerMuteState;
142 int mCurDisableVideoColor;
143
144 int mFdAmVideo;
145};
146#endif
147