diff options
-rw-r--r-- | os2eindopdracht/.gitignore | 5 | ||||
-rw-r--r-- | os2eindopdracht/SampleStream.cpp | 28 | ||||
-rw-r--r-- | os2eindopdracht/SampleStream.h | 19 | ||||
-rwxr-xr-x | os2eindopdracht/any2s16lepcm | 3 | ||||
-rw-r--r-- | os2eindopdracht/main.cpp | 15 | ||||
-rw-r--r-- | os2eindopdracht/makefile | 13 | ||||
-rwxr-xr-x | os2eindopdracht/s16lepcm2any | 3 |
7 files changed, 86 insertions, 0 deletions
diff --git a/os2eindopdracht/.gitignore b/os2eindopdracht/.gitignore index f0c9b81..7c39037 100644 --- a/os2eindopdracht/.gitignore +++ b/os2eindopdracht/.gitignore @@ -1,2 +1,7 @@ *.o main +*.png +*.pcm +*.wav +*.mp3 +*.flac diff --git a/os2eindopdracht/SampleStream.cpp b/os2eindopdracht/SampleStream.cpp index e69de29..b9fd542 100644 --- a/os2eindopdracht/SampleStream.cpp +++ b/os2eindopdracht/SampleStream.cpp @@ -0,0 +1,28 @@ +#include <algorithm> + +#include "SampleStream.h" + +using std::string; + +SampleStream::SampleStream(string input_stream) { + load(input_stream); + + // test direct sample editing: + // std::transform(_stream.begin(), _stream.end(), _stream.begin(), [](int16_t s) { return s/2; }); +} + +void SampleStream::load(string input) { + _stream.clear(); + for (unsigned long i = 0; i < input.size(); i += 2) + _stream.push_back(((input[i] & 0xff) << 0) | ((input[i+1] & 0xff) << 8)); +} + +string SampleStream::save() { + string out; + for (int16_t sample : _stream) { + out.push_back((sample >> 0) & 0xff); + out.push_back((sample >> 8) & 0xff); + } + return out; +} + diff --git a/os2eindopdracht/SampleStream.h b/os2eindopdracht/SampleStream.h index e69de29..94bb941 100644 --- a/os2eindopdracht/SampleStream.h +++ b/os2eindopdracht/SampleStream.h @@ -0,0 +1,19 @@ +#pragma once + +#include <string> +#include <vector> + +using std::string; +using std::vector; + +class SampleStream { +public: + SampleStream(string input_stream); + +public: + void load(string input); + string save(); + +private: + vector<int16_t> _stream; +}; diff --git a/os2eindopdracht/any2s16lepcm b/os2eindopdracht/any2s16lepcm new file mode 100755 index 0000000..00bf37c --- /dev/null +++ b/os2eindopdracht/any2s16lepcm @@ -0,0 +1,3 @@ +#!/bin/sh +ffmpeg -y -hide_banner -loglevel warning -i "$1" -ac 1 -f s16le -acodec pcm_s16le "$2" + diff --git a/os2eindopdracht/main.cpp b/os2eindopdracht/main.cpp index 2e96abe..291361e 100644 --- a/os2eindopdracht/main.cpp +++ b/os2eindopdracht/main.cpp @@ -1,4 +1,7 @@ #include <cstdio> +#include <iostream> +#include <sstream> +#include <fstream> #include "Arguments.h" #include "SampleStream.h" @@ -7,11 +10,23 @@ int main(int argc, char** argv) { Arguments args(argc, argv); + std::fstream file_input(args.file_input, std::ios::in | std::ios::binary); + std::stringstream file_input_content; + file_input_content << file_input.rdbuf(); + file_input.close(); + + SampleStream stream(file_input_content.str()); + printf("max_threads: %i\n", args.max_threads); printf("gain_bass: %+i\n", args.gain_bass); printf("gain_treble: %+i\n", args.gain_treble); printf("input filename: \"%s\"\n", args.file_input.c_str()); printf("output filename: \"%s\"\n", args.file_output.c_str()); + std::fstream file_output(args.file_output, std::ios::out | std::ios::binary); + std::string edited_stream = stream.save(); + file_output.write(edited_stream.c_str(), edited_stream.size()); + file_output.close(); + return 0; } diff --git a/os2eindopdracht/makefile b/os2eindopdracht/makefile index d88ea30..f71ef29 100644 --- a/os2eindopdracht/makefile +++ b/os2eindopdracht/makefile @@ -22,3 +22,16 @@ clean: compile_commands: compiledb make -Bn +original.pcm: original.flac + ./any2s16lepcm $< $@ + +edit.pcm: original.pcm ./main + ./main $< $@ + +edit.wav: edit.pcm + ./s16lepcm2any $< $@ + +edit.png: edit.wav + +%.png: %.wav + sox $< -n spectrogram -o $@ diff --git a/os2eindopdracht/s16lepcm2any b/os2eindopdracht/s16lepcm2any new file mode 100755 index 0000000..bd62a08 --- /dev/null +++ b/os2eindopdracht/s16lepcm2any @@ -0,0 +1,3 @@ +#!/bin/sh +ffmpeg -y -hide_banner -loglevel warning -ac 1 -f s16le -ar 44.1k -i "$1" "$2" + |