QAudioRecorder recording hangs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical System Image |
Fix Released
|
High
|
Canonical Phone Foundations | ||
gst-plugins-good0.10 (Ubuntu) |
Fix Released
|
Undecided
|
Ricardo Salveti | ||
qtmultimedia-opensource-src (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Recording audio with QAudioRecorder intermittently fails for me. Another user even reported that it only works 1 out of 5-10 times.
QAudioRecorder seems to hang on requesting the audio to be recorded (status QMediaRecortder
QAudioRecorder has an error() method, but it returns QMediaRecorder:
Since it was confirmed by two people (victorp, karni) we suspect it's a bug in the middleware rather than the apps.
A test click has been sent to Ricardo's e-mail by Victor.
phablet@
current build number: 20
device name: krillin
channel: (the BQ channel)
last update: 2015-02-26 17:06:15
version version: 20
version ubuntu: 20150219
version device: 20150225-b67e0b6
version custom: 20150216-561-29-186
Related branches
- PS Jenkins bot: Needs Fixing (continuous-integration)
- Kubuntu Packagers: Pending requested
-
Diff: 53 lines (+33/-0)3 files modifieddebian/changelog (+8/-0)
debian/patches/qgstreamercapturesession_avoid_race_eos.patch (+24/-0)
debian/patches/series (+1/-0)
Changed in pulseaudio (Ubuntu): | |
assignee: | nobody → Ricardo Salveti (rsalveti) |
affects: | pulseaudio (Ubuntu) → gst-plugins-good0.10 (Ubuntu) |
tags: | added: hotfix |
Changed in canonical-devices-system-image: | |
status: | New → Confirmed |
importance: | Undecided → High |
assignee: | nobody → Canonical Phone Foundations (canonical-phonedations-team) |
tags: | removed: hotfix |
Changed in canonical-devices-system-image: | |
status: | Confirmed → Fix Released |
it look like qaudiorecorder bug
in qaudioinput_ alsa_p. cpp
buffer_time = 100000;
period_time = 20000;
but chunks = 8
if ( !fatal ) {
err = snd_pcm_ hw_params_ set_buffer_ time_near( handle, hwparams, &buffer_time, &dir);
if ( err < 0 ) {
fatal = true;
}
}
if ( !fatal ) {
err = snd_pcm_ hw_params_ set_period_ time_near( handle, hwparams, &period_time, &dir);
if ( err < 0 ) {
fatal = true;
}
}
if ( !fatal ) {
err = snd_pcm_ hw_params_ set_periods_ near(handle, hwparams, &chunks, &dir);
if ( err < 0 ) {
fatal = true;
}
}
if ( !fatal ) {
err = snd_pcm_ hw_params( handle, hwparams);
if ( err < 0 ) {
fatal = true;
}
}