Commit fe98d76a authored by Marian Ďurkovič's avatar Marian Ďurkovič Committed by Christophe Massiot

* dvb.c: Read upto 50 TS packets at once.

We're in non-blocking mode, so the kernel will deliver less than 50
automatically. Note: one DMA cycle might provide upto 350 TS packets
(64 kByte)
parent 309197c4
......@@ -51,6 +51,7 @@
* Local declarations
*****************************************************************************/
#define FRONTEND_LOCK_TIMEOUT 30000000 /* 30 s */
#define MAX_READ_ONCE 50
#define DVR_BUFFER_SIZE 40*188*1024 /* bytes */
static int i_frontend, i_dvr;
......@@ -172,10 +173,9 @@ static block_t *DVRRead( void )
{
int i, i_len;
block_t *p_ts = p_freelist, **pp_current = &p_ts;
int i_read_once = output_Count() * NB_BLOCKS;
struct iovec p_iov[i_read_once];
struct iovec p_iov[MAX_READ_ONCE];
for ( i = 0; i < i_read_once; i++ )
for ( i = 0; i < MAX_READ_ONCE; i++ )
{
if ( (*pp_current) == NULL ) *pp_current = block_New();
p_iov[i].iov_base = (*pp_current)->p_ts;
......@@ -183,7 +183,7 @@ static block_t *DVRRead( void )
pp_current = &(*pp_current)->p_next;
}
if ( (i_len = readv(i_dvr, p_iov, i_read_once)) < 0 )
if ( (i_len = readv(i_dvr, p_iov, MAX_READ_ONCE)) < 0 )
{
msg_Err( NULL, "couldn't read from DVR device (%s)",
strerror(errno) );
......
......@@ -169,18 +169,6 @@ void output_Put( output_t *p_output, block_t *p_block );
void comm_Open( void );
void comm_Read( void );
/*****************************************************************************
* output_Count
*****************************************************************************/
static inline int output_Count( void )
{
int i, i_nb = 0;
for ( i = 0; i < i_nb_outputs; i++ )
if ( pp_outputs[i]->i_config & OUTPUT_VALID )
i_nb++;
return i_nb;
}
/*****************************************************************************
* block_New
*****************************************************************************/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment