2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 // @file FMedia_AudioInImpl.h
20 // @brief This is the header file for the FMediaAudioInImpl.
22 // This header file contains the declarations of the FMediaAudioInImpl.
25 #ifndef _FMEDIA_INTERNAL_AUDIO_IN_IMPL_H_
26 #define _FMEDIA_INTERNAL_AUDIO_IN_IMPL_H_
28 #include <unique_ptr.h>
30 #include <FBaseByteBuffer.h>
31 #include <FBaseRtIRunnable.h>
32 #include <FBaseRtMonitor.h>
33 #include <FBaseRtThread.h>
34 #include <FBaseColQueueT.h>
35 #include <FMediaAudioIn.h>
36 #include <FMediaAudioTypes.h>
37 #include <FMediaIAudioInEventListener.h>
39 namespace Tizen { namespace Media
44 : public Tizen::Base::Runtime::IRunnable
45 , public Tizen::Base::Object
49 virtual ~_AudioInImpl(void);
50 result Construct(IAudioInEventListener& listener);
51 int GetMaxBufferSize(void);
52 int GetMinBufferSize(void);
53 int GetOptimizedSampleRate(void);
54 AudioChannelType GetOptimizedChannelType(void);
55 AudioSampleType GetOptimizedSampleType(void);
56 AudioInState GetState(void);
57 result Prepare(AudioSampleType audioSampleType, AudioChannelType audioChannelType, int audioSampleRate);
58 result Unprepare(void);
62 result AddBuffer(const Tizen::Base::ByteBuffer* pByteBuffer);
63 //IRunnable Virtual Functions
64 Tizen::Base::Object* Run(void);
66 static _AudioInImpl* GetInstance(AudioIn* pAudioIn);
67 static const _AudioInImpl* GetInstance(const AudioIn* pAudioIn);
68 static void AudioIoInterrupted(audio_io_interrupted_code_e code, void *pUserData);
70 _AudioInImpl(const _AudioInImpl& rhs);
71 _AudioInImpl& operator =(const _AudioInImpl& rhs);
72 result SendBufferEndReachedEvent(Tizen::Base::ByteBuffer* pbuffer);
73 result SendInterrupted(void);
74 result SendReleased(void);
75 result SendAudioFocusChanged();
76 result MapExceptionToResult(int reason);
79 std::unique_ptr<_AudioInEvent> __pAudioInEvent;
80 std::unique_ptr<Tizen::Base::Runtime::Thread> __pWorkerThread;
81 std::unique_ptr<Tizen::Base::Runtime::Monitor> __pBufferSync;
82 AudioInState __audioInState;
83 IAudioInEventListener* __pAudioInEventListener;
84 audio_in_h __audioInHandle;
85 Tizen::Base::Collection::QueueT <const Tizen::Base::ByteBuffer*> __bufferQueue;
86 int __audioInOptimalBufferSize;
90 static bool __isConstructed;
92 static const int _AUDIO_IN_OPTIMAL_SAMPLE_RATE;
93 static const int _AUDIO_IN_MINIMUM_BUFFER_SIZE;
94 static const int _AUDIO_IN_MAXIMUM_BUFFER_SIZE;
95 static const AudioChannelType _AUDIO_IN_OPTIMAL_CHANNEL_TYPE;
96 static const AudioSampleType _AUDIO_IN_OPTIMAL_SAMPLE_TYPE;
97 }; //end of _AudioInImpl