Remove legacy callback interfaces
Remove interfaces associated with the legacy callback interface.
Note, some dead code in AudioTrack cannot be removed due to dependence
of vendor code on link time (b/169889714).
Test: Compiles, modified tests pass
Bug: 199156212
Merged-In: I544613e61b6879c188ee6aafdc3bdbabac3cc064
Change-Id: I544613e61b6879c188ee6aafdc3bdbabac3cc064
diff --git a/media/libaudioclient/tests/audio_test_utils.cpp b/media/libaudioclient/tests/audio_test_utils.cpp
index b068bdf..d7ce014 100644
--- a/media/libaudioclient/tests/audio_test_utils.cpp
+++ b/media/libaudioclient/tests/audio_test_utils.cpp
@@ -45,22 +45,6 @@
return OK;
}
-// AudioTrack callback function.
-static void AudioTrackCallBackFunction(int event, void* user, void* info __unused) {
- switch (event) {
- case AudioTrack::EVENT_BUFFER_END: {
- AudioPlayback* ap = (AudioPlayback*)user;
- std::unique_lock<std::mutex> lock{ap->mMutex};
- ap->mStopPlaying = true;
- ap->mCondition.notify_all();
- break;
- }
- default:
- ALOGV("received audiotrack callback %d", event);
- break;
- }
-}
-
AudioPlayback::AudioPlayback(uint32_t sampleRate, audio_format_t format,
audio_channel_mask_t channelMask, audio_output_flags_t flags,
audio_session_t sessionId, AudioTrack::transfer_type transferType,
@@ -94,13 +78,14 @@
attributionSource.token = sp<BBinder>::make();
if (mTransferType == AudioTrack::TRANSFER_OBTAIN) {
mTrack = new AudioTrack(attributionSource);
- mTrack->set(AUDIO_STREAM_MUSIC, mSampleRate, mFormat, mChannelMask, 0, mFlags, nullptr,
- nullptr, 0, 0, false, mSessionId, mTransferType, nullptr, attributionSource,
- mAttributes);
+ mTrack->set(AUDIO_STREAM_MUSIC, mSampleRate, mFormat, mChannelMask, 0 /* frameCount */,
+ mFlags, nullptr /* callback */, 0 /* notificationFrames */,
+ nullptr /* sharedBuffer */, false /*canCallJava */, mSessionId, mTransferType,
+ nullptr /* offloadInfo */, attributionSource, mAttributes);
} else if (mTransferType == AudioTrack::TRANSFER_SHARED) {
mTrack = new AudioTrack(AUDIO_STREAM_MUSIC, mSampleRate, mFormat, mChannelMask, mMemory,
- mFlags, AudioTrackCallBackFunction, this, 0, mSessionId,
- mTransferType, nullptr, attributionSource, mAttributes);
+ mFlags, wp<AudioTrack::IAudioTrackCallback>::fromExisting(this), 0,
+ mSessionId, mTransferType, nullptr, attributionSource, mAttributes);
} else {
ALOGE("Required Transfer type not existed");
return INVALID_OPERATION;
@@ -157,6 +142,12 @@
return status;
}
+void AudioPlayback::onBufferEnd() {
+ std::unique_lock<std::mutex> lock{mMutex};
+ mStopPlaying = true;
+ mCondition.notify_all();
+}
+
status_t AudioPlayback::fillBuffer() {
if (PLAY_STARTED != mState && PLAY_STOPPED != mState) return INVALID_OPERATION;
int retry = 25;
@@ -415,12 +406,13 @@
if (mTransferType == AudioRecord::TRANSFER_OBTAIN) {
if (mSampleRate == 48000) { // test all available constructors
mRecord = new AudioRecord(mInputSource, mSampleRate, mFormat, mChannelMask,
- attributionSource, mFrameCount, nullptr, nullptr,
+ attributionSource, mFrameCount, nullptr /* callback */,
mNotificationFrames, mSessionId, mTransferType, mFlags);
} else {
mRecord = new AudioRecord(attributionSource);
status = mRecord->set(mInputSource, mSampleRate, mFormat, mChannelMask, mFrameCount,
- nullptr, nullptr, 0, false, mSessionId, mTransferType, mFlags,
+ nullptr /* callback */, 0 /* notificationFrames */,
+ false /* canCallJava */, mSessionId, mTransferType, mFlags,
attributionSource.uid, attributionSource.pid);
}
if (NO_ERROR != status) return status;
diff --git a/media/libaudioclient/tests/audio_test_utils.h b/media/libaudioclient/tests/audio_test_utils.h
index 227f509..fc269ed 100644
--- a/media/libaudioclient/tests/audio_test_utils.h
+++ b/media/libaudioclient/tests/audio_test_utils.h
@@ -63,14 +63,14 @@
};
// Simple AudioPlayback class.
-class AudioPlayback {
- public:
+class AudioPlayback : public AudioTrack::IAudioTrackCallback {
+ friend sp<AudioPlayback>;
AudioPlayback(uint32_t sampleRate, audio_format_t format, audio_channel_mask_t channelMask,
audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE,
audio_session_t sessionId = AUDIO_SESSION_NONE,
AudioTrack::transfer_type transferType = AudioTrack::TRANSFER_SHARED,
audio_attributes_t* attributes = nullptr);
- ~AudioPlayback();
+ public:
status_t loadResource(const char* name);
status_t create();
sp<AudioTrack> getAudioTrackHandle();
@@ -78,6 +78,7 @@
status_t waitForConsumption(bool testSeek = false);
status_t fillBuffer();
status_t onProcess(bool testSeek = false);
+ virtual void onBufferEnd() override;
void stop();
bool mStopPlaying;
@@ -92,6 +93,7 @@
};
private:
+ ~AudioPlayback();
const uint32_t mSampleRate;
const audio_format_t mFormat;
const audio_channel_mask_t mChannelMask;
diff --git a/media/libaudioclient/tests/audioeffect_tests.cpp b/media/libaudioclient/tests/audioeffect_tests.cpp
index 6c62d7e..346f4fd 100644
--- a/media/libaudioclient/tests/audioeffect_tests.cpp
+++ b/media/libaudioclient/tests/audioeffect_tests.cpp
@@ -279,9 +279,9 @@
audio_attributes_t attributes;
attributes.usage = AUDIO_USAGE_MEDIA;
attributes.content_type = AUDIO_CONTENT_TYPE_MUSIC;
- std::unique_ptr<AudioPlayback> playback = std::make_unique<AudioPlayback>(
- 44100, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
- AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED, &attributes);
+ auto playback = sp<AudioPlayback>::make(
+ 44100 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO,
+ AUDIO_OUTPUT_FLAG_NONE, AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED, &attributes);
ASSERT_NE(nullptr, playback);
ASSERT_EQ(NO_ERROR, playback->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"));
EXPECT_EQ(NO_ERROR, playback->create());
@@ -291,7 +291,7 @@
<< "Effect should not have been added. " << type;
EXPECT_EQ(NO_ERROR, playback->waitForConsumption());
playback->stop();
- playback.reset();
+ playback.clear();
String16 name{gPackageName};
audio_unique_id_t id;
@@ -299,9 +299,9 @@
type, name, nullptr, kDefaultOutputEffectPriority, AUDIO_USAGE_MEDIA, &id);
EXPECT_EQ(NO_ERROR, status) << "Adding default effect failed: " << type;
- playback = std::make_unique<AudioPlayback>(
- 44100, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
- AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED, &attributes);
+ playback = sp<AudioPlayback>::make(
+ 44100 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO,
+ AUDIO_OUTPUT_FLAG_NONE, AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED, &attributes);
ASSERT_NE(nullptr, playback);
ASSERT_EQ(NO_ERROR, playback->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"));
EXPECT_EQ(NO_ERROR, playback->create());
@@ -315,13 +315,13 @@
playback->getAudioTrackHandle()->getAuxEffectSendLevel(&levelGot);
EXPECT_EQ(level, levelGot);
playback->stop();
- playback.reset();
+ playback.clear();
status = AudioEffect::removeStreamDefaultEffect(id);
EXPECT_EQ(NO_ERROR, status);
- playback = std::make_unique<AudioPlayback>(
- 44100, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
- AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED, &attributes);
+ playback = sp<AudioPlayback>::make(
+ 44100 /*sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO,
+ AUDIO_OUTPUT_FLAG_NONE, AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED, &attributes);
ASSERT_NE(nullptr, playback);
ASSERT_EQ(NO_ERROR, playback->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"));
EXPECT_EQ(NO_ERROR, playback->create());
@@ -331,5 +331,5 @@
<< "Effect should not have been added. " << type;
EXPECT_EQ(NO_ERROR, playback->waitForConsumption());
playback->stop();
- playback.reset();
+ playback.clear();
}
diff --git a/media/libaudioclient/tests/audiorecord_tests.cpp b/media/libaudioclient/tests/audiorecord_tests.cpp
index 8ac5e82..754e6cc 100644
--- a/media/libaudioclient/tests/audiorecord_tests.cpp
+++ b/media/libaudioclient/tests/audiorecord_tests.cpp
@@ -99,8 +99,8 @@
}
TEST_F(AudioRecordTest, TestEventRecordTrackPause) {
- std::unique_ptr<AudioPlayback> playback{
- new AudioPlayback(8000, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_MONO)};
+ const auto playback = sp<AudioPlayback>::make(
+ 8000 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_MONO);
ASSERT_EQ(OK, playback->loadResource("/data/local/tmp/bbb_1ch_8kHz_s16le.raw"))
<< "Unable to open Resource";
EXPECT_EQ(OK, playback->create()) << "AudioTrack Creation failed";
@@ -117,8 +117,8 @@
}
TEST_F(AudioRecordTest, TestEventRecordTrackStop) {
- std::unique_ptr<AudioPlayback> playback{
- new AudioPlayback(8000, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_MONO)};
+ const auto playback = sp<AudioPlayback>::make(
+ 8000 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_MONO);
ASSERT_EQ(OK, playback->loadResource("/data/local/tmp/bbb_1ch_8kHz_s16le.raw"))
<< "Unable to open Resource";
EXPECT_EQ(OK, playback->create()) << "AudioTrack Creation failed";
diff --git a/media/libaudioclient/tests/audiorouting_tests.cpp b/media/libaudioclient/tests/audiorouting_tests.cpp
index b9efe25..32ba597 100644
--- a/media/libaudioclient/tests/audiorouting_tests.cpp
+++ b/media/libaudioclient/tests/audiorouting_tests.cpp
@@ -177,9 +177,10 @@
attributes.usage = AUDIO_USAGE_MEDIA;
attributes.content_type = AUDIO_CONTENT_TYPE_MUSIC;
attributes.flags = flags[i];
- std::unique_ptr<AudioPlayback> ap(new AudioPlayback(
- 0, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
- AUDIO_SESSION_NONE, AudioTrack::TRANSFER_OBTAIN, &attributes));
+ sp<AudioPlayback> ap = sp<AudioPlayback>::make(
+ 0 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO,
+ AUDIO_OUTPUT_FLAG_NONE, AUDIO_SESSION_NONE, AudioTrack::TRANSFER_OBTAIN,
+ &attributes);
ASSERT_NE(nullptr, ap);
ASSERT_EQ(OK, ap->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"))
<< "Unable to open Resource";
@@ -222,9 +223,9 @@
ASSERT_NE(nullptr, capture);
ASSERT_EQ(OK, capture->create()) << "record creation failed";
- std::unique_ptr<AudioPlayback> playback = std::make_unique<AudioPlayback>(
- 48000, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
- AUDIO_SESSION_NONE);
+ sp<AudioPlayback> playback = sp<AudioPlayback>::make(
+ 48000 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO,
+ AUDIO_OUTPUT_FLAG_NONE, AUDIO_SESSION_NONE);
ASSERT_NE(nullptr, playback);
ASSERT_EQ(OK, playback->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"))
<< "Unable to open Resource";
diff --git a/media/libaudioclient/tests/audiotrack_tests.cpp b/media/libaudioclient/tests/audiotrack_tests.cpp
index 770ee52..a49af96 100644
--- a/media/libaudioclient/tests/audiotrack_tests.cpp
+++ b/media/libaudioclient/tests/audiotrack_tests.cpp
@@ -23,9 +23,9 @@
using namespace android;
TEST(AudioTrackTest, TestPlayTrack) {
- std::unique_ptr<AudioPlayback> ap(new AudioPlayback(
- 44100, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
- AUDIO_SESSION_NONE, AudioTrack::TRANSFER_OBTAIN));
+ const auto ap = sp<AudioPlayback>::make(44100 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT,
+ AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_NONE,
+ AUDIO_SESSION_NONE, AudioTrack::TRANSFER_OBTAIN);
ASSERT_NE(nullptr, ap);
ASSERT_EQ(OK, ap->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"))
<< "Unable to open Resource";
@@ -36,8 +36,8 @@
}
TEST(AudioTrackTest, TestSeek) {
- std::unique_ptr<AudioPlayback> ap(
- new AudioPlayback(44100, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO));
+ const auto ap = sp<AudioPlayback>::make(
+ 44100 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO);
ASSERT_NE(nullptr, ap);
ASSERT_EQ(OK, ap->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"))
<< "Unable to open Resource";
@@ -48,9 +48,9 @@
}
TEST(AudioTrackTest, TestAudioCbNotifier) {
- std::unique_ptr<AudioPlayback> ap(new AudioPlayback(
- 0, AUDIO_FORMAT_PCM_16_BIT, AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_FAST,
- AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED));
+ const auto ap = sp<AudioPlayback>::make(0 /* sampleRate */, AUDIO_FORMAT_PCM_16_BIT,
+ AUDIO_CHANNEL_OUT_STEREO, AUDIO_OUTPUT_FLAG_FAST,
+ AUDIO_SESSION_NONE, AudioTrack::TRANSFER_SHARED);
ASSERT_NE(nullptr, ap);
ASSERT_EQ(OK, ap->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"))
<< "Unable to open Resource";
@@ -92,10 +92,10 @@
const audio_output_flags_t mFlags;
const audio_session_t mSessionId;
- std::unique_ptr<AudioPlayback> mAP;
+ sp<AudioPlayback> mAP;
virtual void SetUp() override {
- mAP = std::make_unique<AudioPlayback>(mSampleRate, mFormat, mChannelMask, mFlags,
+ mAP = sp<AudioPlayback>::make(mSampleRate, mFormat, mChannelMask, mFlags,
mSessionId);
ASSERT_NE(nullptr, mAP);
ASSERT_EQ(OK, mAP->loadResource("/data/local/tmp/bbb_2ch_24kHz_s16le.raw"))
diff --git a/media/libaudioclient/tests/trackplayerbase_tests.cpp b/media/libaudioclient/tests/trackplayerbase_tests.cpp
index ea4b46e..c9b704d 100644
--- a/media/libaudioclient/tests/trackplayerbase_tests.cpp
+++ b/media/libaudioclient/tests/trackplayerbase_tests.cpp
@@ -44,9 +44,9 @@
virtual void SetUp() override {
mFrameCount = mDuration * mSampleRate;
audio_channel_mask_t channelMask = audio_channel_out_mask_from_count(mChannelCount);
- sp<AudioTrack> track =
- new AudioTrack(mStreamType, mSampleRate, mFormat, channelMask, mFrameCount, mFlags,
- NULL, nullptr, 0, AUDIO_SESSION_NONE);
+ sp<AudioTrack> track = new AudioTrack(mStreamType, mSampleRate, mFormat, channelMask,
+ mFrameCount, mFlags, nullptr /* callback */,
+ 0 /* notificationFrames */, AUDIO_SESSION_NONE);
ASSERT_EQ(track->initCheck(), NO_ERROR);
mPlayer = new TrackPlayer();