// Constructor usually performs only two simple tasks of filling the two lists // - typeList: with all the possible id of the filtering actions // - actionList with the corresponding actions. If you want to add icons to your filtering actions you can do here by construction the QActions accordingly ExtraSamplePlugin::ExtraSamplePlugin() { typeList << FP_DECOMPOSER; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
FilterOutputOpticalFlowPlugin::FilterOutputOpticalFlowPlugin() { typeList << FP_OUTPUT_OPTICAL_FLOW; foreach( FilterIDType tt , types() ) actionList << new QAction(filterName(tt), this); }
// Constructor usually performs only two simple tasks of filling the two lists // - typeList: with all the possible id of the filtering actions // - actionList with the corresponding actions. If you want to add icons to your filtering actions you can do here by construction the QActions accordingly FilterHarmonicPlugin::FilterHarmonicPlugin() { typeList << FP_SCALAR_HARMONIC_FIELD; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
FilterTopoPlugin::FilterTopoPlugin() { typeList << FP_RE_TOPO; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
void toResultTableData::query(const QString &, toQueryParams const& params) { if (!maybeSave()) return; if (params.size() == 2) { toQueryParams::const_iterator par = params.begin(); Owner = (QString)*par; par++; Table = (QString)*par; } /* Always check, if either is empty, query will fail */ if (Owner.isEmpty() || Table.isEmpty()) { Edit->clearData(); return; } FilterName = filterName(); bool filter = AllFilter || Criteria.contains(FilterName); filterAct->setChecked(filter); toConnection &conn = connection(); QList<QString> priKeys = conn.getTraits().primaryKeys(conn, toCache::ObjectRef(Owner, Table, Owner)); SQL = "SELECT "; Q_FOREACH(QString c, priKeys) { SQL += c + ","; }
ExtraSamplePlugin::ExtraSamplePlugin() { typeList << FP_MOVE_VERTEX; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
FilterCreate::FilterCreate() { typeList <<CR_BOX<< CR_SPHERE<< CR_RANDOM_SPHERE<< CR_ICOSAHEDRON<< CR_DODECAHEDRON<< CR_TETRAHEDRON<<CR_OCTAHEDRON<<CR_CONE<<CR_TORUS; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
SlidingCurvaturePlugin::SlidingCurvaturePlugin() { typeList << FP_COMPUTE_PRINC_CURV_DIR_FROM_SLIDING; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
FilterMutualInfoPlugin::FilterMutualInfoPlugin() { typeList << FP_IMAGE_GLOBALIGN; foreach(FilterIDType tt , types()) actionList << new QAction(filterName(tt), this); }
void CountrySelectInner::updateFilter(QString filter) { filter = textSearchKey(filter); QStringList f; if (!filter.isEmpty()) { QStringList filterList = filter.split(cWordSplit(), QString::SkipEmptyParts); int l = filterList.size(); f.reserve(l); for (int i = 0; i < l; ++i) { QString filterName = filterList[i].trimmed(); if (filterName.isEmpty()) continue; f.push_back(filterName); } filter = f.join(' '); } if (_filter != filter) { _filter = filter; if (_filter.isEmpty()) { countriesNow = &countriesAll; } else { QChar first = _filter[0].toLower(); CountriesIds &ids(countriesByLetter[first]); QStringList::const_iterator fb = f.cbegin(), fe = f.cend(), fi; countriesFiltered.clear(); for (CountriesIds::const_iterator i = ids.cbegin(), e = ids.cend(); i != e; ++i) { int index = *i; CountryNames &names(countriesNames[index]); CountryNames::const_iterator nb = names.cbegin(), ne = names.cend(), ni; for (fi = fb; fi != fe; ++fi) { QString filterName(*fi); for (ni = nb; ni != ne; ++ni) { if (ni->startsWith(*fi)) { break; } } if (ni == ne) { break; } } if (fi == fe) { countriesFiltered.push_back(countriesAll[index]); } } countriesNow = &countriesFiltered; } refresh(); _sel = countriesNow->isEmpty() ? -1 : 0; update(); } }
/** * \brief Select a filter by name */ void FilterWheel::select(const std::string& filtername) { unsigned int n = nFilters(); for (unsigned int index = 0; index < n; index++) { if (filterName(index) == filtername) { select(index); return; } } try { select(std::stod(filtername)); } catch (...) { } std::string msg = stringprintf("filter named '%s' not found", filtername.c_str()); debug(LOG_DEBUG, DEBUG_LOG, 0, "%s", msg.c_str()); throw std::runtime_error(msg); }
void CountryList::resetList() { countriesNow = &countriesAll; if (lastFilter.length()) { QChar first = lastFilter[0].toLower(); CountriesIds &ids(countriesByLetter[first]); QStringList filterList = lastFilter.split(QRegularExpression("[\\s\\-]"), QString::SkipEmptyParts); int l = filterList.size(); CountryNames filter; filter.reserve(l); for (int i = 0; i < l; ++i) { QString filterName = filterList[i].trimmed(); if (!filterName.length()) continue; filter.push_back(filterName); } CountryNames::const_iterator fb = filter.cbegin(), fe = filter.cend(), fi; countriesFiltered.clear(); for (CountriesIds::const_iterator i = ids.cbegin(), e = ids.cend(); i != e; ++i) { int index = *i; CountryNames &names(countriesNames[index]); CountryNames::const_iterator nb = names.cbegin(), ne = names.cend(), ni; for (fi = fb; fi != fe; ++fi) { QString filterName(*fi); for (ni = nb; ni != ne; ++ni) { if (ni->startsWith(*fi)) { break; } } if (ni == ne) { break; } } if (fi == fe) { countriesFiltered.push_back(countriesAll[index]); } } countriesNow = &countriesFiltered; } resize(width(), countriesNow->length() ? (countriesNow->length() * _st.rowHeight + 2 * _st.verticalMargin) : parentWidget()->height()); setSelected(0); }
void UEJetAreaHistograms::fill( vector<UEJetWithArea>& theJets, TClonesArray& acceptedTriggers ) { // cout << "UEJetAreaHistograms::fill( vector<UEJetWithArea>& theJets, TClonesArray& acceptedTriggers )" << endl; /// /// Histo filler for reco-only analysis /// HL trigger bits *are* available /// /// /// 11 HLT bits : /// 4 Min-Bias (Pixel, Hcal, Ecal, general), Zero-Bias, 6 Jet (30, 50, 80, 110, 180, 250) /// unsigned int iHLTbit(0); for ( ; iHLTbit<11; ++iHLTbit ) { /// /// ask if trigger was accepted /// bool hltAccept( false ); unsigned int nAcceptedTriggers( acceptedTriggers.GetSize() ); for ( unsigned int itrig(0); itrig<nAcceptedTriggers; ++itrig ) { std::string filterName( acceptedTriggers.At(itrig)->GetName() ); if ( filterName == HLTBitNames[iHLTbit] ) hltAccept = true; } if ( ! hltAccept ) continue; Double_t ptarray [ theJets.size() ]; Double_t areaarray[ theJets.size() ]; Double_t ptByArea [ theJets.size() ]; for ( unsigned int ijet(0); ijet < theJets.size(); ++ijet ) { double pTLeadingJet ( theJets[0].GetMomentum()->Pt() ); double pTJet ( theJets[ijet].GetMomentum()->Pt() ); double etaJet ( theJets[ijet].GetMomentum()->Eta() ); double areaJet( theJets[ijet].GetArea() ); ptarray [ijet] = pTJet; areaarray[ijet] = areaJet; ptByArea [ijet] = pTJet / areaJet; unsigned int nConstituents( theJets[ijet].GetNConstituents() ); h_pTAllJets [iHLTbit]->Fill( pTJet ); h_etaAllJets [iHLTbit]->Fill( etaJet ); h_areaAllJets [iHLTbit]->Fill( areaJet ); h_ptByAreaAllJets [iHLTbit]->Fill( ptByArea[ijet] ); h_nConstituentsAllJets[iHLTbit]->Fill( nConstituents ); h2d_pTAllJets_vs_pTjet [iHLTbit]->Fill( pTLeadingJet, pTJet ); h2d_areaAllJets_vs_pTjet [iHLTbit]->Fill( pTLeadingJet, areaJet ); h2d_ptByAreaAllJets_vs_pTjet [iHLTbit]->Fill( pTLeadingJet, ptByArea[ijet] ); h2d_nConstituentsAllJets_vs_pTjet[iHLTbit]->Fill( pTLeadingJet, nConstituents ); /// /// histograms for leading jet /// if ( ijet == 0 ) { h_pTJet [iHLTbit]->Fill( pTJet ); h_etaJet [iHLTbit]->Fill( etaJet ); h_areaJet [iHLTbit]->Fill( areaJet ); h_ptByAreaJet [iHLTbit]->Fill( ptByArea[ijet] ); h_nConstituentsJet[iHLTbit]->Fill( nConstituents ); h2d_areaJet_vs_pTjet [iHLTbit]->Fill( pTJet, areaJet ); h2d_ptByAreaJet_vs_pTjet [iHLTbit]->Fill( pTJet, ptByArea[ijet] ); h2d_nConstituentsJet_vs_pTjet[iHLTbit]->Fill( pTJet, nConstituents ); } } double medianPt ( TMath::Median( theJets.size(), areaarray ) ); double medianArea ( TMath::Median( theJets.size(), ptarray ) ); double medianPtPerArea( TMath::Median( theJets.size(), ptByArea ) ); h_medianPt [iHLTbit]->Fill( medianArea ); h_medianArea [iHLTbit]->Fill( medianPt ); h_medianPtByArea[iHLTbit]->Fill( medianPtPerArea ); h2d_medianPt_vs_pTjet [iHLTbit]->Fill( ptarray[0], medianPt ); h2d_medianArea_vs_pTjet [iHLTbit]->Fill( ptarray[0], medianArea ); h2d_medianPtByArea_vs_pTjet[iHLTbit]->Fill( ptarray[0], medianPtPerArea ); } }
void BatchProcessing::ThreadHandler(void *args) { SetThreadName("orka:batch"); CStdString debug; CStdString logMsg; CStdString processorName("BatchProcessing"); TapeProcessorRef batchProcessing = TapeProcessorRegistry::instance()->GetNewTapeProcessor(processorName); if(batchProcessing.get() == NULL) { LOG4CXX_ERROR(LOG.batchProcessingLog, "Could not instanciate BatchProcessing"); return; } BatchProcessing* pBatchProcessing = (BatchProcessing*)(batchProcessing->Instanciate().get()); pBatchProcessing->SetQueueSize(CONFIG.m_batchProcessingQueueSize); int threadId = 0; { MutexSentinel sentinel(pBatchProcessing->m_mutex); threadId = pBatchProcessing->m_threadCount++; } CStdString threadIdString = IntToString(threadId); debug.Format("thread Th%s starting - queue size:%d", threadIdString, CONFIG.m_batchProcessingQueueSize); LOG4CXX_INFO(LOG.batchProcessingLog, debug); bool stop = false; for(;stop == false;) { AudioFileRef fileRef; AudioFileRef outFileRef, outFileSecondaryRef; AudioTapeRef audioTapeRef; CStdString trackingId = "[no-trk]"; try { audioTapeRef = pBatchProcessing->m_audioTapeQueue.pop(); if(audioTapeRef.get() == NULL) { if(Daemon::Singleton()->IsStopping()) { stop = true; } if(Daemon::Singleton()->GetShortLived()) { Daemon::Singleton()->Stop(); } } else { fileRef = audioTapeRef->GetAudioFileRef(); trackingId = audioTapeRef->m_trackingId; audioTapeRef->m_audioOutputPath = CONFIG.m_audioOutputPath; // Let's work on the tape we have pulled //CStdString threadIdString = IntToString(threadId); LOG4CXX_INFO(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " processing " + audioTapeRef->GetIdentifier() + " localside:" + CaptureEvent::LocalSideToString(audioTapeRef->m_localSide) + " audiokeepdirection:" + CaptureEvent::AudioKeepDirectionToString(audioTapeRef->m_audioKeepDirectionEnum)); if(audioTapeRef->m_audioKeepDirectionEnum == CaptureEvent::AudioKeepDirectionInvalid) { LOG4CXX_WARN(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " invalid audiokeepdirection:" + IntToString(audioTapeRef->m_audioKeepDirectionEnum)); } //fileRef->MoveOrig(); // #### could do this only when original and output file have the same extension. Irrelevant for now as everything is captured as mcf file fileRef->Open(AudioFile::READ); AudioChunkRef chunkRef; AudioChunkRef tmpChunkRef, tmpChunkSecondaryRef; unsigned int frameSleepCounter; frameSleepCounter = 0; switch(CONFIG.m_storageAudioFormat) { case FfUlaw: outFileRef.reset(new LibSndFileFile(SF_FORMAT_ULAW | SF_FORMAT_WAV)); break; case FfAlaw: outFileRef.reset(new LibSndFileFile(SF_FORMAT_ALAW | SF_FORMAT_WAV)); break; case FfGsm: outFileRef.reset(new LibSndFileFile(SF_FORMAT_GSM610 | SF_FORMAT_WAV)); break; case FfPcmWav: default: outFileRef.reset(new LibSndFileFile(SF_FORMAT_PCM_16 | SF_FORMAT_WAV)); } if(CONFIG.m_stereoRecording == true) { outFileRef->SetNumOutputChannels(2); } FilterRef rtpMixer, rtpMixerSecondary; FilterRef decoder1; FilterRef decoder2; FilterRef decoder; FilterRef audiogain; std::bitset<RTP_PAYLOAD_TYPE_MAX> seenRtpPayloadTypes; std::vector<FilterRef> decoders1; std::vector<FilterRef> decoders2; for(int pt=0; pt<RTP_PAYLOAD_TYPE_MAX; pt++) { decoder1 = FilterRegistry::instance()->GetNewFilter(pt); decoders1.push_back(decoder1); decoder2 = FilterRegistry::instance()->GetNewFilter(pt); decoders2.push_back(decoder2); } bool firstChunk = true; bool voIpSession = false; size_t numSamplesS1 = 0; size_t numSamplesS2 = 0; size_t numSamplesOut = 0; CStdString filterName("AudioGain"); audiogain = FilterRegistry::instance()->GetNewFilter(filterName); if(audiogain.get() == NULL) { debug = "Could not instanciate AudioGain rtpMixer"; throw(debug); } bool forceChannel1 = false; while(fileRef->ReadChunkMono(chunkRef)) { // ############ HACK //ACE_Time_Value yield; //yield.set(0,1); //ACE_OS::sleep(yield); // ############ HACK AudioChunkDetails details = *chunkRef->GetDetails(); int channelToSkip = 0; if(CONFIG.m_directionLookBack == true) //if DirectionLookBack is not enable, DirectionSelector Tape should have taken care everything { if(BatchProcessing::SkipChunk(audioTapeRef, chunkRef, channelToSkip) == true) { LOG4CXX_DEBUG(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " skipping chunk of channel:" + IntToString(details.m_channel)); if(forceChannel1 == false) { if(channelToSkip == 1) { forceChannel1 = true; } } continue; } } if(forceChannel1 == true) { details.m_channel = 1; chunkRef->SetDetails(&details); } decoder.reset(); if(details.m_rtpPayloadType < -1 || details.m_rtpPayloadType >= RTP_PAYLOAD_TYPE_MAX) { logMsg.Format("RTP payload type out of bound:%d", details.m_rtpPayloadType); LOG4CXX_DEBUG(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " " + logMsg); continue; } // Instanciate any decoder we might need during a VoIP session if(details.m_rtpPayloadType != -1) { voIpSession = true; if(details.m_channel == 2) { decoder2 = decoders2.at(details.m_rtpPayloadType); decoder = decoder2; } else { decoder1 = decoders1.at(details.m_rtpPayloadType); decoder = decoder1; } bool ptAlreadySeen = seenRtpPayloadTypes.test(details.m_rtpPayloadType); seenRtpPayloadTypes.set(details.m_rtpPayloadType); if(decoder.get() == NULL) { if(ptAlreadySeen == false) { // First time we see a particular unsupported payload type in this session, log it CStdString rtpPayloadType = IntToString(details.m_rtpPayloadType); LOG4CXX_ERROR(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " unsupported RTP payload type:" + rtpPayloadType); } // We cannot decode this chunk due to unknown codec, go to next chunk continue; } else if(ptAlreadySeen == false) { // First time we see a particular supported payload type in this session, log it CStdString rtpPayloadType = IntToString(details.m_rtpPayloadType); LOG4CXX_INFO(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " RTP payload type:" + rtpPayloadType); } } if(!voIpSession || (firstChunk && decoder.get())) { firstChunk = false; // At this point, we know we have a working codec, create an RTP mixer and open the output file if(voIpSession) { CStdString filterName("RtpMixer"); rtpMixer = FilterRegistry::instance()->GetNewFilter(filterName); if(rtpMixer.get() == NULL) { debug = "Could not instanciate RTP mixer"; throw(debug); } if(CONFIG.m_stereoRecording == true) { rtpMixer->SetNumOutputChannels(2); } rtpMixer->SetSessionInfo(trackingId); //create another rtpmixer to store stereo audio if(CONFIG.m_audioOutputPathSecondary.length() > 3) { outFileSecondaryRef.reset(new LibSndFileFile(SF_FORMAT_PCM_16 | SF_FORMAT_WAV)); outFileSecondaryRef->SetNumOutputChannels(2); rtpMixerSecondary = FilterRegistry::instance()->GetNewFilter(filterName); if(rtpMixerSecondary.get() == NULL) { debug = "Could not instanciate RTP mixer"; throw(debug); } rtpMixerSecondary->SetNumOutputChannels(2); rtpMixerSecondary->SetSessionInfo(trackingId); } } CStdString path = audioTapeRef->m_audioOutputPath + "/" + audioTapeRef->GetPath(); FileRecursiveMkdir(path, CONFIG.m_audioFilePermissions, CONFIG.m_audioFileOwner, CONFIG.m_audioFileGroup, audioTapeRef->m_audioOutputPath); CStdString file = path + "/" + audioTapeRef->GetIdentifier(); outFileRef->Open(file, AudioFile::WRITE, false, fileRef->GetSampleRate()); if(CONFIG.m_audioOutputPathSecondary.length() > 3) { path = CONFIG.m_audioOutputPathSecondary + "/" + audioTapeRef->GetPath(); FileRecursiveMkdir(path, CONFIG.m_audioFilePermissions, CONFIG.m_audioFileOwner, CONFIG.m_audioFileGroup, CONFIG.m_audioOutputPathSecondary); CStdString storageFile = path + "/" + audioTapeRef->GetIdentifier(); outFileSecondaryRef->Open(storageFile, AudioFile::WRITE, false, fileRef->GetSampleRate()); } } if(voIpSession) { if(details.m_channel == 2) { decoder2->AudioChunkIn(chunkRef); decoder2->AudioChunkOut(tmpChunkRef); if(tmpChunkRef.get()) { numSamplesS2 += tmpChunkRef->GetNumSamples(); } if(rtpMixerSecondary.get() != NULL) { decoder2->AudioChunkOut(tmpChunkSecondaryRef); } } else { decoder1->AudioChunkIn(chunkRef); decoder1->AudioChunkOut(tmpChunkRef); if(tmpChunkRef.get()) { numSamplesS1 += tmpChunkRef->GetNumSamples(); } if(rtpMixerSecondary.get() != NULL) { decoder1->AudioChunkOut(tmpChunkSecondaryRef); } } audiogain->AudioChunkIn(tmpChunkRef); audiogain->AudioChunkOut(tmpChunkRef); rtpMixer->AudioChunkIn(tmpChunkRef); rtpMixer->AudioChunkOut(tmpChunkRef); if(rtpMixerSecondary.get() != NULL) { rtpMixerSecondary->AudioChunkIn(tmpChunkSecondaryRef); rtpMixerSecondary->AudioChunkOut(tmpChunkSecondaryRef); } } else { audiogain->AudioChunkIn(tmpChunkRef); audiogain->AudioChunkOut(tmpChunkRef); } outFileRef->WriteChunk(tmpChunkRef); if(rtpMixerSecondary.get() != NULL) { outFileSecondaryRef->WriteChunk(tmpChunkSecondaryRef); } if(tmpChunkRef.get()) { numSamplesOut += tmpChunkRef->GetNumSamples(); } if(CONFIG.m_batchProcessingEnhancePriority == false) { // Give up CPU between every audio buffer to make sure the actual recording always has priority //ACE_Time_Value yield; //yield.set(0,1); // 1 us //ACE_OS::sleep(yield); // Use this instead, even if it still seems this holds the whole process under Linux instead of this thread only. struct timespec ts; ts.tv_sec = 0; ts.tv_nsec = 1; ACE_OS::nanosleep (&ts, NULL); } if(CONFIG.m_transcodingSleepEveryNumFrames > 0 && CONFIG.m_transcodingSleepUs > 0) { if(frameSleepCounter >= (unsigned int)CONFIG.m_transcodingSleepEveryNumFrames) { frameSleepCounter = 0; struct timespec ts; ts.tv_sec = 0; ts.tv_nsec = CONFIG.m_transcodingSleepUs*1000; ACE_OS::nanosleep (&ts, NULL); } else { frameSleepCounter += 1; } } } if(voIpSession && !firstChunk) { // Flush the RTP mixer AudioChunkRef stopChunk(new AudioChunk()); stopChunk->GetDetails()->m_marker = MEDIA_CHUNK_EOS_MARKER; rtpMixer->AudioChunkIn(stopChunk); rtpMixer->AudioChunkOut(tmpChunkRef); if(rtpMixerSecondary.get() != NULL) { rtpMixerSecondary->AudioChunkOut(tmpChunkSecondaryRef); } while(tmpChunkRef.get()) { outFileRef->WriteChunk(tmpChunkRef); numSamplesOut += tmpChunkRef->GetNumSamples(); rtpMixer->AudioChunkOut(tmpChunkRef); } while(tmpChunkSecondaryRef.get()) { outFileSecondaryRef->WriteChunk(tmpChunkSecondaryRef); rtpMixerSecondary->AudioChunkOut(tmpChunkSecondaryRef); } } fileRef->Close(); outFileRef->Close(); if(rtpMixerSecondary.get() != NULL) { outFileSecondaryRef->Close(); } logMsg.Format("[%s] Th%s stop: num samples: s1:%u s2:%u out:%u queueSize:%d", trackingId, threadIdString, numSamplesS1, numSamplesS2, numSamplesOut, pBatchProcessing->m_audioTapeQueue.numElements()); LOG4CXX_INFO(LOG.batchProcessingLog, logMsg); CStdString audioFilePath = audioTapeRef->m_audioOutputPath + "/" + audioTapeRef->GetPath(); CStdString audioFileName; CStdString storageFilePath, storageFileName; if(CONFIG.m_audioOutputPathSecondary.length() > 3) { storageFilePath = CONFIG.m_audioOutputPathSecondary + "/" + audioTapeRef->GetPath(); storageFileName = storageFilePath + "/" + audioTapeRef->GetIdentifier() + outFileRef->GetExtension(); } audioFileName = audioFilePath + "/" + audioTapeRef->GetIdentifier() + outFileRef->GetExtension(); if(CONFIG.m_audioFilePermissions) { if(FileSetPermissions(audioFileName, CONFIG.m_audioFilePermissions)) { CStdString logMsg; logMsg.Format("Error setting permissions of %s to %o: %s", audioFileName.c_str(), CONFIG.m_audioFilePermissions, strerror(errno)); LOG4CXX_ERROR(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " " + logMsg); } if(storageFileName.length() > 5) { if(FileSetPermissions(storageFileName, CONFIG.m_audioFilePermissions)) { CStdString logMsg; logMsg.Format("Error setting permissions of %s to %o: %s", storageFileName.c_str(), CONFIG.m_audioFilePermissions, strerror(errno)); LOG4CXX_ERROR(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " " + logMsg); } } } if(CONFIG.m_audioFileGroup.size() && CONFIG.m_audioFileOwner.size()) { if(FileSetOwnership(audioFileName, CONFIG.m_audioFileOwner, CONFIG.m_audioFileGroup)) { logMsg.Format("Error setting ownership and group of %s to %s:%s: %s", audioFileName.c_str(), CONFIG.m_audioFileOwner, CONFIG.m_audioFileGroup, strerror(errno)); LOG4CXX_ERROR(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " " + logMsg); } if(storageFileName.length() > 5) { if(FileSetOwnership(storageFileName, CONFIG.m_audioFileOwner, CONFIG.m_audioFileGroup)) { logMsg.Format("Error setting ownership and group of %s to %s:%s: %s", storageFileName.c_str(), CONFIG.m_audioFileOwner, CONFIG.m_audioFileGroup, strerror(errno)); LOG4CXX_ERROR(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " " + logMsg); } } } if(CONFIG.m_deleteNativeFile && numSamplesOut) { fileRef->Delete(); LOG4CXX_INFO(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " deleting native: " + audioTapeRef->GetIdentifier()); } else if(CONFIG.m_deleteFailedCaptureFile) { fileRef->Delete(); if(outFileRef.get()) { outFileRef->Close(); outFileRef->Delete(); } LOG4CXX_INFO(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " deleting native that could not be transcoded: " + audioTapeRef->GetIdentifier()); } // Finished processing the tape, pass on to next processor if(numSamplesOut) { pBatchProcessing->RunNextProcessor(audioTapeRef); } } } catch (CStdString& e) { LOG4CXX_ERROR(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " " + e); if(fileRef.get()) {fileRef->Close();} if(outFileRef.get()) {outFileRef->Close();} if(CONFIG.m_deleteFailedCaptureFile && fileRef.get() != NULL) { LOG4CXX_INFO(LOG.batchProcessingLog, "[" + trackingId + "] Th" + threadIdString + " deleting native and transcoded"); if(fileRef.get()) {fileRef->Delete();} if(outFileRef.get()) {outFileRef->Delete();} } } //catch(...) //{ // LOG4CXX_ERROR(LOG.batchProcessingLog, CStdString("unknown exception")); //} } LOG4CXX_INFO(LOG.batchProcessingLog, CStdString("Exiting thread Th" + threadIdString)); }
void ContactsInner::updateFilter(QString filter) { filter = textSearchKey(filter); QStringList f; if (!filter.isEmpty()) { QStringList filterList = filter.split(cWordSplit(), QString::SkipEmptyParts); int l = filterList.size(); f.reserve(l); for (int i = 0; i < l; ++i) { QString filterName = filterList[i].trimmed(); if (filterName.isEmpty()) continue; f.push_back(filterName); } filter = f.join(' '); } if (_filter != filter) { int32 rh = (st::profileListPhotoSize + st::profileListPadding.height() * 2); _filter = filter; if (_filter.isEmpty()) { if (_contacts->list.count) { if (!_addContactLnk.isHidden()) _addContactLnk.hide(); resize(width(), _contacts->list.count * rh + st::contactsClose.height); _sel = _contacts->list.begin; } else { resize(width(), st::noContactsHeight); if (cContactsReceived()) { if (_addContactLnk.isHidden()) _addContactLnk.show(); } else { if (!_addContactLnk.isHidden()) _addContactLnk.hide(); } } } else { if (!_addContactLnk.isHidden()) _addContactLnk.hide(); QStringList::const_iterator fb = f.cbegin(), fe = f.cend(), fi; _filtered.clear(); if (!f.isEmpty()) { DialogsList *dialogsToFilter = 0; if (_contacts->list.count) { for (fi = fb; fi != fe; ++fi) { DialogsIndexed::DialogsIndex::iterator i = _contacts->index.find(fi->at(0)); if (i == _contacts->index.cend()) { dialogsToFilter = 0; break; } if (!dialogsToFilter || dialogsToFilter->count > i.value()->count) { dialogsToFilter = i.value(); } } } if (dialogsToFilter && dialogsToFilter->count) { _filtered.reserve(dialogsToFilter->count); for (DialogRow *i = dialogsToFilter->begin, *e = dialogsToFilter->end; i != e; i = i->next) { const PeerData::Names &names(i->history->peer->names); PeerData::Names::const_iterator nb = names.cbegin(), ne = names.cend(), ni; for (fi = fb; fi != fe; ++fi) { QString filterName(*fi); for (ni = nb; ni != ne; ++ni) { if (ni->startsWith(*fi)) { break; } } if (ni == ne) { break; } } if (fi == fe) { i->attached = 0; _filtered.push_back(i); } } } } _filteredSel = _filtered.isEmpty() ? -1 : 0; if (!_filtered.isEmpty()) { resize(width(), _filtered.size() * rh + st::contactsClose.height); } else { resize(width(), st::noContactsHeight); } } if (parentWidget()) parentWidget()->update(); loadProfilePhotos(0); } }
void AddParticipantInner::updateFilter(QString filter) { _time = unixtime(); QStringList f; if (!filter.isEmpty()) { QStringList filterList = filter.split(cWordSplit(), QString::SkipEmptyParts); int l = filterList.size(); f.reserve(l); for (int i = 0; i < l; ++i) { QString filterName = filterList[i].trimmed(); if (filterName.isEmpty()) continue; f.push_back(filterName); } filter = f.join(' '); } if (_filter != filter) { int32 rh = (st::profileListPhotoSize + st::profileListPadding.height() * 2); _filter = filter; if (_filter.isEmpty()) { resize(width(), _contacts->list.count * rh); if (_contacts->list.count) { _sel = _contacts->list.begin; while (_sel->next->next &&& contactData(_sel)->inchat) { _sel = _sel->next; } } } else { QStringList::const_iterator fb = f.cbegin(), fe = f.cend(), fi; _filtered.clear(); if (!f.isEmpty()) { DialogsList *dialogsToFilter = 0; if (_contacts->list.count) { for (fi = fb; fi != fe; ++fi) { DialogsIndexed::DialogsIndex::iterator i = _contacts->index.find(fi->at(0)); if (i == _contacts->index.cend()) { dialogsToFilter = 0; break; } if (!dialogsToFilter || dialogsToFilter->count > i.value()->count) { dialogsToFilter = i.value(); } } } if (dialogsToFilter && dialogsToFilter->count) { _filtered.reserve(dialogsToFilter->count); for (DialogRow *i = dialogsToFilter->begin, *e = dialogsToFilter->end; i != e; i = i->next) { const PeerData::Names &names(i->history->peer->names); PeerData::Names::const_iterator nb = names.cbegin(), ne = names.cend(), ni; for (fi = fb; fi != fe; ++fi) { QString filterName(*fi); for (ni = nb; ni != ne; ++ni) { if (ni->startsWith(*fi)) { break; } } if (ni == ne) { break; } } if (fi == fe) { i->attached = 0; _filtered.push_back(i); } } } } _filteredSel = _filtered.isEmpty() ? -1 : 0; while (_filteredSel < _filtered.size() - 1 && contactData(_filtered[_filteredSel])->inchat) { ++_filteredSel; } resize(width(), _filtered.size() * rh); } if (parentWidget()) parentWidget()->update(); loadProfilePhotos(0); } }