Ticket #5230: out_add_support_iptv_radio.diff
File out_add_support_iptv_radio.diff, 5.2 KB (added by , 18 years ago) |
---|
-
libs/libmythtv/mpeg/mpegstreamdata.cpp
79 79 _pmt_single_program_num_video(1), 80 80 _pmt_single_program_num_audio(0), 81 81 _pat_single_program(NULL), _pmt_single_program(NULL), 82 _invalid_pat_seen(false), _invalid_pat_warning(false) 82 _invalid_pat_seen(false), _invalid_pat_warning(false), 83 _filter_audio_pid(-1) 83 84 { 84 85 _local_utc_offset = calc_utc_offset(); 85 86 … … 560 561 561 562 if (is_audio) 562 563 { 563 audio_cnt++; 564 audioPIDs.push_back(pid); 564 if (_filter_audio_pid==-1 || _filter_audio_pid==pid) 565 { 566 audio_cnt++; 567 audioPIDs.push_back(pid); 568 } 569 else continue; 565 570 } 566 571 567 572 #ifdef DEBUG_MPEG_RADIO -
libs/libmythtv/mpeg/mpegstreamdata.h
178 178 return -1; 179 179 return *it; 180 180 } 181 182 void SetFilterAudioPid(int filter_audio_pid) 183 { 184 _filter_audio_pid = filter_audio_pid; 185 } 181 186 182 187 // Sections seen 183 188 void SetPATSectionSeen(uint tsid, uint section); … … 374 379 bool _invalid_pat_seen; 375 380 bool _invalid_pat_warning; 376 381 MythTimer _invalid_pat_timer; 382 383 int _filter_audio_pid; 377 384 378 385 protected: 379 386 static const unsigned char bit_sel[8]; -
libs/libmythtv/iptvrecorder.cpp
75 75 Open(); 76 76 77 77 if (_stream_data) 78 _stream_data->Reset(_stream_data->DesiredProgram()); 79 78 { 79 IPTVChannelInfo chaninfo = _channel->GetCurrentChanInfo(); 80 _stream_data->SetFilterAudioPid(chaninfo.audioStartPid()); 81 _stream_data->Reset(_stream_data->DesiredProgram()); 82 } 83 80 84 DTVRecorder::Unpause(); 81 85 82 86 VERBOSE(VB_RECORD, LOC + "Unpause() -- end"); -
libs/libmythtv/iptv/iptvchannelfetcher.cpp
271 273 QString msg = tr("Encountered malformed channel"); 272 274 if (!channum.isEmpty()) 273 275 { 274 chanmap[channum] = info; 276 if (chanmap.contains(channum)) 277 { 278 chanmap["f_" + info.m_freqid] = info; 279 } 280 else 281 { 282 chanmap[channum] = info; 283 } 275 284 276 285 msg = tr("Parsing Channel #%1 : %2 : %3") 277 286 .arg(channum).arg(info.m_name).arg(info.m_url); … … 303 312 304 313 QString name; 305 314 QString xmltvid; 315 int audiostartpid = -1; 306 316 while (true) 307 317 { 308 318 QString line = rawdata.section("\n", lineNum, lineNum); … … 324 334 xmltvid = data.mid(data.find('=')+1); 325 335 } 326 336 } 337 else if (line.startsWith("#EXTVLCOPT:")) 338 { 339 QString cmd = line.mid(line.find(':')+1); 340 if (cmd.startsWith("audio-track-id")) 341 { 342 audiostartpid = line.mid(line.find('=')+1).toInt(); 343 } 344 } 327 345 else 328 346 { 329 347 // Just ignore other comments … … 334 352 if (name.isEmpty()) 335 353 return false; 336 354 QString url = line; 337 info = IPTVChannelInfo(name, url, xmltvid); 355 356 int p1 = url.find("?id="); 357 QString freqId = url.mid(p1+4); 358 info = IPTVChannelInfo(name, url, xmltvid, freqId, audiostartpid); 338 359 return true; 339 360 } 340 361 } -
libs/libmythtv/iptv/iptvchannelinfo.h
15 15 IPTVChannelInfo() : 16 16 m_name(QString::null), 17 17 m_url(QString::null), 18 m_xmltvid(QString::null) {} 19 18 m_xmltvid(QString::null), 19 m_freqid(QString::null), 20 m_audiostartpid(0) {} 21 22 20 23 IPTVChannelInfo(const QString &name, 21 24 const QString &url, 22 const QString &xmltvid) : 23 m_name(name), m_url(url), m_xmltvid(xmltvid) {} 25 const QString &xmltvid, 26 const QString &freqid, 27 int audiostartpid) : 28 m_name(name), m_url(url), m_xmltvid(xmltvid), m_freqid(freqid), m_audiostartpid(audiostartpid) {} 24 29 25 30 bool isValid(void) const 26 31 { 27 32 return !m_name.isEmpty() && !m_url.isEmpty(); 28 33 } 34 35 int audioStartPid() const 36 { 37 return m_audiostartpid; 38 } 29 39 30 40 public: 31 41 QString m_name; 32 42 QString m_url; 33 43 QString m_xmltvid; 44 QString m_freqid; 45 int m_audiostartpid; 34 46 }; 35 47 36 48 typedef QMap<QString,IPTVChannelInfo> fbox_chan_map_t;