• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2012, The Android Open Source Project
4 **
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
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
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.
16 */
17 
18 #ifndef INCLUDING_FROM_AUDIOFLINGER_H
19     #error This header file should only be included from AudioFlinger.h
20 #endif
21 
22 // record track
23 class RecordTrack : public TrackBase {
24 public:
25                         RecordTrack(RecordThread *thread,
26                                 const sp<Client>& client,
27                                 uint32_t sampleRate,
28                                 audio_format_t format,
29                                 audio_channel_mask_t channelMask,
30                                 size_t frameCount,
31                                 int sessionId,
32                                 int uid);
33     virtual             ~RecordTrack();
34 
35     virtual status_t    start(AudioSystem::sync_event_t event, int triggerSession);
36     virtual void        stop();
37 
38             void        destroy();
39 
40             void        invalidate();
41             // clear the buffer overflow flag
clearOverflow()42             void        clearOverflow() { mOverflow = false; }
43             // set the buffer overflow flag and return previous value
setOverflow()44             bool        setOverflow() { bool tmp = mOverflow; mOverflow = true;
45                                                 return tmp; }
46 
47     static  void        appendDumpHeader(String8& result);
48             void        dump(char* buffer, size_t size);
49 
50 private:
51     friend class AudioFlinger;  // for mState
52 
53                         RecordTrack(const RecordTrack&);
54                         RecordTrack& operator = (const RecordTrack&);
55 
56     // AudioBufferProvider interface
57     virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer,
58                                    int64_t pts = kInvalidPTS);
59     // releaseBuffer() not overridden
60 
61     bool                mOverflow;  // overflow on most recent attempt to fill client buffer
62     AudioRecordServerProxy* mAudioRecordServerProxy;
63 };
64