Acutally Plays back a sound!!!
This commit is contained in:
@@ -30,7 +30,7 @@ private:
|
||||
std::string stream_name;
|
||||
StreamMode mode;
|
||||
SampleRate sample_rate;
|
||||
size_t bufferSize;
|
||||
|
||||
std::vector<char> buffer;
|
||||
#ifdef __linux__
|
||||
pa_simple* stream = nullptr;
|
||||
@@ -39,10 +39,13 @@ private:
|
||||
#ifdef _WIN32
|
||||
#endif
|
||||
public:
|
||||
size_t bufferSize;
|
||||
uint16_t handle;
|
||||
Stream(const std::string& application_name, const std::string& stream_name, SampleRate sample_rate, StreamMode mode);
|
||||
unsigned int numChannels();
|
||||
void erase();
|
||||
|
||||
void test_play(const void *data, size_t size, int *err);
|
||||
};
|
||||
|
||||
inline std::vector<Stream*> streamList;
|
||||
|
14
main.cpp
14
main.cpp
@@ -50,11 +50,11 @@ void decodeVorbis(const char* inputFile, const char* outputFile)
|
||||
|
||||
outFile.close();
|
||||
ov_clear(&vf);
|
||||
fclose(inFile);
|
||||
//fclose(inFile);
|
||||
}
|
||||
|
||||
[[noreturn]] int main() {
|
||||
const char* inputFile = "input.ogg";
|
||||
const char* inputFile = "click.ogg";
|
||||
const char* outputFile = "output.raw";
|
||||
|
||||
decodeVorbis(inputFile, outputFile);
|
||||
@@ -63,6 +63,16 @@ void decodeVorbis(const char* inputFile, const char* outputFile)
|
||||
|
||||
Stream stream("ReMixer-Test", "Main", SampleRate::STANDARD, StreamMode::STEREO);
|
||||
|
||||
FILE* rawData = fopen("output.raw", "rb");
|
||||
if (!rawData) {
|
||||
std::cerr << "Error opening input file." << std::endl; return -1;
|
||||
}
|
||||
signed char raw[4096];
|
||||
fread(raw, sizeof(signed char), stream.bufferSize, rawData);
|
||||
int* returned_err;
|
||||
stream.test_play(raw, stream.bufferSize, returned_err);
|
||||
|
||||
std::cout << "Something happened!!" << std::endl;
|
||||
bool keep_runnin = true;
|
||||
|
||||
while (keep_runnin) {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#include <ReMixer/stream.h>
|
||||
#include <ReMixer/sound.h>
|
||||
#include <uuid/uuid.h>
|
||||
#include <iostream>
|
||||
|
||||
Stream::Stream(const std::string& name, const std::string& stream_name, SampleRate sample_rate, StreamMode mode) {
|
||||
this->application_name = name;
|
||||
@@ -18,9 +19,23 @@ Stream::Stream(const std::string& name, const std::string& stream_name, SampleRa
|
||||
buffer_attr.minreq = (uint32_t) -1, buffer_attr.fragsize = (uint32_t) -1};
|
||||
|
||||
stream = pa_simple_new(nullptr, name.c_str(), PA_STREAM_PLAYBACK, nullptr, name.c_str(), &sample_spec, nullptr, &buffer_attr, nullptr);
|
||||
|
||||
if (stream == nullptr)
|
||||
{
|
||||
throw std::runtime_error("Could not connect to the PulseAudio server");
|
||||
}
|
||||
|
||||
streamList.push_back(new Stream(*this));
|
||||
}
|
||||
|
||||
void Stream::test_play(const void* data, size_t size, int* err)
|
||||
{
|
||||
int return_code = pa_simple_write(stream, data, size, err);
|
||||
|
||||
if (return_code != 0) // success
|
||||
std::cout << "Some Problem" << std::endl;
|
||||
}
|
||||
|
||||
unsigned int Stream::numChannels() {
|
||||
return (unsigned int) mode + 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user