linux audio capture improved

This commit is contained in:
John Preston 2015-06-01 14:15:07 +03:00
parent 1b06fe1220
commit 0a7c42c59a
3 changed files with 16 additions and 14 deletions

View File

@ -23,10 +23,9 @@ Replace '\-lfontconfig' '\/usr\/lib\/x86_64\-linux\-gnu\/libfontconfig\.a \/usr\
Replace '\-lfreetype' '\/usr\/lib\/x86_64\-linux\-gnu\/libfreetype\.a' Replace '\-lfreetype' '\/usr\/lib\/x86_64\-linux\-gnu\/libfreetype\.a'
Replace '\-lpng' '\/usr\/lib\/x86_64\-linux\-gnu\/libpng\.a' Replace '\-lpng' '\/usr\/lib\/x86_64\-linux\-gnu\/libpng\.a'
Replace '\-lXext' '\/usr\/lib\/x86_64\-linux\-gnu\/libXext\.a' Replace '\-lXext' '\/usr\/lib\/x86_64\-linux\-gnu\/libXext\.a'
Replace '\-lopusfile' '\/usr\/local\/lib\/libopusfile\.a'
Replace '\-lopus' '\/usr\/local\/lib\/libopus\.a' Replace '\-lopus' '\/usr\/local\/lib\/libopus\.a'
Replace '\-lopenal' '\/usr\/local\/lib\/libopenal\.a' Replace '\-lopenal' '\/usr\/local\/lib\/libopenal\.a'
Replace '\-logg' '\/usr\/local\/lib\/libogg\.a' Replace '\-lavformat' '\/usr\/local\/lib\/libavformat\.a'
Replace '\-lfaad' '\/usr\/local\/lib\/libfaad\.a' Replace '\-lavcodec' '\/usr\/local\/lib\/libavcodec\.a'
Replace '\-lmpg123' '\/usr\/lib\/x86_64\-linux\-gnu\/libmpg123\.a' Replace '\-lswresample' '\/usr\/local\/lib\/libswresample\.a'
Replace '\-lmp4ff' '\/usr\/local\/lib\/libmp4ff\.a' Replace '\-lavutil' '\/usr\/local\/lib\/libavutil\.a'

View File

@ -1202,8 +1202,9 @@ void AudioCaptureInner::onInit() {
void AudioCaptureInner::onStart() { void AudioCaptureInner::onStart() {
// Start OpenAL Capture // Start OpenAL Capture
const ALCchar *dName = alcGetString(0, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER);
d->device = alcCaptureOpenDevice(0, AudioVoiceMsgFrequency, AL_FORMAT_MONO16, AudioVoiceMsgFrequency / 5); DEBUG_LOG(("Audio Info: Capture device name '%1'").arg(dName));
d->device = alcCaptureOpenDevice(dName, AudioVoiceMsgFrequency, AL_FORMAT_MONO16, AudioVoiceMsgFrequency / 5);
if (!d->device) { if (!d->device) {
LOG(("Audio Error: capture device not present!")); LOG(("Audio Error: capture device not present!"));
emit error(); emit error();
@ -1255,7 +1256,7 @@ void AudioCaptureInner::onStart() {
emit error(); emit error();
return; return;
} }
d->stream = avformat_new_stream(d->fmtContext, d->codec); d->stream = avformat_new_stream(d->fmtContext, d->codec);
if (!d->stream) { if (!d->stream) {
LOG(("Audio Error: Unable to avformat_new_stream for capture")); LOG(("Audio Error: Unable to avformat_new_stream for capture"));
onStop(false); onStop(false);
@ -1267,7 +1268,8 @@ void AudioCaptureInner::onStart() {
av_opt_set_int(d->codecContext, "refcounted_frames", 1, 0); av_opt_set_int(d->codecContext, "refcounted_frames", 1, 0);
d->codecContext->sample_fmt = AV_SAMPLE_FMT_FLTP; d->codecContext->sample_fmt = AV_SAMPLE_FMT_FLTP;
d->codecContext->bit_rate = 0;// 64000; d->codecContext->bit_rate = 64000;
d->codecContext->channel_layout = AV_CH_LAYOUT_MONO;
d->codecContext->sample_rate = AudioVoiceMsgFrequency; d->codecContext->sample_rate = AudioVoiceMsgFrequency;
d->codecContext->channels = 1; d->codecContext->channels = 1;
@ -1342,9 +1344,10 @@ void AudioCaptureInner::onStop(bool needResult) {
if (!_timer.isActive()) return; // in onStop() already if (!_timer.isActive()) return; // in onStop() already
_timer.stop(); _timer.stop();
if (needResult) { if (d->device) {
onTimeout(); // get last data alcCaptureStop(d->device);
} onTimeout(); // get last data
}
// Write what is left // Write what is left
if (!_captured.isEmpty()) { if (!_captured.isEmpty()) {
@ -1585,4 +1588,4 @@ void AudioCaptureInner::writeFrame(int32 offset, int32 framesize) {
d->fullSamples += samplesCnt; d->fullSamples += samplesCnt;
av_frame_free(&frame); av_frame_free(&frame);
} }

View File

@ -300,7 +300,7 @@ INCLUDEPATH += "/usr/include/atk-1.0"
INCLUDEPATH += "/usr/include/dee-1.0" INCLUDEPATH += "/usr/include/dee-1.0"
INCLUDEPATH += "/usr/include/libdbusmenu-glib-0.4" INCLUDEPATH += "/usr/include/libdbusmenu-glib-0.4"
LIBS += -lcrypto -lssl -lz -ldl -llzma -lexif -lopus -lopusfile -logg -lopenal -lfaad -lmp4ff -lmpg123 LIBS += -lcrypto -lssl -lz -ldl -llzma -lexif -lopenal -lavformat -lavcodec -lswresample -lavutil -lopus
LIBS += ./../../../Libraries/QtStatic/qtbase/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.a LIBS += ./../../../Libraries/QtStatic/qtbase/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.a
RESOURCES += \ RESOURCES += \