Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Can't increase number of demuxes



Hi,
I modified mplayer so as to
1) always include pid 0 in the stream
2) recognize pid{+pid} syntax in channels.conf.

Kernel is 2.6.3-4mdkcustom.

Unfortunately I stumbled on a strange situation that is blocking me:
I have 2 cards: 0 is nova-sat, 1 is bt8xx-ter.
When I open a channel with N pids on card x, then after a while go to a channel
with M>N pids on the same card then all is fine, but if the new channel is on the other card
nothing comes out of dvr0, yet all open()/ioctl() are successful (return 0).

The PES_SET_FILTER code is:

int dvb_set_ts_filt(int fd, uint16_t pid, dmx_pes_type_t pestype) //always called with DMX_PES_OTHER
{
int i;
struct dmx_pes_filter_params pesFilterParams;

pesFilterParams.pid = pid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
#ifdef HAVE_DVB_HEAD
pesFilterParams.pes_type = pestype;
#else
pesFilterParams.pesType = pestype;
#endif

pesFilterParams.flags = DMX_IMMEDIATE_START;

errno = 0;
if ((i = ioctl(fd, DMX_SET_PES_FILTER, &pesFilterParams)) < 0)
{
mp_msg(MSGT_DEMUX, MSGL_ERR, "ERROR IN SETTING DMX_FILTER %i for fd %d: ERRNO: %d", pid, fd, errno);
return 0;
}

mp_msg(MSGT_DEMUX, MSGL_INFO, "SET PES FILTER ON PID %d to fd %d, RESULT: %d, ERRNO: %d\n", pid, fd, i, errno);
return 1;
}



Is there any limitation of the number of demuxes that I can set/clear (except the maximum of 16) ?

This is a tipical trace:

Latest version available from http://www.linuxstb.org/
DVB_OPEN_DEVICES(5)
OPEN(0): 7, CNT=1
OPEN(1): 8, CNT=2
OPEN(2): 9, CNT=3
OPEN(3): 10, CNT=4
OPEN(4): 11, CNT=5
dvb_tune Freq: 203500000
TUNE_IT, fd_frontend 6, fd_sec 0
freq 203500000, srate 27500000, pol V, tone -1, specInv, diseqc 0, fe_modulation_t modulation,fe_code_rate_t HP_CodeRate, fe_transmit_mode_t TransmissionMode,fe_guard_interval_t guardInterval, fe_bandwidth_t bandwidth
SET PES FILTER ON PID 512 to fd 7, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 513 to fd 8, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 650 to fd 9, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 651 to fd 10, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 0 to fd 11, RESULT: 0, ERRNO: 0
Cache fill: 17,19% (1441792 bytes) TS file format detected.
DEMUX OPEN, AUDIO_ID: -1, VIDEO_ID: -1, SUBTITLE_ID: -1,
PROBING UP TO 512000, PROG: 0
VIDEO MPEG2(pid=512)...AUDIO MPA(pid=650) NO SUBS (yet)! PROGRAM N. 0
Opened TS demuxer, audio: 50(pid 650), video: 10000002(pid 512)...POS=5452
Starting playback...
VDec: vo config request - 544 x 576 (preferred csp: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1,33:1 - prescaling to correct movie aspect.
VO: [xv] 544x576 => 768x576 Planar YV12
(demuxes stopped)
dvb_streaming_read, attempt N. 6 failed with errno 0 when reading 1364 bytes
dvb_streaming_read, attempt N. 1 failed with errno 0 when reading 4096 bytes
dvb_streaming_read, return 0 bytes
DVBIN_CLOSE, close(4), fd=11, COUNT=4
DVBIN_CLOSE, close(3), fd=10, COUNT=3
DVBIN_CLOSE, close(2), fd=9, COUNT=2
DVBIN_CLOSE, close(1), fd=8, COUNT=1
DVBIN_CLOSE, close(0), fd=7, COUNT=0
DVB_OPEN_DEVICES(7)
OPEN(0): 7, CNT=1
OPEN(1): 8, CNT=2
OPEN(2): 9, CNT=3
OPEN(3): 10, CNT=4
OPEN(4): 11, CNT=5
OPEN(5): 12, CNT=6
OPEN(6): 15, CNT=7
dvb_tune Freq: 12111000
TUNE_IT, fd_frontend 6, fd_sec 0
freq 12111000, srate 27500000, pol V, tone -1, specInv, diseqc 0, fe_modulation_t modulation,fe_code_rate_t HP_CodeRate, fe_transmit_mode_t TransmissionMode,fe_guard_interval_t guardInterval, fe_bandwidth_t bandwidth
SET PES FILTER ON PID 351 to fd 7, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 320 to fd 8, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 310 to fd 9, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 352 to fd 10, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 321 to fd 11, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 311 to fd 12, RESULT: 0, ERRNO: 0
SET PES FILTER ON PID 0 to fd 15, RESULT: 0, ERRNO: 0
Successfully enabled DPMS
Cache fill: 0,00% (0 bytes) dvb_streaming_read, attempt N. 6 failed with errno 0 when reading 2048 bytes
Cache fill: 0,00% (0 bytes) dvb_streaming_read, attempt N. 5 failed with errno 0 when reading 2048 bytes
Cache fill: 0,00% (0 bytes) dvb_streaming_read, attempt N. 4 failed with errno 0 when reading 2048 bytes
Cache fill: 0,00% (0 bytes) dvb_streaming_read, attempt N. 3 failed with errno 0 when reading 2048 bytes
Cache fill: 0,00% (0 bytes) dvb_streaming_read, attempt N. 2 failed with errno 0 when reading 2048 bytes
Cache fill: 0,00% (0 bytes) dvb_streaming_read, attempt N. 1 failed with errno 0 when reading 2048 bytes
dvb_streaming_read, return 0 bytes
Cache fill: 0,01% (1116 bytes)
DVBIN_CLOSE, close(6), fd=15, COUNT=6
DVBIN_CLOSE, close(5), fd=12, COUNT=5
DVBIN_CLOSE, close(4), fd=11, COUNT=4
DVBIN_CLOSE, close(3), fd=10, COUNT=3
DVBIN_CLOSE, close(2), fd=9, COUNT=2
DVBIN_CLOSE, close(1), fd=8, COUNT=1
DVBIN_CLOSE, close(0), fd=7, COUNT=0


Thanks,
Nico




Home | Main Index | Thread Index