示例#1
0
void vdin_reg_vf_provider(void)
{
#ifdef CONFIG_AMLOGIC_VIDEOIN_MANAGER
   vf_reg_provider(&vdin_vf_prov);
#else 
    vf_reg_provider(&vdin_vf_prov);
#endif /* CONFIG_AMLOGIC_VIDEOIN_MANAGER */
    
}
示例#2
0
const vframe_receiver_op_t* vf_ppmgr_reg_provider(void)
{  
    const vframe_receiver_op_t *r = NULL;
    
    mutex_lock(&ppmgr_mutex);

    vf_local_init();

    //vf_reg_provider(&ppmgr_vf_prov);
	if(ppmgr_device.video_out==0) {
		vf_reg_provider(&ppmgr_vf_prov);
	} 
#	ifdef CONFIG_V4L_AMLOGIC_VIDEO 
	else  {
		v4l_reg_provider(&ppmgr_vf_prov);
	}
#			endif

    if (start_ppmgr_task() == 0) {
        r = &ppmgr_vf_receiver;
    }
    
    mutex_unlock(&ppmgr_mutex);

    return r;
}
示例#3
0
static int d2d3_receiver_event_fun(int type, void* data, void* arg)
{
        int i, ret=0;
        d2d3_param_t *parm = &d2d3_devp->param;
        if((type == VFRAME_EVENT_PROVIDER_UNREG)||
           (type == VFRAME_EVENT_PROVIDER_LIGHT_UNREG)){
                prov = NULL;
		if(d2d3_devp->flag & D2D3_BYPASS){
                	d2d3_enable_hw(false);
			d2d3_enable_path(false, parm);
		}

                vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_UNREG,NULL);
                vf_unreg_provider(&d2d3_vf_prov);
                d2d3_devp->flag &= (~D2D3_REG); // keep flag when unreg
                pr_info("[d2d3]%s: provider unregister,disable d2d3.\n",__func__);

        }
        else if(type == VFRAME_EVENT_PROVIDER_REG){
                char* provider_name = (char*)data;

                if((strcmp(provider_name, "deinterlace")==0)||(strcmp(provider_name, "ppmgr")==0)){
                        have_process_fun_private_data = 1;
                }
                else{
                        have_process_fun_private_data = 0;
                }
                vf_reg_provider(&d2d3_vf_prov);

                for(i=0; i<D2D3_IDX_MAX; i++){
                        d2d3_devnox[i].vf = NULL;
                }
                prov = vf_get_provider(d2d3_devp->vfm_name);
		d2d3_devp->flag |= D2D3_REG;
                vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_START,NULL);
        }
        else if((VFRAME_EVENT_PROVIDER_DPBUF_CONFIG == type) &&
                        (D2D3_DPG_MUX_NRW == parm->dpg_path))
        {
                vframe_t * vf = (vframe_t*)data;
                struct di_buf_s *di_buf = vf->private_data;
                d2d3_devp->dpg_addr = di_buf->dp_buf_adr;
                /*just update the dpg canvas config with the addr from di*/
                d2d3_config_dpg_canvas(d2d3_devp);
                pre_count++;

        }
        else if(VFRAME_EVENT_PROVIDER_FR_HINT == type)
        {
               vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_FR_HINT,data);
        }
        else if(VFRAME_EVENT_PROVIDER_FR_END_HINT == type)
        {
               vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_FR_END_HINT,data);
        }
        return ret;
}
示例#4
0
static vframe_receiver_op_t* vf_vm_reg_provider( )
{
    ulong flags;

    spin_lock_irqsave(&lock, flags);
    spin_unlock_irqrestore(&lock, flags);
    
    vf_reg_provider(&vm_vf_prov);
    start_vm_task();   
#if 0   
    start_simulate_task();
#endif    
    
    return &vm_vf_receiver;
}
示例#5
0
static vframe_receiver_op_t* vf_vm_reg_provider( )
{
    ulong flags;

    spin_lock_irqsave(&lock, flags);
    spin_unlock_irqrestore(&lock, flags);
    vm_buffer_init();
#ifndef CONFIG_AMLOGIC_VM_DISABLE_VIDEOLAYER
    vf_reg_provider(&vm_vf_prov);
#endif
    start_vm_task();   
#if 0   
    start_simulate_task();
#endif        
    return &vm_vf_receiver;
}
static  int  jpeg_decode(logo_object_t *plogo)
{
	ulong timeout;
	jpeg_private_t *priv=(jpeg_private_t*)plogo->parser->priv;
#ifdef CONFIG_AM_STREAMING	
	amvdec_start();
#endif
       	feed_vb(plogo->parser->logo_pic_info.size);
	timeout = jiffies + HZ * 2;//wait 2s
    
    	while (time_before(jiffies, timeout)) {
		if (priv->state == PIC_DECODED) {
			/* disable OSD layer to expose logo on video layer  */
			amlog_mask_level(LOG_MASK_PARSER,LOG_LEVEL_LOW,"[jpeglogo]: logo decoded.\n");
			break;
		}
    	}
#ifdef CONFIG_AM_STREAMING		
    	amvdec_stop();
#endif
	free_irq(INT_MAILBOX_1A, (void *)hardware_init);
	if (priv->state > PIC_NA) 
	{
		if(plogo->para.output_dev_type == LOGO_DEV_VID)
		{
#ifdef CONFIG_AM_VIDEO 
                     vf_provider_init(&jpeglogo_vf_prov, "jpeglogo_provider", &jpeglogo_vf_provider_op, NULL);
			vf_reg_provider(&jpeglogo_vf_prov);
#endif
			kernel_thread(thread_progress, plogo, 0);
		}else
		{
			plogo->parser->decoder.jpg.out_canvas_index=priv->canvas_index;
			kfree(priv);
		}
    		
	}
	else
	{
		amlog_mask_level(LOG_MASK_PARSER,LOG_LEVEL_LOW,"deocod jpeg uncompleted\n");
		return FAIL;
	}
	return SUCCESS;
}
void vdin_reg_vf_provider(void)
{
    vf_reg_provider(&vdin_vf_provider);
}