Ticket #8387: libmythtv.2.patch
File libmythtv.2.patch, 6.4 KB (added by , 14 years ago) |
---|
-
tv_play.h
402 402 QString GetQueuedChanNum(void) const; 403 403 uint GetQueuedChanID(void) const { return queuedChanID; } 404 404 405 void SwitchSource( uint source_direction);405 void SwitchSource(PlayerContext*, uint source_direction); 406 406 void SwitchInputs(PlayerContext*, uint inputid); 407 407 void ToggleInputs(PlayerContext*, uint inputid = 0); 408 408 void SwitchCards(PlayerContext*, -
hdhrstreamhandler.cpp
483 483 484 484 bool HDHRStreamHandler::UpdateFilters(void) 485 485 { 486 if (_tune_mode == hdhrTuneModeFrequency) 487 _tune_mode = hdhrTuneModeFrequencyPid; 488 489 if (_tune_mode != hdhrTuneModeFrequencyPid) 490 { 491 VERBOSE(VB_IMPORTANT, LOC_ERR + "UpdateFilters called in wrong tune mode"); 492 return false; 493 } 494 486 495 #ifdef DEBUG_PID_FILTERS 487 496 VERBOSE(VB_RECORD, LOC + "UpdateFilters()"); 488 497 #endif // DEBUG_PID_FILTERS … … 493 502 vector<uint> range_min; 494 503 vector<uint> range_max; 495 504 496 // FIXME497 // if (_ignore_filters)498 // return true;499 500 505 for (uint i = 0; i < _pid_info.size(); i++) 501 506 { 502 507 uint pid_min = _pid_info[i]; … … 731 736 732 737 bool HDHRStreamHandler::TuneChannel(const QString &chn) 733 738 { 739 _tune_mode = hdhrTuneModeFrequency; 740 734 741 QString current = TunerGet("channel"); 735 736 742 if (current == chn) 737 743 { 738 744 VERBOSE(VB_RECORD, QString(LOC + "Not Re-Tuning channel %1").arg(chn)); … … 746 752 747 753 bool HDHRStreamHandler::TuneProgram(uint mpeg_prog_num) 748 754 { 755 if (_tune_mode == hdhrTuneModeFrequency) 756 _tune_mode = hdhrTuneModeFrequencyProgram; 757 758 if (_tune_mode != hdhrTuneModeFrequencyProgram) 759 { 760 VERBOSE(VB_IMPORTANT, LOC_ERR + "TuneProgram called in wrong tune mode"); 761 return false; 762 } 763 749 764 VERBOSE(VB_RECORD, QString(LOC + "Tuning program %1").arg(mpeg_prog_num)); 750 765 return !TunerSet( 751 766 "program", QString::number(mpeg_prog_num), false).isEmpty(); 752 767 } 768 769 bool HDHRStreamHandler::TuneVChannel(const QString &vchn) 770 { 771 _tune_mode = hdhrTuneModeVChannel; 772 773 VERBOSE(VB_RECORD, QString(LOC + "Tuning vchannel %1").arg(vchn)); 774 return !TunerSet( 775 "vchannel", vchn).isEmpty(); 776 } -
hdhrchannel.cpp
182 182 } 183 183 else 184 184 { 185 VERBOSE(VB_IMPORTANT, LOC_ERR + 186 "dtv_multiplex data is required for tuning"); 185 if (!_stream_handler->TuneVChannel(channum)) 186 { 187 VERBOSE(VB_IMPORTANT, LOC_ERR + 188 "dtv_multiplex data is required for tuning"); 189 return false; 190 } 187 191 188 return false;192 SetSIStandard(si_std); 189 193 } 190 194 } 191 195 else if (!ChangeExternalChannel(freqid)) … … 202 206 QString tmpX = m_curchannelname; tmpX.detach(); 203 207 m_inputs[m_currentInputID]->startChanNum = tmpX; 204 208 205 // Turn on the program filtering if tuning to MPEG stream206 if (mpeg_prog_num && (GetTuningMode() == "mpeg"))207 _stream_handler->TuneProgram(mpeg_prog_num);208 209 209 return true; 210 210 } 211 211 -
tv_play.cpp
4615 4615 else if (has_action("NEXTFAV", actions) && islivetv) 4616 4616 ChangeChannel(ctx, CHANNEL_DIRECTION_FAVORITE); 4617 4617 else if (has_action("NEXTSOURCE", actions) && islivetv) 4618 SwitchSource( kNextSource);4618 SwitchSource(ctx, kNextSource); 4619 4619 else if (has_action("PREVSOURCE", actions) && islivetv) 4620 SwitchSource( kPreviousSource);4620 SwitchSource(ctx, kPreviousSource); 4621 4621 else if (has_action("NEXTINPUT", actions) && islivetv) 4622 4622 ToggleInputs(ctx); 4623 4623 else if (has_action("NEXTCARD", actions) && islivetv) … … 6313 6313 SetMuteTimer(ctx, kMuteTimeout); 6314 6314 } 6315 6315 6316 void TV::SwitchSource( uint source_direction)6316 void TV::SwitchSource(PlayerContext *ctx, uint source_direction) 6317 6317 { 6318 PlayerContext *actx = GetPlayerReadLock(-1, __FILE__, __LINE__);6319 if (!actx->recorder)6320 {6321 ReturnPlayerLock(actx);6322 return;6323 }6324 6318 QMap<uint,InputInfo> sources; 6325 6319 vector<uint> cardids = RemoteRequestFreeRecorderList(); 6326 uint cardid = actx->GetCardID();6320 uint cardid = ctx->GetCardID(); 6327 6321 cardids.push_back(cardid); 6328 6322 stable_sort(cardids.begin(), cardids.end()); 6329 6323 … … 6331 6325 excluded_cardids.push_back(cardid); 6332 6326 6333 6327 InfoMap info; 6334 actx->recorder->GetChannelInfo(info);6328 ctx->recorder->GetChannelInfo(info); 6335 6329 uint sourceid = info["sourceid"].toUInt(); 6336 6330 6337 6331 vector<uint>::const_iterator it = cardids.begin(); … … 6361 6355 6362 6356 if (sit == sources.end()) 6363 6357 { 6364 ReturnPlayerLock(actx);6365 6358 return; 6366 6359 } 6367 6360 … … 6389 6382 6390 6383 if (sit == beg) 6391 6384 { 6392 ReturnPlayerLock(actx);6393 6385 return; 6394 6386 } 6395 6387 6396 6388 switchToInputId = (*sit).inputid; 6397 ReturnPlayerLock(actx);6398 6389 6399 6390 QMutexLocker locker(&timerIdLock); 6400 6391 if (!switchToInputTimerId) -
hdhrstreamhandler.h
27 27 struct hdhomerun_device_t { int dummy; }; 28 28 #endif 29 29 30 enum HDHRTuneMode { 31 hdhrTuneModeNone = 0, 32 hdhrTuneModeFrequency, 33 hdhrTuneModeFrequencyPid, 34 hdhrTuneModeFrequencyProgram, 35 hdhrTuneModeVChannel 36 }; 37 30 38 typedef QMap<uint,int> FilterMap; 31 39 32 40 //#define RETUNE_TIMEOUT 5000 … … 50 58 // Commands 51 59 bool TuneChannel(const QString &chanid); 52 60 bool TuneProgram(uint mpeg_prog_num); 61 bool TuneVChannel(const QString &vchn); 53 62 bool EnterPowerSavingMode(void); 54 63 55 64 … … 91 100 92 101 private: 93 102 hdhomerun_device_t *_hdhomerun_device; 94 uint _tuner;95 QString _devicename;103 uint _tuner; 104 QString _devicename; 96 105 vector<DTVTunerType> _tuner_types; 106 HDHRTuneMode _tune_mode; // debug self check 97 107 98 108 mutable QMutex _start_stop_lock; 99 109 bool _running;