mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-28 07:51:19 +02:00
Merge remote-tracking branch 'check/cst-next'
needs build- and functional fixes Conflicts: configure.ac data/icons/shutdown.jpg data/icons/start.jpg data/locale/deutsch.locale data/locale/english.locale lib/libmd5sum/md5.c src/driver/scanepg.cpp src/driver/streamts.cpp src/driver/vfd.cpp src/driver/vfd.h src/driver/volume.cpp src/eitd/dmx.cpp src/eitd/xmlutil.cpp src/gui/Makefile.am src/gui/audiomute.cpp src/gui/channellist.cpp src/gui/dboxinfo.cpp src/gui/epgview.cpp src/gui/eventlist.cpp src/gui/filebrowser.cpp src/gui/hdd_menu.cpp src/gui/infoviewer.cpp src/gui/infoviewer_bb.cpp src/gui/infoviewer_bb.h src/gui/keybind_setup.cpp src/gui/luainstance.cpp src/gui/luainstance.h src/gui/miscsettings_menu.cpp src/gui/moviebrowser.cpp src/gui/movieplayer.cpp src/gui/osd_progressbar_setup.cpp src/gui/osd_progressbar_setup.h src/gui/osd_setup.cpp src/gui/osdlang_setup.cpp src/gui/personalize.cpp src/gui/plugins.cpp src/gui/plugins.h src/gui/scan.cpp src/gui/scan_setup.cpp src/gui/update_settings.cpp src/gui/user_menue.cpp src/gui/user_menue_setup.cpp src/gui/videosettings.cpp src/gui/widget/buttons.cpp src/gui/widget/menue.cpp src/gui/widget/menue.h src/gui/widget/progresswindow.cpp src/neutrino.cpp src/neutrino_menue.cpp src/nhttpd/yhttpd.cpp src/system/helpers.cpp src/system/locals.h src/system/locals_intern.h src/system/setting_helpers.cpp src/zapit/lib/zapitclient.cpp src/zapit/src/fastscan.cpp src/zapit/src/frontend.cpp src/zapit/src/getservices.cpp src/zapit/src/scan.cpp src/zapit/src/scannit.cpp src/zapit/src/scanpmt.cpp src/zapit/src/transponder.cpp src/zapit/src/zapit.cpp
This commit is contained in:
@@ -282,7 +282,7 @@ CFrontend * CStreamManager::FindFrontend(CZapitChannel * channel)
|
||||
|
||||
t_channel_id chid = channel->getChannelID();
|
||||
if (CRecordManager::getInstance()->RecordingStatus(chid)) {
|
||||
printf("CStreamManager::Parse: channel %" PRIx64 " recorded, aborting..\n", chid);
|
||||
printf("CStreamManager::%s: channel %" PRIx64 " recorded, aborting..\n", __func__, chid);
|
||||
return frontend;
|
||||
}
|
||||
|
||||
@@ -294,19 +294,22 @@ CFrontend * CStreamManager::FindFrontend(CZapitChannel * channel)
|
||||
|
||||
CFEManager::getInstance()->Lock();
|
||||
|
||||
bool unlock = true;
|
||||
CFEManager::getInstance()->lockFrontend(live_fe);
|
||||
bool unlock = false;
|
||||
if (!IS_WEBTV(live_channel_id)) {
|
||||
unlock = true;
|
||||
CFEManager::getInstance()->lockFrontend(live_fe);
|
||||
}
|
||||
|
||||
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
|
||||
for (streammap_iterator_t it = streams.begin(); it != streams.end(); ++it)
|
||||
frontends.insert(it->second->frontend);
|
||||
frontends.insert(it->second->frontend);
|
||||
|
||||
for (std::set<CFrontend*>::iterator ft = frontends.begin(); ft != frontends.end(); ft++)
|
||||
CFEManager::getInstance()->lockFrontend(*ft);
|
||||
|
||||
frontend = CFEManager::getInstance()->allocateFE(channel, true);
|
||||
|
||||
if (frontend == NULL) {
|
||||
if (unlock && frontend == NULL) {
|
||||
unlock = false;
|
||||
CFEManager::getInstance()->unlockFrontend(live_fe);
|
||||
frontend = CFEManager::getInstance()->allocateFE(channel, true);
|
||||
@@ -315,7 +318,7 @@ CFrontend * CStreamManager::FindFrontend(CZapitChannel * channel)
|
||||
CFEManager::getInstance()->Unlock();
|
||||
|
||||
if (frontend) {
|
||||
bool found = (live_fe != frontend) || SAME_TRANSPONDER(live_channel_id, chid);
|
||||
bool found = (live_fe != frontend) || IS_WEBTV(live_channel_id) || SAME_TRANSPONDER(live_channel_id, chid);
|
||||
bool ret = false;
|
||||
if (found)
|
||||
ret = zapit.zapTo_record(chid) > 0;
|
||||
@@ -410,6 +413,8 @@ bool CStreamManager::Parse(int fd, stream_pids_t &pids, t_channel_id &chid, CFro
|
||||
return false;
|
||||
|
||||
printf("CStreamManager::Parse: channel_id %" PRIx64 " [%s]\n", chid, channel->getName().c_str());
|
||||
if (IS_WEBTV(chid))
|
||||
return false;
|
||||
|
||||
frontend = FindFrontend(channel);
|
||||
if (!frontend) {
|
||||
@@ -436,13 +441,13 @@ void CStreamManager::AddPids(int fd, CZapitChannel *channel, stream_pids_t &pids
|
||||
CGenPsi psi;
|
||||
for (stream_pids_t::iterator it = pids.begin(); it != pids.end(); ++it) {
|
||||
if (*it == channel->getVideoPid()) {
|
||||
printf("CStreamManager::Parse: genpsi vpid %x (%d)\n", *it, channel->type);
|
||||
psi.addPid(*it, channel->type ? EN_TYPE_AVC : EN_TYPE_VIDEO, 0);
|
||||
printf("CStreamManager::AddPids: genpsi vpid %x (%d)\n", *it, channel->type);
|
||||
psi.addPid(*it, channel->type == 1 ? EN_TYPE_AVC : channel->type == 2 ? EN_TYPE_HEVC : EN_TYPE_VIDEO, 0);
|
||||
} else {
|
||||
for (int i = 0; i < channel->getAudioChannelCount(); i++) {
|
||||
if (*it == channel->getAudioChannel(i)->pid) {
|
||||
CZapitAudioChannel::ZapitAudioChannelType atype = channel->getAudioChannel(i)->audioChannelType;
|
||||
printf("CStreamManager::Parse: genpsi apid %x (%d)\n", *it, atype);
|
||||
printf("CStreamManager::AddPids: genpsi apid %x (%d)\n", *it, atype);
|
||||
if (channel->getAudioChannel(i)->audioChannelType == CZapitAudioChannel::EAC3) {
|
||||
psi.addPid(*it, EN_TYPE_AUDIO_EAC3, atype, channel->getAudioChannel(i)->description.c_str());
|
||||
} else {
|
||||
@@ -622,6 +627,21 @@ bool CStreamManager::StopStream(t_channel_id channel_id)
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool CStreamManager::StopStream(CFrontend * fe)
|
||||
{
|
||||
bool ret = false;
|
||||
for (streammap_iterator_t it = streams.begin(); it != streams.end(); ) {
|
||||
if (it->second->frontend == fe) {
|
||||
delete it->second;
|
||||
streams.erase(it++);
|
||||
ret = true;
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool CStreamManager::StreamStatus(t_channel_id channel_id)
|
||||
{
|
||||
bool ret;
|
||||
|
Reference in New Issue
Block a user