2 Copyright 2004-2005 Chris Tallon
4 This file is part of VOMP.
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.
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.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include "vvideorec.h"
23 VVideoRec::VVideoRec(Recording* rec)
25 player = new PlayerVideo(Command::getInstance(), 1, 0); // say 0 for radio because buffering will work anyway
27 vdr = VDR::getInstance();
28 video = Video::getInstance();
30 videoMode = video->getMode();
33 create(video->getScreenWidth(), video->getScreenHeight());
34 Colour transparent(0, 0, 0, 0);
35 setBackgroundColour(transparent);
38 VVideoRec::~VVideoRec()
40 Log::getInstance()->log("VVideoRec", Log::DEBUG, "Pre delete player");
42 Log::getInstance()->log("VVideoRec", Log::DEBUG, "Post delete player");
43 Video::getInstance()->setDefaultAspect();
46 void VVideoRec::draw()
51 void VVideoRec::go(ULLONG startPosition)
53 ULLONG recLength = vdr->streamRecording(myRec);
56 player->setLength(recLength);
57 player->setPosition(startPosition);
62 ViewMan* viewman = ViewMan::getInstance();
64 Message* m = new Message();
65 m->message = Message::CLOSE_ME;
68 viewman->postMessage(m);
70 VInfo* vi = new VInfo();
72 if (Video::getInstance()->getFormat() == Video::PAL)
73 vi->setScreenPos(170, 200);
75 vi->setScreenPos(160, 150);
79 vi->setOneLiner(tr("Error playing recording"));
83 m->message = Message::ADD_VIEW;
85 m->parameter = (ULONG)vi;
86 viewman->postMessage(m);
90 int VVideoRec::handleCommand(int command)
96 player->play(); // do resync
104 Log::getInstance()->log("VVideoRec", Log::DEBUG, "Pre player stop");
106 vdr->stopStreaming();
107 Log::getInstance()->log("VVideoRec", Log::DEBUG, "Post player stop");
112 player->togglePause();
115 case Remote::SKIPFORWARD:
117 player->skipForward(60);
120 case Remote::SKIPBACK:
122 player->skipBackward(60);
125 case Remote::FORWARD:
127 player->toggleFastForward();
132 player->skipBackward(10);
137 player->skipForward(10);
147 // case Remote::REVERSE:
149 // player->toggleFastBackward();
159 // for testing EPG in NTSC with a NTSC test video
160 Video::getInstance()->setMode(Video::QUARTER);
161 Video::getInstance()->setPosition(170, 5);
162 VEpg* vepg = new VEpg(NULL, 0);
164 ViewMan::getInstance()->add(vepg);
165 ViewMan::getInstance()->updateView(vepg);
177 case Remote::ZERO: player->jumpToPercent(0); return 2;
178 case Remote::ONE: player->jumpToPercent(10); return 2;
179 case Remote::TWO: player->jumpToPercent(20); return 2;
180 case Remote::THREE: player->jumpToPercent(30); return 2;
181 case Remote::FOUR: player->jumpToPercent(40); return 2;
182 case Remote::FIVE: player->jumpToPercent(50); return 2;
183 case Remote::SIX: player->jumpToPercent(60); return 2;
184 case Remote::SEVEN: player->jumpToPercent(70); return 2;
185 case Remote::EIGHT: player->jumpToPercent(80); return 2;
186 case Remote::NINE: player->jumpToPercent(90); return 2;
193 void VVideoRec::toggleChopSides()
195 if (video->getTVsize() == Video::ASPECT16X9) return; // Means nothing for 16:9 TVs
197 if (videoMode == Video::NORMAL)
199 videoMode = Video::LETTERBOX;
200 video->setMode(Video::LETTERBOX);
204 videoMode = Video::NORMAL;
205 video->setMode(Video::NORMAL);