From ec2b5e0d17db59dab0902ec7a0cf8bc6ca1c04c7 Mon Sep 17 00:00:00 2001 From: "[CST] Focus" Date: Thu, 23 Sep 2010 15:44:11 +0000 Subject: [PATCH] Testing VBI, new libcoolstream needed git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@796 e54a6e83-5905-42d5-8d5c-058d10e6a962 Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/41234dbfb58fb365734d8861eb7ba99370939593 Author: [CST] Focus Date: 2010-09-23 (Thu, 23 Sep 2010) --- lib/libcoolstream/video_cs.h | 5 +++++ src/driver/vfd.cpp | 6 +++++- src/neutrino.cpp | 9 +++++---- src/zapit/src/descriptors.cpp | 28 ++++++++++++++-------------- src/zapit/src/zapit.cpp | 13 ++++++++++++- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/lib/libcoolstream/video_cs.h b/lib/libcoolstream/video_cs.h index 4e1137acc..186300733 100644 --- a/lib/libcoolstream/video_cs.h +++ b/lib/libcoolstream/video_cs.h @@ -139,6 +139,7 @@ class cVideo bool playing; bool auto_format; int uFormatIndex; + bool vbi_started; bool receivedDRMDelay; bool receivedVideoDelay; @@ -221,6 +222,10 @@ class cVideo void SetVideoMode(analog_mode_t mode); void SetDBDR(int dbdr); void SetAutoModes(int modes[VIDEO_STD_MAX]); + int OpenVBI(int num); + int CloseVBI(void); + int StartVBI(unsigned short pid); + int StopVBI(void); }; #endif diff --git a/src/driver/vfd.cpp b/src/driver/vfd.cpp index 7cfc49f60..0b3c3fa78 100644 --- a/src/driver/vfd.cpp +++ b/src/driver/vfd.cpp @@ -220,7 +220,10 @@ void CVFD::showTime(bool force) { if(!has_lcd) return; - + if(mode == MODE_SHUTDOWN) { + ShowIcon(VFD_ICON_CAM1, false); + return; + } if (showclock) { if (mode == MODE_STANDBY) { char timestr[21]; @@ -450,6 +453,7 @@ void CVFD::setMode(const MODES m, const char * const title) break; case MODE_SHUTDOWN: showclock = false; + Clear(); break; case MODE_STANDBY: #if 0 diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 1cdc0c99f..c44a08c53 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -769,11 +769,11 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.video_csync = configfile.getInt32( "video_csync", 0 ); g_settings.fan_speed = configfile.getInt32( "fan_speed", 1); - if(g_settings.fan_speed < 1) g_settings.fan_speed = 1;//FIXME disable OFF + if(g_settings.fan_speed < 1) g_settings.fan_speed = 1; g_settings.srs_enable = configfile.getInt32( "srs_enable", 0); g_settings.srs_algo = configfile.getInt32( "srs_algo", 1); - g_settings.srs_ref_volume = configfile.getInt32( "srs_ref_volume", 40);//FIXME + g_settings.srs_ref_volume = configfile.getInt32( "srs_ref_volume", 40); g_settings.srs_nmgr_enable = configfile.getInt32( "srs_nmgr_enable", 0); g_settings.hdmi_dd = configfile.getInt32( "hdmi_dd", 0); g_settings.spdif_dd = configfile.getInt32( "spdif_dd", 1); @@ -870,7 +870,7 @@ int CNeutrinoApp::loadSetup(const char * fname) //widget settings g_settings.widget_fade = false; - g_settings.widget_fade = configfile.getBool("widget_fade" , false );//FIXME not work yet + g_settings.widget_fade = configfile.getBool("widget_fade" , false ); //colors (neutrino defaultcolors) g_settings.menu_Head_alpha = configfile.getInt32( "menu_Head_alpha", 0x00 ); @@ -3776,6 +3776,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) if(retcode) { printf("entering off state\n"); mode = mode_off; + //CVFD::getInstance()->ShowText((char *) g_Locale->getText(LOCALE_MAINMENU_SHUTDOWN)); stop_daemons(true); @@ -3877,7 +3878,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) int fspeed = 0; funNotifier->changeNotify(NONEXISTANT_LOCALE, (void *) &fspeed); - CVFD::getInstance()->ShowText((char *) "Rebooting..."); + //CVFD::getInstance()->ShowText((char *) g_Locale->getText(LOCALE_MAINMENU_REBOOT)); delete frameBuffer; stop_daemons(); diff --git a/src/zapit/src/descriptors.cpp b/src/zapit/src/descriptors.cpp index 515728551..0babc26ff 100644 --- a/src/zapit/src/descriptors.cpp +++ b/src/zapit/src/descriptors.cpp @@ -505,15 +505,15 @@ void service_descriptor(const unsigned char * const buffer, const t_service_id s found_channels++; eventServer->sendEvent ( CZapitClient::EVT_SCAN_NUM_CHANNELS, CEventServer::INITID_ZAPIT, &found_channels, sizeof(found_channels)); - t_channel_id channel_id; - tallchans_iterator I; - int i = 0; - freq_id_t freq_tmp = freq; - freq -= 2; - for(i = 0;i < 6;i++){ - channel_id = CREATE_CHANNEL_ID64; - I = allchans.find(channel_id); - if (I != allchans.end()) { + t_channel_id channel_id; + tallchans_iterator I; + int i = 0; + freq_id_t freq_tmp = freq; + freq -= 2; + for(i = 0;i < 6;i++){ + channel_id = CREATE_CHANNEL_ID64; + I = allchans.find(channel_id); + if (I != allchans.end()) { //if(strcmp(serviceName.c_str(), I->second.getName().c_str())) { //printf("[scan] ******************************* channel %s (%llx at %d) exist with name %s at %d !!\n", serviceName.c_str(), channel_id, freq, I->second.getName().c_str(), I->second.getFreqId());//FIXME @@ -522,16 +522,16 @@ void service_descriptor(const unsigned char * const buffer, const t_service_id s I->second.setServiceType(real_type); I->second.scrambled = free_ca; channel = &I->second; - break; - } + break; + } } - freq++; + freq++; } transponder_id_t tpid = CREATE_TRANSPONDER_ID_FROM_SATELLITEPOSITION_ORIGINALNETWORK_TRANSPORTSTREAM_ID( freq, satellitePosition, original_network_id, transport_stream_id); if(service_wr) { - freq = freq_tmp; - channel_id = CREATE_CHANNEL_ID64; + freq = freq_tmp; + channel_id = CREATE_CHANNEL_ID64; pair::iterator,bool> ret; DBG("New channel ===== %llx:::%llx %s\n", channel_id, tpid, serviceName.c_str()); //if(freq == 11758 || freq == 11778) printf("New channel ===== %llx:::%llx %s\n", channel_id, tpid, serviceName.c_str()); //FIXME debug diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index e97f080d6..d23565a2f 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -332,6 +332,9 @@ CZapitClient::responseGetLastChannel load_settings(void) static int camask = 1; // demux 0 void start_camd(bool forupdate = false) { + if(!channel) + return; + if(currentMode & RECORD_MODE) { if(rec_channel_id != live_channel_id) { /* zap from rec. channel */ @@ -1951,6 +1954,8 @@ int startPlayBack(CZapitChannel *thisChannel) videoDecoder->Start(0, thisChannel->getPcrPid(), thisChannel->getVideoPid()); videoDemux->Start(); } + if(have_teletext) + videoDecoder->StartVBI(thisChannel->getTeletextPid()); playing = true; @@ -1995,8 +2000,10 @@ in record mode we stop onle cam1, while cam continue to decrypt recording channe audioDecoder->Stop(); } - if (videoDecoder) + if (videoDecoder) { videoDecoder->Stop(standby ? false : true); + videoDecoder->StopVBI(); + } playing = false; @@ -2166,6 +2173,8 @@ int zapit_main_thread(void *data) audioDecoder = new cAudio(audioDemux->getBuffer(), videoDecoder->GetTVEnc(), videoDecoder->GetTVEncSD()); videoDecoder->SetAudioHandle(audioDecoder->GetHandle()); + videoDecoder->OpenVBI(1); + ci = cDvbCi::getInstance(); ci->Init(); @@ -2253,6 +2262,8 @@ int zapit_main_thread(void *data) pthread_join (tsdt, NULL); INFO("shutdown started"); + videoDecoder->CloseVBI(); + if (pcrDemux) delete pcrDemux; if (pmtDemux)