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 } }
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); } }
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'; } } }
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; } }
/* * 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); }
/* 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); }