Kodi Community Forum

Full Version: 5 minutes xbmc deadlock with vuplus & dm800 after switching on encrypted channel
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Does it normal to have 5 minutes xbmc deadlock with "Waiting" label on the right bottom part of the screen after switching to the scrambled channel on my dm800 ? This channel encripted and dm800 can't open it due to missing subscription. Nevertheless, to wait for 5 minutes is annoing.

see the logs from 19:40 till 19:45 - all this time I couldn't do anything with my xbmc.

http://paste.ubuntu.com/6903888/


ops - my post should be in PVR Help and Support - Other Backends

I couldn't delete this post from PVR Development sub-forum and to move it in http://forum.xbmc.org/forumdisplay.php?fid=173

@Moderators
please move my post in PVR Help and Support - Other Backends
No, it's not normal, it's probably a bug in the addon or something's up with your Dreambox.
how can I help to fix it ? image is based on OpenPLi-4.0-beta-dm800se-20130928-sim2.nfi (but this bug was with other images s well - domica, open pli 2.0)

BTW - the delay between channels switching, which can I see is about 5 seconds (during this 5 seconds I see "Waiting" label.
The option
Quote:<pvr>
<cacheindvdplayer>false</cacheindvdplayer>
</pvr>

didn't help me. Any other advices how to decrease the delay ?
i suspect that this is a problem with the add-on not returning from a call when there's no (valid) data coming in. contact the add-on author about this.
Hi Lars,

the addon just passes the stream URL to XBMC - to me it looks as if XBMC's internal demuxer has problems with receiving an encrypted mpegts stream:

Code:
19:40:24 T:2749958976   DEBUG: CDVDInputStreamPVRManager::Open - stream opened: http://192.168.9.4:8001/1:0:1:6925:7:FFFF:1682E42:0:0:0
19:40:24 T:2749958976  NOTICE: Creating Demuxer
19:40:24 T:2792962880  NOTICE: Thread FileCache start, auto delete: false
19:40:24 T:2749958976   DEBUG: Open - probing detected format [mpegts]
19:40:24 T:2749958976   DEBUG: Open - avformat_find_stream_info starting
19:40:28 T:2996210496   DEBUG: CActiveAE::ClearDiscardedBuffers - buffer pool deleted
19:40:32 T:2931116864   DEBUG: Thread JobWorker 2931116864 terminating (autodelete)
19:40:32 T:2852752192   DEBUG: Thread JobWorker 2852752192 terminating (autodelete)
19:40:53 T:2998004096   DEBUG: SECTION:UnloadDelayed(DLL: libmad.so.0)
19:40:53 T:2998004096   DEBUG: Unloading: libmad.so.0
19:40:54 T:2749958976 WARNING: could not find codec parameters for pvr://channels/tv/All TV channels/1.pvr
19:40:54 T:2749958976   DEBUG: Open - probing detected format [mpegts]
19:40:54 T:2749958976   DEBUG: Open - avformat_find_stream_info starting
19:41:24 T:2749958976 WARNING: could not find codec parameters for pvr://channels/tv/All TV channels/1.pvr
19:41:24 T:2749958976   DEBUG: Open - probing detected format [mpegts]
[...]
19:45:26 T:2749958976 WARNING: could not find codec parameters for pvr://channels/tv/All TV channels/1.pvr
19:45:26 T:2749958976   ERROR: OpenDemuxStream - Error creating demuxer
19:45:26 T:2749958976  NOTICE: CDVDPlayer::OnExit()
19:45:26 T:2749958976  NOTICE: CDVDPlayer::OnExit() deleting input stream
19:45:26 T:2792962880   DEBUG: Thread FileCache 2792962880 terminating
19:45:27 T:2749958976   DEBUG: CDVDInputStreamPVRManager::Close - stream closed
19:45:27 T:2749958976   DEBUG: OnPlayBackStopped : play state was 1, starting 1
19:45:27 T:2749958976   DEBUG: Thread DVDPlayer 2749958976 terminating
19:45:27 T:2998004096   DEBUG: OnPlayBackStopped : play state was 3, starting 0
19:45:27 T:2998004096   DEBUG: CAnnouncementManager - Announcement: OnStop from xbmc

Or what do you think?

Cheers,

Joerg
The addon is supposed to detect that the channel is encrypted and signal that to XBMC.
Then I guess this won't be fixed - AFAIK there is no call to the enigma2 webapi which returns whether a channel is encrypted or not - normally the enigma2 box already decrypts the stream before sending out the data. The addon is not using its own demuxer; I would like it to have one, but unfortunately I simply don't have the skill to programm that Sad So I guess this won't / cannot be fixed...

@Goga777: You say you don't have a valid subscription for the encrypted TV channel. But what's the point of having it in the channel list then?
I watched that channels several weeks ago when I had the subscription, Of course after removing that channel from channels list I will not have the deadlock.
I described something similar recently in this post of VU + / Enigma2 addon thread.
I think it is a ffmpeg problem because all works fine with XBMC DSplayer and DirectShow codecs and filters.
The problem remains because I don´t know how to fix it on devices that don´t work with DirectShow as Ipad, ATV2 or Android.

Regards.
(2014-02-10, 12:23)jdembski Wrote: [ -> ]Hi Lars,

the addon just passes the stream URL to XBMC - to me it looks as if XBMC's internal demuxer has problems with receiving an encrypted mpegts stream:



Or what do you think?

Cheers,

Joerg

It cycles in this loop: https://github.com/xbmc/xbmc/blob/master...r.cpp#L746
Looks like it is only used by backends other than hts and vnsi.
(2014-02-11, 13:17)rivo Wrote: [ -> ]I described something similar recently in this post of VU + / Enigma2 addon thread.
I think it is a ffmpeg problem because all works fine with XBMC DSplayer and DirectShow codecs and filters.
The problem remains because I don´t know how to fix it on devices that don´t work with DirectShow as Ipad, ATV2 or Android.

Regards.

I've reported the same problem a few times. This trac ticket describes it - http://trac.xbmc.org/ticket/14756

It's the "Shared PMT" crap. I don't know if it's part of the DVB standard or not because I can't find any useful information. The solution however is simple but might be difficult to implement: pass the stream PID to the player.

More info about the problem can be found on the following links:
https://trac.videolan.org/vlc/ticket/4264
http://openpli.org/forums/topic/29881-vu...ntry381364

There's reported problems with Polish, French, Italian and Portuguese Sat providers. Might occur with others.

Basically, we have to tell the player the stream PID first or it won't play.

For instance, using VLC this doesn't play:
Code:
#EXTM3U
#EXTVLCOPT--http-reconnect=true
http://192.168.1.5:8001/1:0:1:32B:24:36:CE40000:0:0:0:

But this does:
Code:
#EXTM3U
#EXTVLCOPT--http-reconnect=true
#EXTVLCOPT:program=811
http://192.168.1.5:8001/1:0:1:32B:24:36:CE40000:0:0:0:

In the above stream, 32B is 811

Unfortunately, using *.m3u files instead of the PVR backend doesn't work any better. I believe XBMC's (omx)dvdplayer ignores "#EXTVLCOPT:program=852" and won't open the stream.

@FerneMenta, can you point me the code that handles the stream analysis / re-ordering / etc. I'm no coder but I'm willing to learn.

@ jdembski, can't you look at other add-ons demuxer code and try to make it work with Vu+ PVR? Or ask for a few pointers to other PVR developers.

Anyway, just sharing a bit of information.
@Hudo

THANKS for your answer. At least I see I'm not alone Sad.

For months I searched for a solution.
I've tried different versions of Enigma2 images for my STB, XBMC versions, different devices and I haven't found any solution except DSPlayer XBMC for Windows platform.

Summarize some things I've tried (some already mentioned in the post I linked in my previous post):


- It happens with Vu+/Enigma 2 addon and Tuxbox client. Only with encrypted SAT channels (in my case Spanish and Portuguese), free SAT and DTT (encrypted or not) always work.
- It isn't a smarcard problem because it works with other addons and other clients and I've my own subscription card.
- The streaming to VLC via STB Web Interface (OpenWebIf 0.2.3) works fine.
- Certain channels are always played (very few).
- The usual behavior is when it seems that the selected channel starts playing, the message buffering 0% (or any other number) appears and not change. Xbmc is not locked, you can stop playback, just the selected channel is not shown.
- I've tried other pvr addons like DVBViewer on the same devices (Windows Pc, Ipad, Iphone, ATV2, Android phone) and they works correctly.

Thank you very much.
Yeah, exactly the same problem I have. BTW, the channels only work on VLC if you turn on "Include PMT information on stream" or something like that under Enigma 2 settings. Without it, no go.
Quote:It happens with Vu+/Enigma 2 addon and Tuxbox client. Only with encrypted SAT channels (in my case Spanish and Portuguese), free SAT and DTT (encrypted or not) always work.

in my case it happened only with encrypted SAT channels which my **camd on dm800se can't decode (no subscription).
Others encrypted/open channels don't have a problem.
(2014-02-11, 18:51)rivo Wrote: [ -> ]@Hudo

THANKS for your answer. At least I see I'm not alone Sad.

For months I searched for a solution.
I've tried different versions of Enigma2 images for my STB, XBMC versions, different devices and I haven't found any solution except DSPlayer XBMC for Windows platform.

Summarize some things I've tried (some already mentioned in the post I linked in my previous post):


- It happens with Vu+/Enigma 2 addon and Tuxbox client. Only with encrypted SAT channels (in my case Spanish and Portuguese), free SAT and DTT (encrypted or not) always work.
- It isn't a smarcard problem because it works with other addons and other clients and I've my own subscription card.
- The streaming to VLC via STB Web Interface (OpenWebIf 0.2.3) works fine.
- Certain channels are always played (very few).
- The usual behavior is when it seems that the selected channel starts playing, the message buffering 0% (or any other number) appears and not change. Xbmc is not locked, you can stop playback, just the selected channel is not shown.
- I've tried other pvr addons like DVBViewer on the same devices (Windows Pc, Ipad, Iphone, ATV2, Android phone) and they works correctly.

Thank you very much.

First at all, sorry for my english.

The problem with channels with shared pmt is that ffmpeg tries to demux an incorrect program (service id). The PMT includes all programs of the transponder, but the current version of dvdplayer always use the first program of PMT, so it can play only one channel of the transporder. I have done a small modification in DVDDemuxFFmpeg.cpp in order to select the correct program using the service id included in the URL.

I have tested it in mac OSX and it works (Live TV directly or m3u file). I don't know if this modification causes problems to other add-ons.

Code:
@@ -51,6 +51,7 @@
#include "utils/StringUtils.h"
#include "URL.h"
#include "cores/FFmpeg.h"
+#include "filesystem/PVRFile.h"

void CDemuxStreamAudioFFmpeg::GetStreamInfo(std::string& strInfo)
{
@@ -958,6 +959,49 @@
     else
       m_program = UINT_MAX;

+      //in case of m_program = UINT_MAX and all programs have the same pmt_id we have to select the correct program using the filename (http://host:port//service_reference)
+      
+      if (m_program == UINT_MAX && m_pFormatContext->nb_programs>1)
+      {
+          int pmt_shared=m_pFormatContext->programs[0]->pmt_pid;
+          unsigned int i;
+          for ( i=1; i<m_pFormatContext->nb_programs; i++) {
+              if (m_pFormatContext->programs[i]->pmt_pid!=pmt_shared) break;
+          }
+          if (i == m_pFormatContext->nb_programs) {
+              //This is a stream with shared pmt
+              CLog::Log(LOGDEBUG, "CDVDDemuxFFmpeg::CreateStreams (%s)", m_pFormatContext->filename);
+              CStdString *strurl;
+              std::string transFile = XFILE::CPVRFile::TranslatePVRFilename(m_pFormatContext->filename);
+              if(transFile.substr(0, 6) != "")
+              {
+                  strurl= new CStdString(transFile.c_str());
+              }
+              else
+              {
+                  strurl= new CStdString(m_pFormatContext->filename);
+              }
+              
+              CURL nom (*strurl);
+              
+              CStdString reference=nom.GetFileName();
+              std::vector<std::string> tokens;
+              StringUtils::Tokenize(reference, tokens, ":");
+              int service;
+              sscanf(tokens[3].c_str(),"%x",&service);
+              
+              //search program index with this service
+              for ( i=0; i<m_pFormatContext->nb_programs; i++) {
+                  if (m_pFormatContext->programs[i]->id==service) break;
+              }
+              
+              if (i<m_pFormatContext->nb_programs)
+                  m_program=i;
+          }
+      }
+      
+
+      
     // look for first non empty stream and discard nonselected programs
     for (unsigned int i = 0; i < m_pFormatContext->nb_programs; i++)
     {

I supose that it isn't a "clean" solution, but it works.

Regards.
Pages: 1 2