Exemple #1
0
// ----------------------------------------------------------------------------
// Constructor.
// ----------------------------------------------------------------------------
Filter::Filter()
{
  fc = 0;

  res = 0;

  filt = 0;

  voice3off = 0;

  hp_bp_lp = 0;

  vol = 0;

  // State of filter.
  Vhp = 0;
  Vbp = 0;
  Vlp = 0;
  Vnf = 0;

  enable_filter(true);

  // Create mappings from FC to cutoff frequency.
  interpolate(f0_points_6581, f0_points_6581
	      + sizeof(f0_points_6581)/sizeof(*f0_points_6581) - 1,
	      PointPlotter<sound_sample>(f0_6581), 1.0);
  interpolate(f0_points_8580, f0_points_8580
	      + sizeof(f0_points_8580)/sizeof(*f0_points_8580) - 1,
	      PointPlotter<sound_sample>(f0_8580), 1.0);

  set_chip_model(MOS6581);
}
RESID_NAMESPACE_START

// ----------------------------------------------------------------------------
// Constructor.
// ----------------------------------------------------------------------------
ExternalFilter::ExternalFilter()
{
  reset();
  enable_filter(true);
  set_sampling_parameter(15915.6);
  set_chip_model(MOS6581);
}
Exemple #3
0
// ----------------------------------------------------------------------------
// Constructor.
// ----------------------------------------------------------------------------
ExternalFilter::ExternalFilter()
{
  reset();
  enable_filter(true);

  // Low-pass:  R = 10 kOhm, C = 1000 pF; w0l = 1/RC = 1/(1e4*1e-9) = 100 000
  // High-pass: R =  1 kOhm, C =   10 uF; w0h = 1/RC = 1/(1e3*1e-5) =     100

  // Assume a 1MHz clock.
  // Cutoff frequency accuracy (4 bits) is traded off for filter signal
  // accuracy (27 bits). This is crucial since w0lp and w0hp are so far apart.
  w0lp_1_s7 = int(100000*1.0e-6*(1 << 7) + 0.5);
  w0hp_1_s17 = int(100*1.0e-6*(1 << 17) + 0.5);
}
Exemple #4
0
// ----------------------------------------------------------------------------
// Constructor.
// ----------------------------------------------------------------------------
ExternalFilter::ExternalFilter()
{
  reset();
  enable_filter(true);
  set_chip_model(MOS6581);

  // Low-pass:  R = 10kOhm, C = 1000pF; w0l = 1/RC = 1/(1e4*1e-9) = 100000
  // High-pass: R =  1kOhm, C =   10uF; w0h = 1/RC = 1/(1e3*1e-5) =    100
  // Multiply with 1.048576 to facilitate division by 1 000 000 by right-
  // shifting 20 times (2 ^ 20 = 1048576).

  w0lp = 104858;
  w0hp = 105;
}
Exemple #5
0
int8_t tsi_initial_interface()
{
    if(inited==1) return 0;
#ifdef TSI_LIVE	
	tsi_err_e err;
	memset(&init, 0, sizeof(tsi_t));
	memset(&en, 0, sizeof(fen_t));
	memset(&cfg, 0, sizeof(fcfg_t));
	memset((void*)pid_val,-1,sizeof(uint32_t)*PID_NUM);
	//memset(packet_number_pre_interrupt,0,sizeof(uint32_t)*PID_NUM);
	fid_bitmap = 0;
	//memset(node_len,0,sizeof(uint8_t)*12);
	init.reg = (void *)0x04200000;//register address
        init.pkt_sz = TS_188;

        init.mode = MODE;
        init.filter = FT_MODE;

	init.circular_buffer_length[TSI_CTRL_BUFFINDEX] = TSI_CTRL_BUFFLEN;
	init.circular_buffer_length[TSI_MEDIA_DATA_BUFFINDEX] = TSI_MEDIADATA_BUFFLEN;
	init.circular_buffer_length[TSI_SUBTITLE_BUFFINDEX] = TSI_SUBTITLE_BUFFLEN;
        init.circular_buffer_length[TSI_EPG_BUFFINDEX] = TSI_EPG_BUFFLEN;
        init.circular_buffer_length[TSI_TIME_BUFFINDEX] = TSI_TIME_BUFFLEN;
        
       // init.pio_buffer_length = (188*16); //only in pio mode : PACKAGE SIZE * NUMBER OF PACKAGE....for number of package, please assign a multiple of 16 for now..
	init.pio_buffer_length = 0;

        
        err = tsi_init(test);
	if(err <0)
	{	
		printf("init: tsi_init(test) err: %i\n", err);
		return err;
	}

        enable_filter(fid_bitmap);
        inited = 1;
        
        tsi_remove_pid_from_filter(-1);
#endif
	return 0;
}
Exemple #6
0
VALUE bm_enable_filter(VALUE self) {
    Bitmapper* map;
    Data_Get_Struct(self, Bitmapper, map);
    enable_filter(map);
    return self;
}
Exemple #7
0
int8_t tsi_add_pid_to_filter(int pid,int8_t type,int8_t buff_idx)
{
    int32_t index;
    tsi_err_e err;

    if(inited==0) return -1;

    for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++)
    {
            /* check for the index to be free */
            if(-1 == pid_val[index])
            {
                    INTERFACE_DEBUG("pid_val[%d]:%d\n",index,pid_val[index]);
                    pid_val[index] = pid;
                    break;
            }
    }

    if(MAX_NUM_PIDS_SUPPORTED == index)
    {
            INTERFACE_DEBUG("add pid - MAX pid's reached :%d\n",pid);
            for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++)
                    INTERFACE_DEBUG("%d ",pid_val[index]);

            return -1;
    }

//    printf("tsi_add_pid_to_filter:%d\n",pid);
    /* add bit into fid bitmap */
    fid_bitmap |= (1<<index);
    pid_val[index] = pid;
    pid_number++;

    cfg.buffer_index  = buff_idx;

    if(PSI == type)
    {
            cfg.pkts_per_intr = TSI_CTRL_PKTSPERINTR;

    }
    else if(AUDIO == type)
    {
            cfg.pkts_per_intr = TSI_MEDIADATA_AUD_PKTSPERINTR;	

    }
    else if(VIDEO == type)
    {
            cfg.pkts_per_intr = TSI_MEDIADATA_VID_PKTSPERINTR;	

    }
    else if(SUB_TITLE == type)
    {
            cfg.pkts_per_intr = TSI_SUBTITLE_PKTSPERINTR;	

    }
    else
    {
            /* should not enter here */
            INTERFACE_DEBUG("invalid type inp params %d %d\n",buff_idx,pid);
            return -1;
    }

    INTERFACE_DEBUG("add pid to filter config %d %d %d %d %d %d %d\n",cfg.fid,cfg.pid,cfg.pkts_per_intr,cfg.buffer_index,fid_bitmap,pid_val[index],index);
    cfg.fid = index;
    cfg.pid = pid_val[index];
    err = tsi_filter_cfg(test_cfg);

    if(err)
    {
            INTERFACE_DEBUG("add pid into filter config error %d\n",err);
            return err;
    }

    tsi_clear_buffer(buff_idx);
    enable_filter(fid_bitmap);	

    //INTERFACE_DEBUG("cfg.fid:%d cfg.pid:%d interrupt:%d\n",cfg.fid,cfg.pid, packet_number_pre_interrupt[index]);
    //tsi_clear_buffer(buff_idx);

    err=tsi_filter_en(test_en);


    return err;
}
Exemple #8
0
int8_t tsi_remove_pid_from_filter(int pid)
{
	int index;
	tsi_err_e err;

        if(inited==0) return -1;
        
	if(pid>=0)
	{
		if(pid_number<=0)
		{
			return -1;
		}

		for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++)
		{
			/* check for the index to be free */
			if(pid == pid_val[index])
			{
				INTERFACE_DEBUG("remove pid_val[%d]:%d\n",index,pid_val[index]);
				pid_val[index] = -1;
				break;
			}
		}
		
		if(MAX_NUM_PIDS_SUPPORTED == index)
		{
			INTERFACE_DEBUG("remove pid - MAX pid's reached :%d\n",pid);
			for(index=0;index<MAX_NUM_PIDS_SUPPORTED;index++)
				INTERFACE_DEBUG("%d ",pid_val[index]);

			return -1;
		}
		
		/* update the fid number */
		fid_bitmap &= (~(1<<index));

		pid_number--;
		INTERFACE_DEBUG("remove pid:remove tsi_exit %d \n",fid_bitmap);

		enable_filter(fid_bitmap);
		err=tsi_filter_en(test_en);
	}
	else
	{
		INTERFACE_DEBUG("remove pid:remove all pid\n");
		pid_number = 0;
		memset((void*)pid_val,-1,sizeof(uint32_t)*PID_NUM);
		//memset(packet_number_pre_interrupt,0,sizeof(int)*PID_NUM);
		fid_bitmap = 0;
		INTERFACE_DEBUG("remove pid:remove tsi_exit %d \n",fid_bitmap);

		enable_filter(fid_bitmap);

		err=tsi_filter_en(test_en);

		INTERFACE_DEBUG("remove pid:tsi_clear %d \n",fid_bitmap);
		tsi_clear_buffer(TSI_CTRL_BUFFINDEX);
		tsi_clear_buffer(TSI_MEDIA_DATA_BUFFINDEX);
                tsi_clear_buffer(TSI_EPG_BUFFINDEX);
                tsi_clear_buffer(TSI_TIME_BUFFINDEX);
	}

	return err;

}