Пример #1
0
static void coolapi_read_data(dmx_t *dmx, dmx_callback_data_t *data)
{
	if(!dmx)
	{
		cs_log_dbg(D_DVBAPI, "handle is NULL!");
		return;
	}

	int32_t ret;
	uchar buffer[4096];

	SAFE_SETSPECIFIC(getclient, dvbapi_client);
	SAFE_MUTEX_LOCK(&dmx->mutex);
	memset(buffer, 0, sizeof(buffer));
	ret = coolapi_read(dmx, data, buffer);
	SAFE_MUTEX_UNLOCK(&dmx->mutex);
	
	if(ret > -1) {
		uint16_t filters = data->num;
		uint16_t flt;

		for (flt = 0; flt < filters; flt++) {
			uint32_t n = (uint32_t)data->tags[flt];
			S_COOL_FILTER *filter = find_filter_by_channel(data->channel, n);

			if (!filter || data->filters[flt] != filter->filter)
			{
				cs_log_dbg(D_DVBAPI, "filter not found in notification!!!!");
				continue;
			}

			dvbapi_process_input(dmx->demux_id, n, buffer, data->len);
		}
	}
}
Пример #2
0
void coolapi_read_data(dmx_t * dmx, dmx_callback_data_t * data)
{
	if(!dmx) {
		cs_debug_mask(D_DVBAPI, "handle is NULL!");
		return;
	}

	int32_t ret;

	pthread_setspecific(getclient, dvbapi_client);
	pthread_mutex_lock(&dmx->mutex);
	memset(dmx->buffer,0,4096);
	ret = coolapi_read(dmx, data);
	pthread_mutex_unlock(&dmx->mutex);
	if (ret > -1)
		dvbapi_process_input(dmx->demux_id, dmx->filter_num, dmx->buffer, data->len);
}
Пример #3
0
void coolapi_read_data(int32_t fd, int32_t len)
{
	int32_t ret;
	unsigned char buffer[4096];
	dmx_t * dmx =  find_demux(fd, 0);

	if(!dmx) {
		cs_debug_mask(D_DVBAPI, "handle is NULL!");
		return;
	}
	
	pthread_setspecific(getclient, dvbapi_client);
	pthread_mutex_lock(&dmx->mutex);	
	ret = coolapi_read(dmx->fd, buffer, len);
	pthread_mutex_unlock(&dmx->mutex);
	dvbapi_process_input(dmx->demux_id, dmx->filter_num, buffer, len);
}