# include <dvbpsi/psi.h>
# include <dvbpsi/demux.h>
# include <dvbpsi/sdt.h>
-# include <dvbpsi/nit.h>
#else
# include "dvbpsi.h"
# include "descriptor.h"
# include "psi.h"
# include "demux.h"
# include "sdt.h"
-# include "nit.h"
#endif
#ifdef ENABLE_HTTPD
}
}
+#ifdef DVBPSI_USE_NIT
static void NITCallBack( scan_session_t *p_session, dvbpsi_nit_t *p_nit )
{
vlc_object_t *p_obj = p_session->p_obj;
}
}
}
+#endif
static void PSINewTableCallBack( scan_session_t *p_session, dvbpsi_handle h, uint8_t i_table_id, uint16_t i_extension )
{
if( i_table_id == 0x42 )
dvbpsi_AttachSDT( h, i_table_id, i_extension, (dvbpsi_sdt_callback)SDTCallBack, p_session );
+#ifdef DVBPSI_USE_NIT
else if( i_table_id == 0x40 )
dvbpsi_AttachNIT( h, i_table_id, i_extension, (dvbpsi_nit_callback)NITCallBack, p_session );
+#endif
}
p_session->i_nit_pid = -1;
p_session->sdt = NULL;
p_session->p_sdt = NULL;
+#ifdef DVBPSI_USE_NIT
p_session->nit = NULL;
p_session->p_nit = NULL;
-
+#endif
return VLC_SUCCESS;
}
dvbpsi_pat_t *p_pat = p_session->p_pat;
dvbpsi_sdt_t *p_sdt = p_session->p_sdt;
+
+#ifdef DVBPSI_USE_NIT
dvbpsi_nit_t *p_nit = p_session->p_nit;
+#endif
if( p_pat )
{
}
}
+#ifdef DVBPSI_USE_NIT
/* Parse NIT */
if( p_pat && p_nit )
{
}
}
}
+#endif
/* */
for( int i = i_service_start; i < p_scan->i_service; i++ )
scan_service_t *p_srv = p_scan->pp_service[i];
p_srv->i_snr = p_session->i_snr;
+ if( p_sdt )
+ p_srv->i_sdt_version = p_sdt->i_version;
+#ifdef DVBPSI_USE_NIT
if( p_nit )
{
p_srv->i_network_id = p_nit->i_network_id;
p_srv->i_nit_version = p_nit->i_version;
}
- if( p_sdt )
- p_srv->i_sdt_version = p_sdt->i_version;
+#endif
}
dvbpsi_DetachDemux( p_session->sdt );
if( p_session->p_sdt )
dvbpsi_DeleteSDT( p_session->p_sdt );
+#ifdef DVBPSI_USE_NIT
if( p_session->nit )
dvbpsi_DetachDemux( p_session->nit );
if( p_session->p_nit )
dvbpsi_DeleteNIT( p_session->p_nit );
+#endif
}
static int ScanServiceCmp( const void *a, const void *b )
}
else if( i_pid == p_scan->i_nit_pid )
{
+#ifdef DVBPSI_USE_NIT
if( !p_scan->nit )
p_scan->nit = dvbpsi_AttachDemux( (dvbpsi_demux_new_cb_t)PSINewTableCallBack, p_scan );
if( p_scan->nit )
dvbpsi_PushPacket( p_scan->nit, p_block->p_buffer );
+#endif
}
block_Release( p_block );
- return p_scan->p_pat && p_scan->p_sdt && p_scan->p_nit;
+ return p_scan->p_pat && p_scan->p_sdt &&
+#ifdef DVBPSI_USE_NIT
+ p_scan->p_nit;
+#else
+ true;
+#endif
}
void scan_service_SetSNR( scan_session_t *p_session, int i_snr )
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
+#ifdef HAVE_DVBPSI_DR_H
+#ifdef _DVBPSI_DR_43_H_
+# define DVBPSI_USE_NIT 1
+# include <dvbpsi/nit.h>
+#endif
+#else
+#ifdef _DVBPSI_DR_43_H_
+# define DVBPSI_USE_NIT 1
+# include "nit.h"
+#endif
+#endif
+
+#ifndef DVBPSI_USE_NIT
+# warning NIT is not supported by your libdvbpsi version
+#endif
+
typedef enum
{
SCAN_NONE,
dvbpsi_handle sdt;
dvbpsi_sdt_t *p_sdt;
+#ifdef DVBPSI_USE_NIT
dvbpsi_handle nit;
dvbpsi_nit_t *p_nit;
+#endif
} scan_session_t;