disambiguate OpusEncoder and begin implementing encoding functionality

pull/18/head
Dimitri Diakopoulos 10 years ago
parent 4019cdee22
commit 4da74edd43

@ -55,7 +55,7 @@ struct WavEncoder
static int WriteFile(const EncoderParams p, const AudioData * d, const std::string & path); static int WriteFile(const EncoderParams p, const AudioData * d, const std::string & path);
}; };
struct OpusEncoder struct OggOpusEncoder
{ {
static int WriteFile(const EncoderParams p, const AudioData * d, const std::string & path); static int WriteFile(const EncoderParams p, const AudioData * d, const std::string & path);
}; };

@ -23,8 +23,8 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "WavEncoder.h"
#include <fstream> #include <fstream>
#include "WavEncoder.h"
using namespace nqr; using namespace nqr;
@ -198,14 +198,24 @@ int WavEncoder::WriteFile(const EncoderParams p, const AudioData * d, const std:
// Opus File Encoding // // Opus File Encoding //
//////////////////////////// ////////////////////////////
int OpusEncoder::WriteFile(const EncoderParams p, const AudioData * d, const std::string & path) #include "opus/opusfile/include/opusfile.h"
// Opus only supports a 48k samplerate...
int OggOpusEncoder::WriteFile(const EncoderParams p, const AudioData * d, const std::string & path)
{ {
assert(d->samples.size() > 0); assert(d->samples.size() > 0);
OpusEncoder * enc;
enc = opus_encoder_create(48000, 1, OPUS_APPLICATION_AUDIO, nullptr);
// How big should this be?
std::vector<uint8_t> encodedBuffer(1024);
auto encoded_size = opus_encode_float(enc, d->samples.data(), d->frameSize, encodedBuffer.data(), encodedBuffer.size());
// Cast away const because we know what we are doing (Hopefully?) // Cast away const because we know what we are doing (Hopefully?)
float * sampleData = const_cast<float *>(d->samples.data()); float * sampleData = const_cast<float *>(d->samples.data());
size_t sampleDataSize = d->samples.size(); const size_t sampleDataSize = d->samples.size();
return EncoderError::NoError; return EncoderError::NoError;
} }

Loading…
Cancel
Save