pipelka / xbmc-addon-xvdr

DISCONTINUED - Standalone XVDR addon for XBMC
GNU General Public License v2.0
43 stars 17 forks source link

Xvdr and vdr-plugin-iptv not sending data to XBMC #64

Closed Louro closed 11 years ago

Louro commented 12 years ago

Hello,

I´m trying to make IPTV plugin work with xvdr and XBMC, but i can't manage to get any picture on XBMC,

The channel changes to IPtv plugin but in XBMC the buffering is stuck at 0%.

Here is some logs http://pastebin.com/QYhqq4Lz

Thanks, Louro

Louro commented 12 years ago

I have looking and making some debugging at the code and found this:

 unsigned int ts_pid = TsPid(buf);

  m_FilterMutex.Lock();
  cTSDemuxer *demuxer = FindStreamDemuxer(ts_pid);
  if (demuxer)
  {
    demuxer->ProcessTSPacket(buf);
  }
  m_FilterMutex.Unlock();

  buf += TS_SIZE;
  size -= TS_SIZE;
  used += TS_SIZE;

The demuxer is always NULL, so we havent created any demuxers...

Louro commented 12 years ago

a bit more debuging

// get cached demuxer data DEBUGLOG("Creating demuxers"); cChannelCache cache = cChannelCache::GetFromCache(uid); if(cache.size() != 0) { DEBUGLOG("Creating demuxers --- Cache != 0"); cache.CreateDemuxers(this); RequestStreamChange(); } else DEBUGLOG("Creating demuxers --- Cache == 0");

The demuxers are not created since the cache.size is always == 0

pipelka commented 12 years ago

Your stream has to be a real transport stream. It must contain PAT/PMT information. Without these tables XVDR is unable to find stream information. I dont know if the iptv plugin is able to create these tables.

Regards, Alex

Louro commented 12 years ago

Hi Alex,

Ya that is the problem IPTV doesn't create PAT or PMT data, i was trying to feed IPTV just a mpegts file that i have created via FFmpeg, but ofc it doesnt contain PAT or PMT, only Video and Audio.. Will need to find a real dump of a TS stream to see if it works after all.

Will report back later.

Louro commented 11 years ago

It just a small report after some more testing

I have used dvbstream to grap a TS from my dvb card and dump it to a .ts file. Then i feed it to IPTV plugin but nothing is happening.

From my syslog i can see that everything goes ok until iptv start buffering and then nothing else happens. While if i use my DVB card, xvdr start scanning PMT packets.

You can find below the two syslog, one for iptv+xvdr and another for dvb+xvdr

Any help pointing on the right direction is very welcome and in advanced thank you so much for your time Alex. PS: I have read some parts of xvdr code, and i need to say, fuc.. that is really good coding.

Regards, Louro

IPTV PLUGING SYSLOG:

[8284] XVDR: -------------------------------------- [8284] XVDR: Channel streaming request: 5 - TV3 [8284] XVDR: Found available device 9 [8284] IPTV: cIptvTransponderParameters::cIptvTransponderParameters(): Parameters=S=0|P=0|F=FILE|U=/media/RAID5/Extra900/testt.ts|A=5 [8284] IPTV: cIptvTransponderParameters::Parse(): s=S=0|P=0|F=FILE|U=/media/RAID5/Extra900/testt.ts|A=5 [8284] IPTV: cIptvDevice::SetChannelDevice(0) [8284] IPTV: cIptvStreamer::Set(): /media/RAID5/Extra900/testt.ts:5 [8284] IPTV: cIptvProtocolFile::Set(): Location=/media/RAID5/Extra900/testt.ts Parameter=5 Index=0 [8284] IPTV: cIptvProtocolFile::CloseFile() [8284] IPTV: cIptvProtocolFile::OpenFile() [8284] IPTV: NAROG:: isActive 0, isempty 0, filelocation /media/RAID5/Extra900/testt.ts [8284] IPTV: cIptvProtocolFile::Open() [8284] IPTV: cIptvProtocolFile::OpenFile() [8284] IPTV: NAROG:: isActive 1, isempty 0, filelocation /media/RAID5/Extra900/testt.ts [8284] XVDR: cStreamdevPatFilter("TV3") [8285] XVDR: LiveQueue started [8284] XVDR: Starting live receiver [8284] XVDR: NAROG:: cLiveReceiver is Activated [8284] XVDR: VDR active, sending stream start message [8286] cLiveStreamer stream processor thread started (pid=8269, tid=8286) [8286] XVDR: Entering function cLiveStreamer::Action [8269] max. latency time 1 seconds [8286] XVDR: returning from streamer thread, receiver is no more attached [8286] cLiveStreamer stream processor thread ended (pid=8269, tid=8286) [8284] XVDR: Creating demuxers [8284] XVDR: Creating demuxers --- Cache == 0 [8284] XVDR: Starting PAT scanner [8284] IPTV: cIptvDevice::SetPid(0) Pid=4297 Type=5 On=1 [8284] IPTV: cIptvDevice::SetPid(0) Pid=4298 Type=6 On=1 [8284] XVDR: NAROG:: cLiveReceiver is Activated [8284] XVDR: VDR active, sending stream start message [8287] cLiveStreamer stream processor thread started (pid=8269, tid=8287) [8287] XVDR: Entering function cLiveStreamer::Action [8284] XVDR: Successfully switched to channel 5 - TV3 [8284] XVDR: Started streaming of channel TV3 (timeout 3 seconds, priority 50) [8288] receiver on device 9 thread started (pid=8269, tid=8288) [8288] IPTV: cIptvDevice::OpenDvr(0) [8288] IPTV: cIptvDevice::ResetBuffering(0) [8288] IPTV: cIptvStreamer::Open() [8288] IPTV: cIptvProtocolFile::Open() [8288] IPTV: cIptvProtocolFile::OpenFile() [8288] IPTV: NAROG:: isActive 1, isempty 0, filelocation /media/RAID5/Extra900/testt.ts [8288] IPTV: cIptvDevice::GetTSPacket(0) [8289] IPTV streamer thread started (pid=8269, tid=8289) [8288] IPTV: cIptvDevice::IsBuffering(1) [8289] IPTV: cIptvStreamer::Action(): Entering [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(1) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(1) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(1) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(1) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(0) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(0) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(0) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(0) [8288] IPTV: cIptvDevice::GetTSPacket(0) [8288] IPTV: cIptvDevice::IsBuffering(0)

XVDR SYSLOG:

[8582] XVDR: -------------------------------------- [8582] XVDR: Channel streaming request: 3 - Euronews [8582] XVDR: Found available device 1 [8583] XVDR: LiveQueue started [8582] XVDR: cStreamdevPatFilter("Euronews") [8582] XVDR: Starting live receiver [8582] XVDR: NAROG:: cLiveReceiver is Activated [8582] XVDR: VDR active, sending stream start message [8584] cLiveStreamer stream processor thread started (pid=8566, tid=8584) [8584] XVDR: Entering function cLiveStreamer::Action [8584] XVDR: returning from streamer thread, receiver is no more attached [8584] cLiveStreamer stream processor thread ended (pid=8566, tid=8584) [8582] XVDR: Creating demuxers [8582] XVDR: Creating demuxers --- Cache == 0 [8582] XVDR: Starting PAT scanner [8582] XVDR: NAROG:: cLiveReceiver is Activated [8582] XVDR: VDR active, sending stream start message [8586] cLiveStreamer stream processor thread started (pid=8566, tid=8586) [8586] XVDR: Entering function cLiveStreamer::Action [8582] XVDR: Successfully switched to channel 3 - Euronews [8582] XVDR: Started streaming of channel Euronews (timeout 3 seconds, priority 50) [8587] receiver on device 1 thread started (pid=8566, tid=8587) [8588] TS buffer on device 1 thread started (pid=8566, tid=8588) [8572] XVDR: PMT scanner adding PID 4297 (ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264)) [8572] XVDR: PMT scanner: adding PID 4298 (ISO/IEC 14496-3 Audio with LATM transport syntax) LATM (por) [8572] XVDR: PMT scanner: adding PID 4555 (ISO/IEC 14496-3 Audio with LATM transport syntax) LATM (eng) [8572] XVDR: NAROG:: Entered cChannelCache::CreateDemuxers [8572] XVDR: Currently unknown new streams found, requesting stream change [8586] XVDR: Entering function cTSDemuxer::ProcessTSPacket [8586] XVDR: sendStreamPacket [8586] XVDR: NAROG:: Writing to stream: 334 [8586] XVDR: Entering function cTSDemuxer::ProcessTSPacket [8586] XVDR: sendStreamPacket [8586] XVDR: NAROG:: Writing to stream: 338 [8586] XVDR: Entering function cTSDemuxer::ProcessTSPacket [8586] XVDR: sendStreamPacket [8586] XVDR: NAROG:: Writing to stream: 23516 [8586] XVDR: Entering function cTSDemuxer::ProcessTSPacket [8586] XVDR: sendStreamPacket [8586] XVDR: NAROG:: Writing to stream: 316 [8586] XVDR: Entering function cTSDemuxer::ProcessTSPacket

dhead666 commented 11 years ago

I believe I'm experiencing the same issue with vdr-plugin-pvrinput.

Louro commented 11 years ago

The problem is solved, after reading almost all the code and understanding it all, lots of hours debugging all came to an end.

Needed to activate SID scanning on IPTV, on livepatfilter.c line295 the comparation: if (Channel && (Channel == m_Channel)), was failing since the channel didn't had the ServiceID set, when vdr starts and IPTV plugin parses the channel information this information is not yet available.

Reading from a full TS file dumped from my DVB card with 10 channels encrypted and free worked without a problem. Also tried the http://www.bigbuckbunny.org/ TS file FULL HD, 100% working. Next step will be to convert a FLV stream from the net to TS using Ffmpeg add feed it to iptv.