initial commit
This commit is contained in:
79
main_buffer_manager_class.cpp
Normal file
79
main_buffer_manager_class.cpp
Normal file
@@ -0,0 +1,79 @@
|
||||
#include <SDL2/SDL.h>
|
||||
#include <SDL2/SDL_image.h>
|
||||
#include <SDL2/SDL_timer.h>
|
||||
#include <SDL2/SDL_ttf.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <cmath>
|
||||
#include <unistd.h>
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
#include <pulse/simple.h>
|
||||
#include <pulse/error.h>
|
||||
#include "scope.h"
|
||||
|
||||
// Pulse
|
||||
static const pa_sample_spec my_pa_spec = {
|
||||
.format = PA_SAMPLE_S16LE,
|
||||
.rate = 44100,
|
||||
.channels = 1
|
||||
};
|
||||
|
||||
// audio buffer
|
||||
main_buffer_manager_class::main_buffer_manager_class()
|
||||
{
|
||||
my_read_main_buffer = NULL;
|
||||
}
|
||||
|
||||
main_buffer_manager_class::~main_buffer_manager_class()
|
||||
{
|
||||
if (my_read_main_buffer != NULL)
|
||||
{
|
||||
free(my_read_main_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
Sint16 *main_buffer_manager_class::initial_preparation()
|
||||
{
|
||||
my_read_main_buffer = (Sint16 *)malloc ((sizeof(Sint16) * READ_BUFFER_SIZE));
|
||||
if (my_read_main_buffer == NULL)
|
||||
{
|
||||
printf ("cannot allocate read buffer\n");
|
||||
perror ("error is");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Open pulse
|
||||
pulse_s = pa_simple_new(NULL,"scope sound", PA_STREAM_RECORD, NULL, "record",
|
||||
&my_pa_spec, NULL, NULL, &function_return);
|
||||
|
||||
if (pulse_s == NULL) {
|
||||
printf("pa_simple_new() failed: %s\n", pa_strerror(function_return));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return my_read_main_buffer;
|
||||
}
|
||||
|
||||
Sint16 *main_buffer_manager_class::read_main_buffer()
|
||||
{
|
||||
|
||||
// grab the buffer from the audio device
|
||||
printf("about to grab sound\n");
|
||||
if (pa_simple_read(pulse_s, (Uint8 *)my_read_main_buffer,
|
||||
(READ_BUFFER_SIZE * sizeof(Sint16)), &function_return) < 0) {
|
||||
printf("sound read failed %s\n", pa_strerror(function_return));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
printf("just grabbed the buffer from device\n");
|
||||
// Turn the volume down
|
||||
for (main_buffer_index = 0; main_buffer_index < READ_BUFFER_SIZE;
|
||||
main_buffer_index += 1)
|
||||
{
|
||||
main_buffer_hold = (Sint16)(*(my_read_main_buffer + main_buffer_index) * MAIN_VOLUME);
|
||||
*(my_read_main_buffer + main_buffer_index) = main_buffer_hold;
|
||||
}
|
||||
|
||||
return my_read_main_buffer;
|
||||
}
|
||||
Reference in New Issue
Block a user