2
* Copyright (C) 2004-2012 Savoir-Faire Linux Inc.
2
* Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
3
3
* Author: Emmanuel Lepage <emmanuel.lepage@savoirfairelinux.com>
5
5
* This program is free software; you can redistribute it and/or modify
28
28
* as that of the covered work.
31
#include "sfl_types.h"
31
32
#include <iostream>
33
34
#include <stdexcept>
35
#define G729_TYPE_ENCODER (void (*)(bcg729EncoderChannelContextStruct*, int16_t[], uint8_t[]))
36
#define G729_TYPE_DECODER (void (*)(bcg729DecoderChannelContextStruct*, uint8_t[], uint8_t, int16_t[]))
36
#define G729_TYPE_ENCODER (void (*)(bcg729EncoderChannelContextStruct*, SFLAudioSample[], uint8_t[]))
37
#define G729_TYPE_DECODER (void (*)(bcg729DecoderChannelContextStruct*, uint8_t[], uint8_t, SFLAudioSample[]))
38
39
#define G729_TYPE_DECODER_INIT (bcg729DecoderChannelContextStruct*(*)())
39
40
#define G729_TYPE_ENCODER_INIT (bcg729EncoderChannelContextStruct*(*)())
50
handler_ = dlopen("libbcg729.so.0", RTLD_NOW);
52
throw std::runtime_error("g729: did not open shared lib");
54
encoder_ = G729_TYPE_ENCODER dlsym(handler_, "bcg729Encoder");
56
decoder_ = G729_TYPE_DECODER dlsym(handler_, "bcg729Decoder");
59
bcg729DecoderChannelContextStruct*(*decInit)() = G729_TYPE_DECODER_INIT dlsym(handler_, "initBcg729DecoderChannel");
61
bcg729EncoderChannelContextStruct*(*encInit)() = G729_TYPE_ENCODER_INIT dlsym(handler_, "initBcg729EncoderChannel");
64
decoderContext_ = (*decInit)();
65
encoderContext_ = (*encInit)();
51
handler_ = dlopen("libbcg729.so.0", RTLD_NOW);
54
throw std::runtime_error("g729: did not open shared lib");
56
encoder_ = G729_TYPE_ENCODER dlsym(handler_, "bcg729Encoder");
58
decoder_ = G729_TYPE_DECODER dlsym(handler_, "bcg729Decoder");
61
bcg729DecoderChannelContextStruct*(*decInit)() = G729_TYPE_DECODER_INIT dlsym(handler_, "initBcg729DecoderChannel");
63
bcg729EncoderChannelContextStruct*(*encInit)() = G729_TYPE_ENCODER_INIT dlsym(handler_, "initBcg729EncoderChannel");
66
decoderContext_ = (*decInit)();
67
encoderContext_ = (*encInit)();
74
int G729::decode(short *dst, unsigned char *buf, size_t buffer_size)
76
decoder_(decoderContext_, buf, false, dst);
77
decoder_(decoderContext_, buf + (buffer_size / 2), false, dst + 80);
81
int G729::encode(unsigned char *dst, short *src, size_t buffer_size)
83
encoder_(encoderContext_, src, dst);
84
encoder_(encoderContext_, src + (buffer_size / 2), dst + 10);
82
int G729::decode(SFLAudioSample *dst, unsigned char *buf, size_t buffer_size)
84
decoder_(decoderContext_, buf, false, dst);
85
decoder_(decoderContext_, buf + (buffer_size / 2), false, dst + 80);
89
int G729::encode(unsigned char *dst, SFLAudioSample *src, size_t buffer_size)
91
encoder_(encoderContext_, src, dst);
92
encoder_(encoderContext_, src + (buffer_size / 2), dst + 10);
88
96
void G729::loadError(const char *error)
91
throw std::runtime_error("G729 failed to load");
99
throw std::runtime_error("G729 failed to load");
94
102
// cppcheck-suppress unusedFunction