From: Seungbae Shin Date: Tue, 3 Jan 2017 14:10:14 +0000 (+0900) Subject: Fix returning buffer size 0 before prepare X-Git-Tag: accepted/tizen/3.0/common/20170109.195808~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F53%2F108253%2F4;p=platform%2Fcore%2Fapi%2Faudio-io.git Fix returning buffer size 0 before prepare [Version] 0.3.50 [Profile] Common [Issue Type] Bug Change-Id: I61299c7bb60c128ca66b5ef79f2de366709cc254 --- diff --git a/include/CAudioIODef.h b/include/CAudioIODef.h index 04c2e55..9d710d3 100644 --- a/include/CAudioIODef.h +++ b/include/CAudioIODef.h @@ -110,6 +110,7 @@ #define SAFE_FINALIZE(_x_) {if ((_x_)) {(_x_)->finalize();}}; #define SAFE_REMOVE(_x_) {if ((_x_)) {(_x_)->finalize(); delete (_x_); (_x_) = NULL;}}; +#define DEFAULT_PERIOD_SIZE 50 #endif #endif /* __TIZEN_MEDIA_CPP_OBJECTS_IO_H__ */ diff --git a/include/CAudioInfo.h b/include/CAudioInfo.h index 5e4741e..00236a7 100644 --- a/include/CAudioInfo.h +++ b/include/CAudioInfo.h @@ -105,6 +105,7 @@ namespace tizen_media_audio { void convertAudioType2StreamType(CAudioInfo::EAudioType audioType, char **streamType); void convertInputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType); void convertOutputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType); + int getSampleSize(); private: const char *__STREAM_TYPE_TABLE[(unsigned int)EAudioType::AUDIO_TYPE_MAX] = { diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index 5346f2b..6351a45 100644 --- a/packaging/capi-media-audio-io.spec +++ b/packaging/capi-media-audio-io.spec @@ -1,6 +1,6 @@ Name: capi-media-audio-io Summary: An Audio Input & Audio Output library in Tizen Native API -Version: 0.3.49 +Version: 0.3.50 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/cpp/CAudioInfo.cpp b/src/cpp/CAudioInfo.cpp index 0e2f96d..47791a7 100644 --- a/src/cpp/CAudioInfo.cpp +++ b/src/cpp/CAudioInfo.cpp @@ -88,6 +88,39 @@ void CAudioInfo::setAudioIndex(int audioIndex) { return; } +int CAudioInfo::getSampleSize() { + int bytes_in_sample = 0; + int number_of_channel = 0; + + switch (__mSampleType) { + case ESampleType::SAMPLE_TYPE_U8: + bytes_in_sample = 1; + break; + case ESampleType::SAMPLE_TYPE_S16_LE: + bytes_in_sample = 2; + break; + default: + AUDIO_IO_LOGW("As unrecognized sample type %d, let's assume S16_LE", __mSampleType); + bytes_in_sample = 2; + break; + } + + switch (__mChannel) { + case EChannel::CHANNEL_MONO: + number_of_channel = 1; + break; + case EChannel::CHANNEL_STEREO: + number_of_channel = 2; + break; + default: + AUDIO_IO_LOGW("As unrecognized channel %d, let's assume STEREO", __mChannel); + number_of_channel = 2; + break; + } + + return bytes_in_sample * number_of_channel; +} + void CAudioInfo::convertAudioType2StreamType(CAudioInfo::EAudioType audioType, char **streamType) { if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX) { THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The audioType is not supported [audioType:%d]", audioType); diff --git a/src/cpp/CAudioInput.cpp b/src/cpp/CAudioInput.cpp index 4cee3e1..760c834 100644 --- a/src/cpp/CAudioInput.cpp +++ b/src/cpp/CAudioInput.cpp @@ -397,20 +397,8 @@ int CAudioInput::getBufferSize() throw(CAudioError) { THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CAudioInput"); } - if (__IsReady() == false) { - AUDIO_IO_LOGD("Warning: Did not prepare CAudioInput, then return zero"); - return 0; - } - - int size = 0; - - try { - size = mpPulseAudioClient->getBufferSize(); - } catch (CAudioError err) { - throw err; - } - - return size; + /* FIXME : return calculated size here to satisfy backward compatibility */ + return (mAudioInfo.getSampleRate() * DEFAULT_PERIOD_SIZE) / 1000 * mAudioInfo.getSampleSize(); } void CAudioInput::setStreamCallback(SStreamCallback callback) throw(CAudioError) { diff --git a/src/cpp/CAudioOutput.cpp b/src/cpp/CAudioOutput.cpp index ae33c40..e0524f6 100644 --- a/src/cpp/CAudioOutput.cpp +++ b/src/cpp/CAudioOutput.cpp @@ -302,20 +302,8 @@ int CAudioOutput::getBufferSize() throw(CAudioError) { THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CAudioOutput"); } - if (__IsReady() == false) { - AUDIO_IO_LOGD("Warning: Did not prepare CAudioOutput, then return zero"); - return 0; - } - - int size = 0; - - try { - size = mpPulseAudioClient->getBufferSize(); - } catch (CAudioError err) { - throw err; - } - - return size; + /* FIXME : return calculated size here to satisfy backward compatibility */ + return (mAudioInfo.getSampleRate() * DEFAULT_PERIOD_SIZE) / 1000 * mAudioInfo.getSampleSize(); } size_t CAudioOutput::write(const void* buffer, size_t length) throw(CAudioError) {