static void sco_demo_init_mSBC(void){ printf("SCO Demo: Init mSBC\n"); btstack_sbc_decoder_init(&decoder_state, SBC_MODE_mSBC, &handle_pcm_data, NULL); hfp_msbc_init(); #ifdef SCO_WAV_FILENAME num_samples_to_write = MSBC_SAMPLE_RATE * SCO_WAV_DURATION_IN_SECONDS; wav_writer_open(SCO_WAV_FILENAME, 1, MSBC_SAMPLE_RATE); #endif #if SCO_DEMO_MODE == SCO_DEMO_MODE_SINE sco_demo_msbc_fill_sine_audio_frame(); #endif #ifdef SCO_MSBC_IN_FILENAME msbc_file_in = fopen(SCO_MSBC_IN_FILENAME, "wb"); printf("SCO Demo: creating mSBC in file %s, %p\n", SCO_MSBC_IN_FILENAME, msbc_file_in); #endif #ifdef SCO_MSBC_OUT_FILENAME msbc_file_out = fopen(SCO_MSBC_OUT_FILENAME, "wb"); printf("SCO Demo: creating mSBC out file %s, %p\n", SCO_MSBC_OUT_FILENAME, msbc_file_out); #endif #ifdef USE_PORTAUDIO portaudio_initialize(MSBC_SAMPLE_RATE); #endif }
static int init_media_processing(avdtp_media_codec_configuration_sbc_t configuration){ int num_channels = configuration.num_channels; int sample_rate = configuration.sampling_frequency; #ifdef DECODE_SBC btstack_sbc_decoder_init(&state, mode, handle_pcm_data, NULL); #endif #ifdef STORE_SBC_TO_WAV_FILE wav_writer_open(wav_filename, num_channels, sample_rate); #endif #ifdef STORE_SBC_TO_SBC_FILE sbc_file = fopen(sbc_filename, "wb"); #endif #ifdef HAVE_PORTAUDIO // int frames_per_buffer = configuration.frames_per_buffer; PaError err; PaStreamParameters outputParameters; /* -- initialize PortAudio -- */ err = Pa_Initialize(); if (err != paNoError){ printf("Error initializing portaudio: \"%s\"\n", Pa_GetErrorText(err)); return err; } /* -- setup input and output -- */ outputParameters.device = Pa_GetDefaultOutputDevice(); /* default output device */ outputParameters.channelCount = num_channels; outputParameters.sampleFormat = PA_SAMPLE_TYPE; outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultHighOutputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; /* -- setup stream -- */ err = Pa_OpenStream( &stream, NULL, /* &inputParameters */ &outputParameters, sample_rate, 0, paClipOff, /* we won't output out of range samples so don't bother clipping them */ patestCallback, /* use callback */ NULL ); if (err != paNoError){ printf("Error initializing portaudio: \"%s\"\n", Pa_GetErrorText(err)); return err; } memset(ring_buffer_storage, 0, sizeof(ring_buffer_storage)); btstack_ring_buffer_init(&ring_buffer, ring_buffer_storage, sizeof(ring_buffer_storage)); pa_stream_started = 0; #endif media_initialized = 1; return 0; }
static int media_processing_init(avdtp_media_codec_configuration_sbc_t configuration){ if (is_media_initialized) return 0; #ifdef DECODE_SBC btstack_sbc_decoder_init(&state, mode, handle_pcm_data, NULL); #endif #ifdef STORE_SBC_TO_WAV_FILE wav_writer_open(wav_filename, configuration.num_channels, configuration.sampling_frequency); #endif #ifdef STORE_SBC_TO_SBC_FILE sbc_file = fopen(sbc_filename, "wb"); #endif #ifdef HAVE_PORTAUDIO // int frames_per_buffer = configuration.frames_per_buffer; PaError err; PaStreamParameters outputParameters; const PaDeviceInfo *deviceInfo; /* -- initialize PortAudio -- */ err = Pa_Initialize(); if (err != paNoError){ printf("Error initializing portaudio: \"%s\"\n", Pa_GetErrorText(err)); return err; } /* -- setup input and output -- */ outputParameters.device = Pa_GetDefaultOutputDevice(); /* default output device */ outputParameters.channelCount = configuration.num_channels; outputParameters.sampleFormat = PA_SAMPLE_TYPE; outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultHighOutputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; deviceInfo = Pa_GetDeviceInfo( outputParameters.device ); printf("PortAudio: Output device: %s\n", deviceInfo->name); log_info("PortAudio: Output device: %s", deviceInfo->name); /* -- setup stream -- */ err = Pa_OpenStream( &stream, NULL, /* &inputParameters */ &outputParameters, configuration.sampling_frequency, 0, paClipOff, /* we won't output out of range samples so don't bother clipping them */ portaudio_callback, /* use callback */ NULL ); if (err != paNoError){ printf("Error initializing portaudio: \"%s\"\n", Pa_GetErrorText(err)); return err; } log_info("PortAudio: stream opened"); printf("PortAudio: stream opened\n"); #endif #ifdef HAVE_AUDIO_DMA audio_stream_paused = 1; hal_audio_dma_init(configuration.sampling_frequency); hal_audio_dma_set_audio_played(&hal_audio_dma_done); // start playing silence hal_audio_dma_done(); #endif #if defined(HAVE_PORTAUDIO) || defined (HAVE_AUDIO_DMA) memset(ring_buffer_storage, 0, sizeof(ring_buffer_storage)); btstack_ring_buffer_init(&ring_buffer, ring_buffer_storage, sizeof(ring_buffer_storage)); audio_stream_started = 0; audio_stream_paused = 0; #endif is_media_initialized = 1; return 0; }