Пример #1
0
int main() {
	IWindow* w;
	ISurface* s;
	ILocalDeviceManager* dm;
	IPlayer* player;
	IPlayer* img;

#if HAVE_COMPSUPPORT
	IComponentManager* cm = IComponentManager::getCMInstance();
	dm = ((LocalDeviceManagerCreator*)(cm->getObject("LocalDeviceManager")))();
#else
	dm = LocalDeviceManager::getInstance();
#endif

	dm->createDevice("systemScreen(0)");
#if HAVE_COMPSUPPORT
	w = ((WindowCreator*)(cm->getObject("Window")))(10, 10, 100, 100);
#else
	w = new DFBWindow(10, 10, 100, 100);
#endif

	w->setCaps(w->getCap("ALPHACHANNEL"));
	w->draw();
	w->show();

	player = new Player("teste");
	img = new ImagePlayer("/root/bg_initializing.png");
	s = img->getSurface();
	w->renderFrom(s);

	//TODO: tests
	cout << "Player test has shown image. press enter to continue" << endl;
	getchar();
	dm->clearWidgetPools();
	cout << "Player test has released widgets. press enter to continue" << endl;
	getchar();

	return 0;
}
Пример #2
0
	void GingaNclGfx::show(int l, int t, int w, int h) {
		int size, compRollerW, compRollerH, initX, initY;
		double rate;
		vector<int> x;
		vector<int> y;
		AnimePlayer* p;
		IWindow* win;
		ISurface* s;
		vector<string>* mrls, *mrlsAux;
		IComponentManager* cm = IComponentManager::getCMInstance();

		release();

		GingaNclGfx::w = w;
		GingaNclGfx::h = h;
		rate = 0.2;
		initX = (w/2) - ((550 * rate)/2);
		initY = (h/2) - ((530 * rate)/2);

		x.push_back(initX + (130 * rate));
		x.push_back(initX + (240 * rate));
		x.push_back(initX + (340 * rate));
		x.push_back(initX + (400 * rate));
		x.push_back(initX + (340 * rate));
		x.push_back(initX + (240 * rate));
		x.push_back(initX + (130 * rate));
		x.push_back(initX + (60 * rate));

		y.push_back(initY + (90 * rate));
		y.push_back(initY + (50 * rate));
		y.push_back(initY + (90 * rate));
		y.push_back(initY + (190 * rate));
		y.push_back(initY + (330 * rate));
		y.push_back(initY + (380 * rate));
		y.push_back(initY + (330 * rate));
		y.push_back(initY + (190 * rate));

		compRollerW = 115 * rate;
		compRollerH = 113 * rate;

		mrls = new vector<string>;
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b1.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b2.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b3.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b4.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b5.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b6.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b7.png");
		mrls->push_back("/usr/local/lib/ginga/files/img/roller/b8.png");

		animes = new vector<AnimePlayer*>;
		bg = ((WindowCreator*)(cm->getObject("Window")))(l, t, w, h);
		s = ((ImageRenderer*)(cm->getObject("ImageRenderer")))(
				(char*)("/usr/local/lib/ginga/files/img/roller/loading.png"));

		bg->setCaps(bg->getCap("ALPHACHANNEL"));
		bg->draw();
		bg->show();
		bg->raiseToTop();

		bg->renderFrom(s);

		delete s;
		s = NULL;

		bottom = ((WindowCreator*)(cm->getObject("Window")))(
				5, h - 30, w / 2, 30);

		bottom->setCaps(bottom->getCap("ALPHACHANNEL"));
		bottom->draw();
		bottom->setBackgroundColor(0, 0, 0, 0);
		bottom->show();
		bottom->raiseToTop();

		top = ((WindowCreator*)(cm->getObject("Window")))(5, 5, w / 2, 30);
		top->setCaps(top->getCap("ALPHACHANNEL"));
		top->draw();
		top->setBackgroundColor(0, 0, 0, 0);
		top->show();
		top->raiseToTop();

		size = mrls->size();
		for (unsigned int i = 0; i < size; i++) {
			mrlsAux = new vector<string>(*mrls);
			p = createAnimePlayer(mrlsAux);
			win = ((WindowCreator*)(cm->getObject("Window")))(
					x[i], y[i], compRollerW, compRollerH);

			win->setCaps(win->getCap("ALPHACHANNEL"));
			win->draw();
			win->show();
			win->raiseToTop();

			p->setVoutWindow(win);
			animes->push_back(p);
			roll(mrls);
		}

		delete mrls;
		mrls = NULL;

		for (unsigned int i = 0; i < size; i++) {
			((*animes)[i])->play();
		}
	}
Пример #3
0
	void GingaNclGfx::show(int l, int t, int w, int h) {
		int compRollerW, compRollerH, initX, initY;
		unsigned int i, size;
		double rate;
		vector<int> x;
		vector<int> y;
		AnimePlayer* p;
		IWindow* win;
		ISurface* s;
		vector<string>* mrls, *mrlsAux;

		release();

		GingaNclGfx::w = w;
		GingaNclGfx::h = h;
		rate = 0.2;
		initX = (w/2) - ((550 * rate)/2);
		initY = (h/2) - ((530 * rate)/2);

		x.push_back(initX + (130 * rate));
		x.push_back(initX + (240 * rate));
		x.push_back(initX + (340 * rate));
		x.push_back(initX + (400 * rate));
		x.push_back(initX + (340 * rate));
		x.push_back(initX + (240 * rate));
		x.push_back(initX + (130 * rate));
		x.push_back(initX + (60 * rate));

		y.push_back(initY + (90 * rate));
		y.push_back(initY + (50 * rate));
		y.push_back(initY + (90 * rate));
		y.push_back(initY + (190 * rate));
		y.push_back(initY + (330 * rate));
		y.push_back(initY + (380 * rate));
		y.push_back(initY + (330 * rate));
		y.push_back(initY + (190 * rate));

		compRollerW = 115 * rate;
		compRollerH = 113 * rate;

		mrls = new vector<string>;
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b1.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b2.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b3.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b4.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b5.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b6.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b7.png");
		mrls->push_back(DATA_PREFIX_PATH "/share/ginga/img/roller/b8.png");

		animes = new vector<AnimePlayer*>;

#if HAVE_COMPSUPPORT
		bg = ((WindowCreator*)(cm->getObject("Window")))(l, t, w, h);
		s = ((ImageRenderer*)(cm->getObject("ImageRenderer")))(
				(char*)(DATA_PREFIX_PATH "/share/ginga/img/roller/loading.png"));
#else
		bg = new DFBWindow(l, t, w, h);
		s = ImagePlayer::renderImage(
				DATA_PREFIX_PATH "/share/ginga/img/roller/loading.png");
#endif

		bg->setCaps(bg->getCap("ALPHACHANNEL"));
		bg->draw();
		bg->show();
		bg->raiseToTop();

		bg->renderFrom(s);

		delete s;
		s = NULL;

#if HAVE_COMPSUPPORT
		bottom = ((WindowCreator*)(cm->getObject("Window")))(
				5, h - 30, w / 2, 30);
#else
		bottom = new DFBWindow(
				5, h - 30, w / 2, 30);
#endif

		bottom->setCaps(bottom->getCap("ALPHACHANNEL"));
		bottom->draw();
		bottom->setBackgroundColor(0, 0, 0, 0);
		bottom->show();
		bottom->raiseToTop();

#if HAVE_COMPSUPPORT
		top = ((WindowCreator*)(cm->getObject("Window")))(5, 5, w / 2, 30);
#else
		top = new DFBWindow(5, 5, w / 2, 30);
#endif

		top->setCaps(top->getCap("ALPHACHANNEL"));
		top->draw();
		top->setBackgroundColor(0, 0, 0, 0);
		top->show();
		top->raiseToTop();

		size = mrls->size();
		for (i = 0; i < size; i++) {
			mrlsAux = new vector<string>(*mrls);
			p = createAnimePlayer(mrlsAux);

#if HAVE_COMPSUPPORT
			win = ((WindowCreator*)(cm->getObject("Window")))(
					x[i], y[i], compRollerW, compRollerH);
#else
			win = new DFBWindow(
					x[i], y[i], compRollerW, compRollerH);
#endif

			win->setCaps(win->getCap("ALPHACHANNEL"));
			win->draw();
			win->show();
			win->raiseToTop();

			p->setVoutWindow(win);
			animes->push_back(p);
			roll(mrls);
		}

		delete mrls;
		mrls = NULL;

		for (unsigned int i = 0; i < size; i++) {
			((*animes)[i])->play();
		}
	}
	void CommonCoreManager::startPresentation() {
		int aPid, vPid;

#if HAVE_TUNER && HAVE_TSPARSER && HAVE_DSMCC

		NclPlayerData* data   = NULL;
		StcWrapper* sw        = NULL;
		INetworkInterface* ni = NULL;
		ITSFilter* mavFilter  = NULL;
		IWindow* wmv          = NULL;
		ISurface* s           = NULL;
		ISurface* smv         = NULL;
		//IPlayer* ma           = NULL;
		IPlayer* mv           = NULL;
		string mrlv           = "sbtvd-ts://dvr0.ts";
		//string mrla           = "sbtvd-ts://dvr1.ts";

		data = pem->createNclPlayerData();

		if (fileExists(PREFIX_PATH "/tuner/tuning.png")) {
#if HAVE_COMPSUPPORT
			tuningWindow = ((WindowCreator*)(cm->getObject("Window")))(
					data->x, data->y, data->w, data->h);

			s = ((ImageRenderer*)(cm->getObject("ImageRenderer")))(
					(char*)(PREFIX_PATH "/tuner/tuning.png"));

#else
			tuningWindow = new DFBWindow(data->x, data->y, data->w, data->h);
			s = ImagePlayer::renderImage(
					PREFIX_PATH "/tuner/tuning.png");
#endif

			((IWindow*)tuningWindow)->setCaps(
					((IWindow*)tuningWindow)->getCap("ALPHACHANNEL"));

			((IWindow*)tuningWindow)->draw();
			((IWindow*)tuningWindow)->show();
			((IWindow*)tuningWindow)->lowerToBottom();
			((IWindow*)tuningWindow)->renderFrom(s);

			delete s;
			s = NULL;
		}

#if HAVE_COMPSUPPORT
		wmv = ((WindowCreator*)(cm->getObject("Window")))(
				data->x, data->y, data->w, data->h);

#else
		wmv = new DFBWindow(data->x, data->y, data->w, data->h);
#endif

		wmv->draw();

		delete data;

		((ITuner*)tuner)->tune();
		((IDemuxer*)demuxer)->waitProgramInformation();

		if (ocDelay == 0) {
			((IDataProcessor*)dataProcessor)->
				createStreamTypeSectionFilter(
						STREAM_TYPE_DSMCC_TYPE_B, (IDemuxer*)demuxer);
		}

		pem->setCurrentPrivateBaseId(((IDemuxer*)demuxer)->getTSId());

		if (ocDelay > 0) {
			((IDataProcessor*)dataProcessor)->
					createStreamTypeSectionFilter(
							STREAM_TYPE_DSMCC_TYPE_B, (IDemuxer*)demuxer);

			::usleep((int)(ocDelay * 1000));
		}

#if HAVE_COMPSUPPORT
		mavFilter = ((filterCreator*)(cm->getObject("PipeFilter")))(0);

#else
		mavFilter = new PipeFilter(0);
#endif

		//mavFilter->addDestination(1);

		((IDemuxer*)demuxer)->addPesFilter(PFT_DEFAULTTS, mavFilter);

		// Create Main AV
		cout << "lssm-ccm::sp creating av player" << endl;

#if HAVE_COMPSUPPORT
		mv = ((PlayerCreator*)(cm->getObject("AVPlayer")))(
				mrlv.c_str(), true);

		//ma = ((PlayerCreator*)(cm->getObject("AVPlayer")))(
		//		mrla.c_str(), false);

#else
		mv = new AVPlayer(mrlv.c_str(), true);
		//ma = new AVPlayer(mrla.c_str(), true);
#endif

		//ma->setOutWindow(NULL);
		mv->setOutWindow(wmv);

		cout << "lssm-ccp::sp create av ok" << endl;

		vPid = ((IDemuxer*)demuxer)->getDefaultMainVideoPid();
		aPid = ((IDemuxer*)demuxer)->getDefaultMainAudioPid();

		((IDemuxer*)demuxer)->waitBuffers();
		while (smv == NULL) {
			smv = mv->getSurface();
			::usleep(100000);
		}

		ni = ((ITuner*)tuner)->getCurrentInterface();
		if (ni != NULL && ni->getCaps() & DPC_CAN_DECODESTC) {
			cout << "lssm-ccp::sp using stc hardware!" << endl;
			((IDataProcessor*)dataProcessor)->setSTCProvider(ni);

		} else {
			cout << "lssm-ccp::sp using stc wrapper!" << endl;
			sw = new StcWrapper(mv);
			((IDataProcessor*)dataProcessor)->setSTCProvider(sw);
		}

		nptProvider = ((IDataProcessor*)dataProcessor)->getNPTProvider();
		if (nptProvider != NULL) {
			pem->setTimeBaseProvider((ITimeBaseProvider*)nptProvider);
		}

		/*((IDataProcessor*)dataProcessor)->
				createStreamTypeSectionFilter(
						STREAM_TYPE_DSMCC_TYPE_C, (IDemuxer*)demuxer);*/

		((IDataProcessor*)dataProcessor)->
				createStreamTypeSectionFilter(
						STREAM_TYPE_DSMCC_TYPE_D, (IDemuxer*)demuxer);

		/*((IDataProcessor*)dataProcessor)->
				createPidSectionFilter(
						SDT_PID, (IDemuxer*)demuxer); //SDT

		((IDataProcessor*)dataProcessor)->
				createPidSectionFilter(
						EIT_PID, (IDemuxer*)demuxer); //EIT

		((IDataProcessor*)dataProcessor)->
				createPidSectionFilter(
						CDT_PID, (IDemuxer*)demuxer); //CDT*/

		wmv->show();

		if (tuningWindow != NULL) {
			((IWindow*)tuningWindow)->clearContent();
			((IWindow*)tuningWindow)->hide();
			delete ((IWindow*)tuningWindow);
			tuningWindow = NULL;
		}

		pthread_mutex_t mutex;
		pthread_cond_t condition;

		cout << "lssm ccm::sp cond_wait" << endl;
		pthread_mutex_init(&mutex, NULL);
		pthread_cond_init(&condition, NULL);

		pthread_mutex_lock(&mutex);
		pthread_cond_wait(&condition, &mutex);
		pthread_mutex_unlock(&mutex);

		pthread_mutex_destroy(&mutex);
		pthread_cond_destroy(&condition);

		cout << "lssm ccm::sp all done!" << endl;
#endif //TUNER...
		
		// Activate PEM Connector
		//pem->startConnector();

	}