Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
Louro opened this issue Sep 5, 2012 · 7 comments
Closed

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

Louro opened this issue Sep 5, 2012 · 7 comments

Comments

@Louro
Copy link

Louro commented Sep 5, 2012

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
Copy link
Author

Louro commented Sep 6, 2012

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
Copy link
Author

Louro commented Sep 6, 2012

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
Copy link
Owner

pipelka commented Sep 6, 2012

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
Copy link
Author

Louro commented Sep 6, 2012

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
Copy link
Author

Louro commented Sep 8, 2012

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
Copy link

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

@Louro
Copy link
Author

Louro commented Sep 15, 2012

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants