]> git.vomp.tv Git - vompclient-marten.git/blob - vvideolivetv.h
Fix bug in demuxer widescreen signaling
[vompclient-marten.git] / vvideolivetv.h
1 /*
2     Copyright 2007 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20
21 #ifndef VVIDEOLIVETV_H
22 #define VVIDEOLIVETV_H
23
24 #include <stdio.h>
25 #include <vector>
26 #include <math.h>
27
28 #include "boxx.h"
29 #include "region.h"
30 #include "vdr.h"
31 #include "wtextbox.h"
32 #include "wselectlist.h"
33 #include "timerreceiver.h"
34 #include "wsymbol.h"
35 #include "wprogressbar.h"
36 #include "osdreceiver.h"
37
38 #ifdef PAL_WSS
39 #include "wwss.h"
40 #endif
41
42 class VChannelList;
43 class Video;
44 class VChannelList;
45 class BoxStack;
46 class WTextbox;
47 class PlayerLive;
48 class VAudioSelector;
49 class Bitmap;
50
51 class VVideoLiveTV : public Boxx, public TimerReceiver, public OSDReceiver
52 {
53   public:
54     VVideoLiveTV(ChannelList* chanList, ULONG initialChannelNumber, VChannelList* vchannelList);
55     virtual ~VVideoLiveTV();
56     void preDelete();
57     int handleCommand(int command);
58     void processMessage(Message* m);
59
60     void go();
61
62     bool channelChange(UCHAR changeType, UINT newData);
63     // changeType = INDEX = (newData is a channel index in the list)
64     //            = NUMBER = (newData is a real channel number)
65     //            = OFFSET = (newData is UP or DOWN)
66
67     const static UCHAR INDEX = 1;
68     const static UCHAR NUMBER = 2;
69     const static UCHAR OFFSET = 3;
70     const static UCHAR PREVIOUS = 4;
71     const static UCHAR UP = 1;
72     const static UCHAR DOWN = 2;
73
74     void timercall(int ref);
75
76     void drawOSDBitmap(UINT posX, UINT posY, const Bitmap&, const DisplayRegion& region);
77     void clearOSD();
78     void clearOSDArea(UINT posX, UINT posY, UINT width, UINT height, const DisplayRegion& region);
79
80   private:
81     BoxStack* boxstack;
82     VDR* vdr;
83     Video* video;
84     PlayerLive* player;
85     bool playing;
86     ChannelList* chanList;
87     VChannelList* vchannelList;
88     EventList* eventList;
89     int numberWidth;
90     int videoMode;
91     ULONG streamType;
92     ULONG preBuffering;
93
94     UINT currentChannelIndex;
95     UINT previousChannelIndex;
96     UINT osdChannelIndex;
97     int keying;
98     int keyingInput[10];
99
100     void doOK();
101     void doLeftRight(bool right);
102     void doUpDown(bool down);
103     void doChanUpDown(int which); // UP or DOWN
104     void doKey(int command);
105     void doEPG();
106     void doSummary();
107     void doAudioSelector();
108     void doTeletext(bool subtitle=false);
109     void stop();
110     UINT upChannel(UINT index);
111     UINT downChannel(UINT index);
112     void toggleChopSides();
113
114     void displayOSD(bool newNowNextData);
115     void clearScreen();
116     void setClock();
117     void delData();
118     void setNowNextData();
119     void setSummaryData();
120     void doAudioChannelSymbol();
121     void showUnavailable();
122     
123     VAudioSelector* vas;
124 #ifdef PAL_WSS
125     Wwss wss;
126     Region wssRegion;
127     bool dowss;
128 #endif
129     
130     Boxx osd;
131     WTextbox clock;
132     WTextbox osdChanNum;
133     WTextbox osdChanName;
134     WSelectList sl;
135     Boxx boxRed;
136     Boxx boxGreen;
137     Boxx boxYellow;
138     Boxx boxBlue;
139     WTextbox textRed;
140     WTextbox textGreen;
141     WTextbox textYellow;
142     WTextbox textBlue;
143     WSymbol sAspectRatio;
144     WProgressBar bufferBar;
145     WSymbol sAudioChannels;
146     WTextbox textUnavailable;
147     
148     Boxx summary;
149     WTextbox textSummary;
150     Boxx summaryBlackLine;
151     DrawStyle osdBack;
152     
153     Region osdSummaryRegion;
154     
155     bool okTriggeredOSD;
156
157 };
158
159 #endif