summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/speech/speech_recognizer.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/chrome/browser/speech/speech_recognizer.cc b/chrome/browser/speech/speech_recognizer.cc
index 38bbeca..113600b 100644
--- a/chrome/browser/speech/speech_recognizer.cc
+++ b/chrome/browser/speech/speech_recognizer.cc
@@ -129,8 +129,12 @@ void SpeechRecognizer::StopRecording() {
// Since the http request takes a single string as POST data, allocate
// one and copy over bytes from the audio buffers to the string.
// And If we haven't got any audio yet end the recognition sequence here.
+ string mime_type = encoder_->mime_type();
string data;
- if (!encoder_->GetEncodedData(&data)) {
+ encoder_->GetEncodedData(&data);
+ encoder_.reset();
+
+ if (data.empty()) {
// Guard against the delegate freeing us until we finish our job.
scoped_refptr<SpeechRecognizer> me(this);
delegate_->DidCompleteRecognition(caller_id_);
@@ -139,9 +143,8 @@ void SpeechRecognizer::StopRecording() {
request_.reset(new SpeechRecognitionRequest(
Profile::GetDefaultRequestContext(), this));
request_->Send(language_, grammar_, hardware_info_, origin_url_,
- encoder_->mime_type(), data);
+ mime_type, data);
}
- encoder_.reset();
}
void SpeechRecognizer::ReleaseAudioBuffers() {