Project

General

Profile

Bug #4895

dvbapi and picture freeze

Added by p k over 3 years ago. Updated over 3 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
Category:
Descrambling
Target version:
-
Start date:
2018-01-27
Due date:
% Done:

100%

Estimated time:
Found in version:
4.3-1006~gd381d71e3
Affected Versions:

Description

When watching differentchannels from same mux and using dvbapi with PowerVU decoding, picture freezes if stopping stream in one client.
Steps to reproduce:
1. Start channel on first client
2. Start different channel on second client
3. Stop stream in first client
4. Second stream will freeze after 3 seconds.

Order is important, if stopping second client first then there is no such issue.

I decided to create separate issue for this, same problem is also described here: https://tvheadend.org/issues/3360#note-75
Today I tested it again with latest tvheadend (4.3-1006~gd381d71e3) and r11397 oscam
Logs attached, also there are comments in tvh.log when stream started and when stream stopped.


Files

tvh.log (1.12 MB) tvh.log --trace descrambler,capmt p k, 2018-01-27 10:52
oscam.log (2.29 MB) oscam.log -d 128 p k, 2018-01-27 10:52
tvh.log (2.75 MB) tvh.log --trace descrambler,capmt,mpegts,linuxdvb p k, 2018-01-27 21:13
oscam.log (2.88 MB) oscam.log -d 128 p k, 2018-01-27 21:13
tvheadend.log (1.68 MB) tvheadend.log --trace descrambler,capmt,mpegts,linuxdvb Petar Ivanov, 2018-01-28 04:44

Associated revisions

Revision 9c01ff64 (diff)
Added by Jaroslav Kysela over 3 years ago

linuxdvb: fix the pid management (full mux to pid filter transition), fixes #4895

Revision 57854645 (diff)
Added by Jaroslav Kysela over 3 years ago

linuxdvb: fix the pid management (full mux to pid filter transition), fixes #4895

History

#1

Updated by Jaroslav Kysela over 3 years ago

It's a bit suspicious that there is no log between 11:32:01 and 11:32:15 (tvh). If you do a cut, please, do not cut anything. Add also --trace mpegts,linuxdvb traces.

#2

Updated by p k over 3 years ago

I haven't cut anything, only added comment. Will create new traces with mpegts,linuxdvb when that mux comes back, at the moment it is down (or something).

#3

Updated by Jaroslav Kysela over 3 years ago

Ok, thanks. It looks that the problem is not at the descrambling at all. It appears that some closed PIDs during the streaming causes that other PIDs are not received, too. It might be a fault somewhere in tvh or in the driver.

#4

Updated by p k over 3 years ago

New logs attached, also added few comments to tvh.log.

#5

Updated by Petar Ivanov over 3 years ago

Same bug here:

1. Start channel Discovery Showcase HD Europe
2. Start Science Europe HD on second client
3. Stop stream in Discovery Showcase HD Europe first channel
4. Second stream with Science Europe HD freeze after 3 seconds.

After stop
after this line when stop second channel(Discovery Showcase HD)
here start line:

2018-01-28 05:26:22.423 [   INFO]:subscription: 0004: "HTTP" unsubscribing, hostname="192.168.1.104", client="VLC/2.2.6 LibVLC/2.2.6" 
2018-01-28 05:26:22.423 [  TRACE]:mpegts: table: mux 0x564d10db09a0 destroy pmt 02/FF (2) pid 0CDA (3290)

My logs

#6

Updated by Jaroslav Kysela over 3 years ago

Could you comment those two lines for a test?

diff --git a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c
index 0e75259c6..23bb8e7e3 100644
--- a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c
+++ b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c
@@ -1339,8 +1339,8 @@ linuxdvb_update_pids ( linuxdvb_frontend_t *lfe, const char *name,

   if (all && !linuxdvb_pid_exists(pids, pids_size, MPEGTS_FULLMUX_PID))
     linuxdvb_frontend_open_pid0(lfe, name, pids, pids_size, MPEGTS_FULLMUX_PID);
-  else if (!all && linuxdvb_pid_exists(pids, pids_size, MPEGTS_FULLMUX_PID))
-    linuxdvb_frontend_close_pid0(lfe, name, pids, pids_size, MPEGTS_FULLMUX_PID);
+//  else if (!all && linuxdvb_pid_exists(pids, pids_size, MPEGTS_FULLMUX_PID))
+//    linuxdvb_frontend_close_pid0(lfe, name, pids, pids_size, MPEGTS_FULLMUX_PID);

   mpegts_pid_done(tuned);
   mpegts_pid_weighted(tuned, &lfe->lfe_pids, max);
#7

Updated by Petar Ivanov over 3 years ago

After comment this two lines fixed this bug with both powervu channels, but i dont from when is, but now i can't open more than 5 powervu channels simultaneously, i not updated from many times revision of TVH and after test now can't open more then 5, before i open 8-10 channels same time and not problem.

#8

Updated by p k over 3 years ago

Commenting out these lines fixed this issue for me, I only tried with 2 clients.

#9

Updated by Jaroslav Kysela over 3 years ago

  • Status changed from New to Fixed
  • % Done changed from 0 to 100
#10

Updated by Petar Ivanov over 3 years ago

Jaroslav Kysela wrote:

Applied in changeset tvheadend|9c01ff64ab6190ad397f7ecd105eefefad671d88.

@Jaroslav

this fix partial for me, because when have channels with same Vpid where share same Pids again freeze after stopping firstly started channel, but when comment:

+//  else if (!all && linuxdvb_pid_exists(pids, pids_size, MPEGTS_FULLMUX_PID))
+//    linuxdvb_frontend_close_pid0(lfe, name, pids, pids_size, MPEGTS_FULLMUX_PID);

this line fix also channels with shared same Pids

Also available in: Atom PDF