Skip to content

Commit 2b119a6

Browse files
gkastenAndroid (Google) Code Review
authored andcommitted
Merge "AudioBufferProvider comments and cleanup"
2 parents aac9948 + c2db119 commit 2b119a6

File tree

6 files changed

+31
-53
lines changed

6 files changed

+31
-53
lines changed

services/audioflinger/Android.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ LOCAL_SRC_FILES:= \
77
AudioMixer.cpp.arm \
88
AudioResampler.cpp.arm \
99
AudioPolicyService.cpp \
10-
AudioBufferProvider.cpp \
1110
ServiceUtilities.cpp
1211
# AudioResamplerSinc.cpp.arm
1312
# AudioResamplerCubic.cpp.arm

services/audioflinger/AudioBufferProvider.cpp

Lines changed: 0 additions & 28 deletions
This file was deleted.

services/audioflinger/AudioBufferProvider.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
#ifndef ANDROID_AUDIO_BUFFER_PROVIDER_H
1818
#define ANDROID_AUDIO_BUFFER_PROVIDER_H
1919

20-
#include <stdint.h>
21-
#include <sys/types.h>
2220
#include <utils/Errors.h>
2321

2422
namespace android {
@@ -29,6 +27,7 @@ class AudioBufferProvider
2927
public:
3028

3129
struct Buffer {
30+
Buffer() : raw(NULL), frameCount(0) { }
3231
union {
3332
void* raw;
3433
short* i16;
@@ -40,12 +39,12 @@ class AudioBufferProvider
4039
virtual ~AudioBufferProvider() {}
4140

4241
// value representing an invalid presentation timestamp
43-
static const int64_t kInvalidPTS;
42+
static const int64_t kInvalidPTS = 0x7FFFFFFFFFFFFFFFLL; // <stdint.h> is too painful
4443

4544
// pts is the local time when the next sample yielded by getNextBuffer
4645
// will be rendered.
4746
// Pass kInvalidPTS if the PTS is unknown or not applicable.
48-
virtual status_t getNextBuffer(Buffer* buffer, int64_t pts) = 0;
47+
virtual status_t getNextBuffer(Buffer* buffer, int64_t pts = kInvalidPTS) = 0;
4948

5049
virtual void releaseBuffer(Buffer* buffer) = 0;
5150
};

services/audioflinger/AudioFlinger.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2909,8 +2909,7 @@ bool AudioFlinger::DirectOutputThread::threadLoop()
29092909
// output audio to hardware
29102910
while (frameCount) {
29112911
buffer.frameCount = frameCount;
2912-
activeTrack->getNextBuffer(&buffer,
2913-
AudioBufferProvider::kInvalidPTS);
2912+
activeTrack->getNextBuffer(&buffer);
29142913
if (CC_UNLIKELY(buffer.raw == NULL)) {
29152914
memset(curBuf, 0, frameCount * mFrameSize);
29162915
break;
@@ -3408,11 +3407,14 @@ AudioFlinger::ThreadBase::TrackBase::~TrackBase()
34083407
}
34093408
}
34103409

3410+
// AudioBufferProvider interface
3411+
// getNextBuffer() = 0;
3412+
// This implementation of releaseBuffer() is used by Track and RecordTrack, but not TimedTrack
34113413
void AudioFlinger::ThreadBase::TrackBase::releaseBuffer(AudioBufferProvider::Buffer* buffer)
34123414
{
34133415
buffer->raw = NULL;
34143416
mFrameCount = buffer->frameCount;
3415-
step();
3417+
(void) step(); // ignore return value of step()
34163418
buffer->frameCount = 0;
34173419
}
34183420

@@ -3558,6 +3560,7 @@ void AudioFlinger::PlaybackThread::Track::dump(char* buffer, size_t size)
35583560
(int)mAuxBuffer);
35593561
}
35603562

3563+
// AudioBufferProvider interface
35613564
status_t AudioFlinger::PlaybackThread::Track::getNextBuffer(
35623565
AudioBufferProvider::Buffer* buffer, int64_t pts)
35633566
{
@@ -4106,6 +4109,7 @@ void AudioFlinger::PlaybackThread::TimedTrack::timedYieldSilence(
41064109
mTimedAudioOutputOnTime = false;
41074110
}
41084111

4112+
// AudioBufferProvider interface
41094113
void AudioFlinger::PlaybackThread::TimedTrack::releaseBuffer(
41104114
AudioBufferProvider::Buffer* buffer) {
41114115

@@ -4190,6 +4194,7 @@ AudioFlinger::RecordThread::RecordTrack::~RecordTrack()
41904194
}
41914195
}
41924196

4197+
// AudioBufferProvider interface
41934198
status_t AudioFlinger::RecordThread::RecordTrack::getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts)
41944199
{
41954200
audio_track_cblk_t* cblk = this->cblk();
@@ -4877,8 +4882,7 @@ bool AudioFlinger::RecordThread::threadLoop()
48774882
}
48784883

48794884
buffer.frameCount = mFrameCount;
4880-
if (CC_LIKELY(mActiveTrack->getNextBuffer(
4881-
&buffer, AudioBufferProvider::kInvalidPTS) == NO_ERROR)) {
4885+
if (CC_LIKELY(mActiveTrack->getNextBuffer(&buffer) == NO_ERROR)) {
48824886
size_t framesOut = buffer.frameCount;
48834887
if (mResampler == NULL) {
48844888
// no resampling
@@ -5155,6 +5159,7 @@ status_t AudioFlinger::RecordThread::dump(int fd, const Vector<String16>& args)
51555159
return NO_ERROR;
51565160
}
51575161

5162+
// AudioBufferProvider interface
51585163
status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts)
51595164
{
51605165
size_t framesReq = buffer->frameCount;
@@ -5193,6 +5198,7 @@ status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer*
51935198
return NO_ERROR;
51945199
}
51955200

5201+
// AudioBufferProvider interface
51965202
void AudioFlinger::RecordThread::releaseBuffer(AudioBufferProvider::Buffer* buffer)
51975203
{
51985204
mRsmpInIndex += buffer->frameCount;

services/audioflinger/AudioFlinger.h

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,9 +339,8 @@ class AudioFlinger :
339339
TrackBase(const TrackBase&);
340340
TrackBase& operator = (const TrackBase&);
341341

342-
virtual status_t getNextBuffer(
343-
AudioBufferProvider::Buffer* buffer,
344-
int64_t pts) = 0;
342+
// AudioBufferProvider interface
343+
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts) = 0;
345344
virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer);
346345

347346
audio_format_t format() const {
@@ -627,9 +626,10 @@ class AudioFlinger :
627626
Track(const Track&);
628627
Track& operator = (const Track&);
629628

630-
virtual status_t getNextBuffer(
631-
AudioBufferProvider::Buffer* buffer,
632-
int64_t pts);
629+
// AudioBufferProvider interface
630+
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts = kInvalidPTS);
631+
// releaseBuffer() not overridden
632+
633633
virtual uint32_t framesReady() const;
634634

635635
bool isMuted() const { return mMute; }
@@ -696,9 +696,10 @@ class AudioFlinger :
696696

697697
virtual uint32_t framesReady() const;
698698

699-
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer,
700-
int64_t pts);
699+
// AudioBufferProvider interface
700+
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts);
701701
virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer);
702+
702703
void timedYieldSamples(AudioBufferProvider::Buffer* buffer);
703704
void timedYieldSilence(uint32_t numFrames,
704705
AudioBufferProvider::Buffer* buffer);
@@ -1062,9 +1063,9 @@ class AudioFlinger :
10621063
RecordTrack(const RecordTrack&);
10631064
RecordTrack& operator = (const RecordTrack&);
10641065

1065-
virtual status_t getNextBuffer(
1066-
AudioBufferProvider::Buffer* buffer,
1067-
int64_t pts);
1066+
// AudioBufferProvider interface
1067+
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts = kInvalidPTS);
1068+
// releaseBuffer() not overridden
10681069

10691070
bool mOverflow;
10701071
};
@@ -1100,9 +1101,10 @@ class AudioFlinger :
11001101
AudioStreamIn* clearInput();
11011102
virtual audio_stream_t* stream();
11021103

1103-
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer,
1104-
int64_t pts);
1104+
// AudioBufferProvider interface
1105+
virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts);
11051106
virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer);
1107+
11061108
virtual bool checkForNewParameters_l();
11071109
virtual String8 getParameters(const String8& keys);
11081110
virtual void audioConfigChanged_l(int event, int param = 0);

services/audioflinger/AudioMixer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,11 @@ size_t AudioMixer::getUnreleasedFrames(int name) const
332332
return 0;
333333
}
334334

335-
void AudioMixer::setBufferProvider(int name, AudioBufferProvider* buffer)
335+
void AudioMixer::setBufferProvider(int name, AudioBufferProvider* bufferProvider)
336336
{
337337
name -= TRACK0;
338338
assert(uint32_t(name) < MAX_NUM_TRACKS);
339-
mState.tracks[name].bufferProvider = buffer;
339+
mState.tracks[name].bufferProvider = bufferProvider;
340340
}
341341

342342

0 commit comments

Comments
 (0)