Beispiel #1
0
void radioart_init(bool entering_screen)
{
    int i;
    if (entering_screen)
    {
        for(i=0;i<MAX_RADIOART_IMAGES;i++)
        {
            radioart[i].handle = -1;
            radioart[i].name[0] = '\0';
        }
        add_event(PLAYBACK_EVENT_START_PLAYBACK, true, playback_restarting_handler);

        /* grab control over buffering */
        char* buf;
        size_t bufsize;
        buf = audio_get_buffer(false, &bufsize);
        buffering_reset(buf, bufsize);
    }
    else
    {
#if defined(HAVE_RECORDING)
        add_event(RECORDING_EVENT_START, false, recording_started_handler);
        add_event(RECORDING_EVENT_STOP, false, recording_stopped_handler);
#endif
    }
}
Beispiel #2
0
void usb_storage_init_connection(void)
{
    logf("ums: set config");
    /* prime rx endpoint. We only need room for commands */
    state = WAITING_FOR_COMMAND;

#if (CONFIG_CPU == IMX31L || defined(CPU_TCC77X) || defined(CPU_TCC780X) || \
     defined(BOOTLOADER) || CONFIG_CPU == DM320) && !defined(CPU_PP502x)
    static unsigned char _cbw_buffer[MAX_CBW_SIZE]
        USB_DEVBSS_ATTR __attribute__((aligned(32)));
    cbw_buffer = (void *)_cbw_buffer;

    static unsigned char _transfer_buffer[ALLOCATE_BUFFER_SIZE]
        USB_DEVBSS_ATTR __attribute__((aligned(32)));
    tb.transfer_buffer = (void *)_transfer_buffer;
#ifdef USB_USE_RAMDISK
    static unsigned char _ramdisk_buffer[RAMDISK_SIZE*SECTOR_SIZE];
    ramdisk_buffer = _ramdisk_buffer;
#endif
#else
    /* TODO : check if bufsize is at least 32K ? */
    size_t bufsize;
    unsigned char * audio_buffer;

    audio_buffer = audio_get_buffer(false,&bufsize);
#if defined(UNCACHED_ADDR) && CONFIG_CPU != AS3525
    cbw_buffer = (void *)UNCACHED_ADDR((unsigned int)(audio_buffer+31) & 0xffffffe0);
#else
    cbw_buffer = (void *)((unsigned int)(audio_buffer+31) & 0xffffffe0);
#endif
    tb.transfer_buffer = cbw_buffer + MAX_CBW_SIZE;
    commit_discard_dcache();
#ifdef USB_USE_RAMDISK
    ramdisk_buffer = tb.transfer_buffer + ALLOCATE_BUFFER_SIZE;
#endif
#endif
    usb_drv_recv(ep_out, cbw_buffer, MAX_CBW_SIZE);

    int i;
    for(i=0;i<storage_num_drives();i++) {
        locked[i] = false;
        ejected[i] = !check_disk_present(IF_MD(i));
        queue_broadcast(SYS_USB_LUN_LOCKED, (i<<16)+0);
    }
}
Beispiel #3
0
void radioart_init(bool entering_screen)
{
    if (entering_screen)
    {
        /* grab control over buffering */
        size_t bufsize;
        buf = audio_get_buffer(false, &bufsize);
        buffering_reset(buf, bufsize);
        /* one-shot */
        add_event(BUFFER_EVENT_BUFFER_RESET, true, buffer_reset_handler);
    }
    else /* init at startup */
    {
        for(int i=0;i<MAX_RADIOART_IMAGES;i++)
        {
            radioart[i].handle = -1;
            radioart[i].name[0] = '\0';
        }
    }
}
Beispiel #4
0
int avcodec_default_get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags)
{
    int ret;

    if (avctx->hw_frames_ctx) {
        ret = av_hwframe_get_buffer(avctx->hw_frames_ctx, frame, 0);
        frame->width  = avctx->coded_width;
        frame->height = avctx->coded_height;
        return ret;
    }

    if ((ret = update_frame_pool(avctx, frame)) < 0)
        return ret;

    switch (avctx->codec_type) {
    case AVMEDIA_TYPE_VIDEO:
        return video_get_buffer(avctx, frame);
    case AVMEDIA_TYPE_AUDIO:
        return audio_get_buffer(avctx, frame);
    default:
        return -1;
    }
}
Beispiel #5
0
/*
 * audio processing loop (should run in a separate thread)
 * args:
 *    data - pointer to user data
 *
 * asserts:
 *   none
 *
 * returns: pointer to return code
 */
static void *audio_processing_loop(void *data)
{
	encoder_context_t *encoder_ctx = (encoder_context_t *) data;

	if(debug_level > 1)
		printf("GUVCVIEW: audio thread (tid: %u)\n",
			(unsigned int) syscall (SYS_gettid));
		
	audio_context_t *audio_ctx = get_audio_context();
	if(!audio_ctx)
	{
		fprintf(stderr, "GUVCVIEW: no audio context: skiping audio processing\n");
		return ((void *) -1);
	}
	audio_buff_t *audio_buff = NULL;

	/*start audio capture*/
	int frame_size = encoder_get_audio_frame_size(encoder_ctx);

	audio_ctx->capture_buff_size = frame_size * audio_ctx->channels;
	audio_start(audio_ctx);
	/*
	 * alloc the buffer after audio_start
	 * otherwise capture_buff_size may not
	 * be correct
	 * allocated data is big enough for float samples (32 bit)
	 * although it may contain int16 samples (16 bit)
	 */
	audio_buff = audio_get_buffer(audio_ctx);

	int sample_type = encoder_get_audio_sample_fmt(encoder_ctx);
	

	/*enable vu meter OSD display*/
	if(audio_ctx->channels > 1)
		render_set_osd_mask(REND_OSD_VUMETER_STEREO);
	else
		render_set_osd_mask(REND_OSD_VUMETER_MONO);

	while(video_capture_get_save_video())
	{
		int ret = audio_get_next_buffer(audio_ctx, audio_buff,
				sample_type, my_audio_mask);

		if(ret == 0)
		{
			encoder_ctx->enc_audio_ctx->pts = audio_buff->timestamp;

			/*OSD vu meter level*/
			render_set_vu_level(audio_buff->level_meter);

			encoder_process_audio_buffer(encoder_ctx, audio_buff->data);
		}
	}

	/*flush any delayed audio frames*/
	encoder_flush_audio_buffer(encoder_ctx);

	/*reset vu meter*/
	audio_buff->level_meter[0] = 0;
	audio_buff->level_meter[1] = 0;
	render_set_vu_level(audio_buff->level_meter);

	/*disable OSD*/
	render_set_osd_mask(REND_OSD_NONE);

	audio_stop(audio_ctx);
	audio_delete_buffer(audio_buff);

	return ((void *) 0);
}
Beispiel #6
0
/* Returns a pointer to the mp3 buffer.
   Playback gets stopped, to avoid conflicts.
   Talk buffer is stolen as well.
 */
void* plugin_get_audio_buffer(size_t *buffer_size)
{
    audio_stop();
    return audio_get_buffer(true, buffer_size);
}