MediaPlayer2: remove unused code.
Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I046c7be126a329dfd8f11cdc7471a7ec70a1c64f
diff --git a/media/libmedia/MediaPlayer2Manager.cpp b/media/libmedia/MediaPlayer2Manager.cpp
index 76b4c0b..4c0a7ac 100644
--- a/media/libmedia/MediaPlayer2Manager.cpp
+++ b/media/libmedia/MediaPlayer2Manager.cpp
@@ -82,7 +82,6 @@
using android::BAD_VALUE;
using android::NOT_ENOUGH_DATA;
using android::Parcel;
-using android::media::VolumeShaper;
// Max number of entries in the filter.
const int kMaxFilterSize = 64; // I pulled that out of thin air.
@@ -503,7 +502,6 @@
mStatus = NO_INIT;
mAudioSessionId = audioSessionId;
mUid = uid;
- mRetransmitEndpointValid = false;
mAudioAttributes = NULL;
#if CALLBACK_ANTAGONIZER
@@ -605,14 +603,6 @@
return status;
}
- // Set the re-transmission endpoint if one was chosen.
- if (mRetransmitEndpointValid) {
- status = p->setRetransmitEndpoint(&mRetransmitEndpoint);
- if (status != NO_ERROR) {
- ALOGE("setRetransmitEndpoint error: %d", status);
- }
- }
-
return status;
}
@@ -927,34 +917,6 @@
return OK;
}
-VolumeShaper::Status MediaPlayer2Manager::Client::applyVolumeShaper(
- const sp<VolumeShaper::Configuration>& configuration,
- const sp<VolumeShaper::Operation>& operation) {
- // for hardware output, call player instead
- ALOGV("Client::applyVolumeShaper(%p)", this);
- sp<MediaPlayer2Interface> p = getPlayer();
- {
- Mutex::Autolock l(mLock);
- if (mAudioOutput.get() != nullptr) {
- return mAudioOutput->applyVolumeShaper(configuration, operation);
- }
- }
- return VolumeShaper::Status(INVALID_OPERATION);
-}
-
-sp<VolumeShaper::State> MediaPlayer2Manager::Client::getVolumeShaperState(int id) {
- // for hardware output, call player instead
- ALOGV("Client::getVolumeShaperState(%p)", this);
- sp<MediaPlayer2Interface> p = getPlayer();
- {
- Mutex::Autolock l(mLock);
- if (mAudioOutput.get() != nullptr) {
- return mAudioOutput->getVolumeShaperState(id);
- }
- }
- return nullptr;
-}
-
status_t MediaPlayer2Manager::Client::seekTo(int msec, MediaPlayer2SeekMode mode)
{
ALOGV("[%d] seekTo(%d, %d)", mConnId, msec, mode);
@@ -966,7 +928,6 @@
status_t MediaPlayer2Manager::Client::reset()
{
ALOGV("[%d] reset", mConnId);
- mRetransmitEndpointValid = false;
sp<MediaPlayer2Interface> p = getPlayer();
if (p == 0) return UNKNOWN_ERROR;
return p->reset();
@@ -1069,53 +1030,6 @@
return p->getParameter(key, reply);
}
-status_t MediaPlayer2Manager::Client::setRetransmitEndpoint(
- const struct sockaddr_in* endpoint) {
-
- if (NULL != endpoint) {
- uint32_t a = ntohl(endpoint->sin_addr.s_addr);
- uint16_t p = ntohs(endpoint->sin_port);
- ALOGV("[%d] setRetransmitEndpoint(%u.%u.%u.%u:%hu)", mConnId,
- (a >> 24), (a >> 16) & 0xFF, (a >> 8) & 0xFF, (a & 0xFF), p);
- } else {
- ALOGV("[%d] setRetransmitEndpoint = <none>", mConnId);
- }
-
- // Right now, the only valid time to set a retransmit endpoint is before
- // setDataSource.
-
- if (NULL != endpoint) {
- Mutex::Autolock lock(mLock);
- mRetransmitEndpoint = *endpoint;
- mRetransmitEndpointValid = true;
- } else {
- Mutex::Autolock lock(mLock);
- mRetransmitEndpointValid = false;
- }
-
- return NO_ERROR;
-}
-
-status_t MediaPlayer2Manager::Client::getRetransmitEndpoint(
- struct sockaddr_in* endpoint)
-{
- if (NULL == endpoint)
- return BAD_VALUE;
-
- sp<MediaPlayer2Interface> p = getPlayer();
-
- if (p != NULL)
- return p->getRetransmitEndpoint(endpoint);
-
- Mutex::Autolock lock(mLock);
- if (!mRetransmitEndpointValid)
- return NO_INIT;
-
- *endpoint = mRetransmitEndpoint;
-
- return NO_ERROR;
-}
-
void MediaPlayer2Manager::Client::notify(
const wp<MediaPlayer2Engine> &listener, int msg, int ext1, int ext2, const Parcel *obj)
{
@@ -1319,7 +1233,6 @@
mSendLevel(0.0),
mAuxEffectId(0),
mFlags(AUDIO_OUTPUT_FLAG_NONE),
- mVolumeHandler(new media::VolumeHandler()),
mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE),
mRoutedDeviceId(AUDIO_PORT_HANDLE_NONE),
mDeviceCallbackEnabled(false),
@@ -1790,24 +1703,6 @@
ALOGV("setVolume");
t->setVolume(mLeftVolume, mRightVolume);
- // Restore VolumeShapers for the MediaPlayer2 in case the track was recreated
- // due to an output sink error (e.g. offload to non-offload switch).
- mVolumeHandler->forall([&t](const VolumeShaper &shaper) -> VolumeShaper::Status {
- sp<VolumeShaper::Operation> operationToEnd =
- new VolumeShaper::Operation(shaper.mOperation);
- // TODO: Ideally we would restore to the exact xOffset position
- // as returned by getVolumeShaperState(), but we don't have that
- // information when restoring at the client unless we periodically poll
- // the server or create shared memory state.
- //
- // For now, we simply advance to the end of the VolumeShaper effect
- // if it has been started.
- if (shaper.isStarted()) {
- operationToEnd->setNormalizedTime(1.f);
- }
- return t->applyVolumeShaper(shaper.mConfiguration, operationToEnd);
- });
-
mSampleRateHz = sampleRate;
mFlags = flags;
mMsecsPerFrame = 1E3f / (mPlaybackRate.mSpeed * sampleRate);
@@ -1852,9 +1747,6 @@
mTrack->setVolume(mLeftVolume, mRightVolume);
mTrack->setAuxEffectSendLevel(mSendLevel);
status_t status = mTrack->start();
- if (status == NO_ERROR) {
- mVolumeHandler->setStarted();
- }
return status;
}
return NO_INIT;
@@ -2091,67 +1983,6 @@
return NO_ERROR;
}
-VolumeShaper::Status MediaPlayer2Manager::AudioOutput::applyVolumeShaper(
- const sp<VolumeShaper::Configuration>& configuration,
- const sp<VolumeShaper::Operation>& operation)
-{
- Mutex::Autolock lock(mLock);
- ALOGV("AudioOutput::applyVolumeShaper");
-
- mVolumeHandler->setIdIfNecessary(configuration);
-
- VolumeShaper::Status status;
- if (mTrack != 0) {
- status = mTrack->applyVolumeShaper(configuration, operation);
- if (status >= 0) {
- (void)mVolumeHandler->applyVolumeShaper(configuration, operation);
- if (mTrack->isPlaying()) { // match local AudioTrack to properly restore.
- mVolumeHandler->setStarted();
- }
- }
- } else {
- // VolumeShapers are not affected when a track moves between players for
- // gapless playback (setNextMediaPlayer).
- // We forward VolumeShaper operations that do not change configuration
- // to the new player so that unducking may occur as expected.
- // Unducking is an idempotent operation, same if applied back-to-back.
- if (configuration->getType() == VolumeShaper::Configuration::TYPE_ID
- && mNextOutput != nullptr) {
- ALOGV("applyVolumeShaper: Attempting to forward missed operation: %s %s",
- configuration->toString().c_str(), operation->toString().c_str());
- Mutex::Autolock nextLock(mNextOutput->mLock);
-
- // recycled track should be forwarded from this AudioSink by switchToNextOutput
- sp<AudioTrack> track = mNextOutput->mRecycledTrack;
- if (track != nullptr) {
- ALOGD("Forward VolumeShaper operation to recycled track %p", track.get());
- (void)track->applyVolumeShaper(configuration, operation);
- } else {
- // There is a small chance that the unduck occurs after the next
- // player has already started, but before it is registered to receive
- // the unduck command.
- track = mNextOutput->mTrack;
- if (track != nullptr) {
- ALOGD("Forward VolumeShaper operation to track %p", track.get());
- (void)track->applyVolumeShaper(configuration, operation);
- }
- }
- }
- status = mVolumeHandler->applyVolumeShaper(configuration, operation);
- }
- return status;
-}
-
-sp<VolumeShaper::State> MediaPlayer2Manager::AudioOutput::getVolumeShaperState(int id)
-{
- Mutex::Autolock lock(mLock);
- if (mTrack != 0) {
- return mTrack->getVolumeShaperState(id);
- } else {
- return mVolumeHandler->getVolumeShaperState(id);
- }
-}
-
// static
void MediaPlayer2Manager::AudioOutput::CallbackWrapper(
int event, void *cookie, void *info) {
diff --git a/media/libmedia/MediaPlayer2Manager.h b/media/libmedia/MediaPlayer2Manager.h
index cdbbc70..95b875b 100644
--- a/media/libmedia/MediaPlayer2Manager.h
+++ b/media/libmedia/MediaPlayer2Manager.h
@@ -132,11 +132,6 @@
virtual status_t setParameters(const String8& keyValuePairs);
virtual String8 getParameters(const String8& keys);
- virtual media::VolumeShaper::Status applyVolumeShaper(
- const sp<media::VolumeShaper::Configuration>& configuration,
- const sp<media::VolumeShaper::Operation>& operation) override;
- virtual sp<media::VolumeShaper::State> getVolumeShaperState(int id) override;
-
// AudioRouting
virtual status_t setOutputDevice(audio_port_handle_t deviceId);
virtual status_t getRoutedDeviceId(audio_port_handle_t* deviceId);
@@ -170,7 +165,6 @@
float mSendLevel;
int mAuxEffectId;
audio_output_flags_t mFlags;
- sp<media::VolumeHandler> mVolumeHandler;
audio_port_handle_t mSelectedDeviceId;
audio_port_handle_t mRoutedDeviceId;
bool mDeviceCallbackEnabled;
@@ -278,15 +272,8 @@
virtual status_t attachAuxEffect(int effectId);
virtual status_t setParameter(int key, const Parcel &request);
virtual status_t getParameter(int key, Parcel *reply);
- virtual status_t setRetransmitEndpoint(const struct sockaddr_in* endpoint);
- virtual status_t getRetransmitEndpoint(struct sockaddr_in* endpoint);
virtual status_t setNextPlayer(const sp<MediaPlayer2Engine>& player);
- virtual media::VolumeShaper::Status applyVolumeShaper(
- const sp<media::VolumeShaper::Configuration>& configuration,
- const sp<media::VolumeShaper::Operation>& operation) override;
- virtual sp<media::VolumeShaper::State> getVolumeShaperState(int id) override;
-
virtual status_t setDataSource(const sp<DataSourceDesc> &dsd);
static void notify(const wp<MediaPlayer2Engine> &listener, int msg,
@@ -363,8 +350,6 @@
audio_attributes_t * mAudioAttributes;
uid_t mUid;
sp<ANativeWindowWrapper> mConnectedWindow;
- struct sockaddr_in mRetransmitEndpoint;
- bool mRetransmitEndpointValid;
sp<Client> mNextClient;
// Metadata filters.
diff --git a/media/libmedia/include/media/MediaPlayer2Engine.h b/media/libmedia/include/media/MediaPlayer2Engine.h
index 29df2d6..2d1a24b 100644
--- a/media/libmedia/include/media/MediaPlayer2Engine.h
+++ b/media/libmedia/include/media/MediaPlayer2Engine.h
@@ -23,7 +23,6 @@
#include <system/audio.h>
#include <media/MediaSource.h>
-#include <media/VolumeShaper.h>
// Fwd decl to make sure everyone agrees that the scope of struct sockaddr_in is
// global, and not in android::
@@ -77,15 +76,8 @@
virtual status_t attachAuxEffect(int effectId) = 0;
virtual status_t setParameter(int key, const Parcel& request) = 0;
virtual status_t getParameter(int key, Parcel* reply) = 0;
- virtual status_t setRetransmitEndpoint(const struct sockaddr_in* endpoint) = 0;
- virtual status_t getRetransmitEndpoint(struct sockaddr_in* endpoint) = 0;
virtual status_t setNextPlayer(const sp<MediaPlayer2Engine>& next) = 0;
- virtual media::VolumeShaper::Status applyVolumeShaper(
- const sp<media::VolumeShaper::Configuration>& configuration,
- const sp<media::VolumeShaper::Operation>& operation) = 0;
- virtual sp<media::VolumeShaper::State> getVolumeShaperState(int id) = 0;
-
// Modular DRM
virtual status_t prepareDrm(const uint8_t uuid[16],
const Vector<uint8_t>& drmSessionId) = 0;
diff --git a/media/libmedia/include/media/MediaPlayer2Interface.h b/media/libmedia/include/media/MediaPlayer2Interface.h
index c2cc6e6..be300bb 100644
--- a/media/libmedia/include/media/MediaPlayer2Interface.h
+++ b/media/libmedia/include/media/MediaPlayer2Interface.h
@@ -138,11 +138,6 @@
virtual status_t setParameters(const String8& /* keyValuePairs */) { return NO_ERROR; }
virtual String8 getParameters(const String8& /* keys */) { return String8::empty(); }
- virtual media::VolumeShaper::Status applyVolumeShaper(
- const sp<media::VolumeShaper::Configuration>& configuration,
- const sp<media::VolumeShaper::Operation>& operation);
- virtual sp<media::VolumeShaper::State> getVolumeShaperState(int id);
-
// AudioRouting
virtual status_t setOutputDevice(audio_port_handle_t deviceId);
virtual status_t getRoutedDeviceId(audio_port_handle_t* deviceId);
@@ -218,13 +213,6 @@
virtual status_t setParameter(int key, const Parcel &request) = 0;
virtual status_t getParameter(int key, Parcel *reply) = 0;
- // default no-op implementation of optional extensions
- virtual status_t setRetransmitEndpoint(const struct sockaddr_in* /* endpoint */) {
- return INVALID_OPERATION;
- }
- virtual status_t getRetransmitEndpoint(struct sockaddr_in* /* endpoint */) {
- return INVALID_OPERATION;
- }
virtual status_t setNextPlayer(const sp<MediaPlayer2Interface>& /* next */) {
return OK;
}
diff --git a/media/libmedia/include/media/mediaplayer2.h b/media/libmedia/include/media/mediaplayer2.h
index f2fc901..c8b124c 100644
--- a/media/libmedia/include/media/mediaplayer2.h
+++ b/media/libmedia/include/media/mediaplayer2.h
@@ -244,13 +244,8 @@
status_t attachAuxEffect(int effectId);
status_t setParameter(int key, const Parcel& request);
status_t getParameter(int key, Parcel* reply);
- status_t setRetransmitEndpoint(const char* addrString, uint16_t port);
status_t setNextMediaPlayer(const sp<MediaPlayer2>& player);
- media::VolumeShaper::Status applyVolumeShaper(
- const sp<media::VolumeShaper::Configuration>& configuration,
- const sp<media::VolumeShaper::Operation>& operation);
- sp<media::VolumeShaper::State> getVolumeShaperState(int id);
// Modular DRM
status_t prepareDrm(const uint8_t uuid[16], const Vector<uint8_t>& drmSessionId);
status_t releaseDrm();
@@ -266,7 +261,6 @@
status_t getDuration_l(int *msec);
status_t attachNewPlayer(const sp<MediaPlayer2Engine>& player);
status_t reset_l();
- status_t doSetRetransmitEndpoint(const sp<MediaPlayer2Engine>& player);
status_t checkStateForKeySet_l(int key);
sp<MediaPlayer2Engine> mPlayer;
@@ -292,8 +286,6 @@
int mVideoHeight;
audio_session_t mAudioSessionId;
float mSendLevel;
- struct sockaddr_in mRetransmitEndpoint;
- bool mRetransmitEndpointValid;
};
}; // namespace android
diff --git a/media/libmedia/mediaplayer2.cpp b/media/libmedia/mediaplayer2.cpp
index ba24da7..1eb3795 100644
--- a/media/libmedia/mediaplayer2.cpp
+++ b/media/libmedia/mediaplayer2.cpp
@@ -50,8 +50,6 @@
namespace android {
-using media::VolumeShaper;
-
MediaPlayer2::MediaPlayer2()
{
ALOGV("constructor");
@@ -73,7 +71,6 @@
mAudioSessionId = (audio_session_t) AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_SESSION);
AudioSystem::acquireAudioSessionId(mAudioSessionId, -1);
mSendLevel = 0;
- mRetransmitEndpointValid = false;
}
MediaPlayer2::~MediaPlayer2()
@@ -111,7 +108,6 @@
mSeekPosition = -1;
mSeekMode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC;
mVideoWidth = mVideoHeight = 0;
- mRetransmitEndpointValid = false;
}
status_t MediaPlayer2::setListener(const sp<MediaPlayer2Listener>& listener)
@@ -162,8 +158,7 @@
ALOGV("setDataSource type(%d)", dsd->mType);
status_t err = UNKNOWN_ERROR;
sp<MediaPlayer2Engine> player(MediaPlayer2Manager::get().create(this, mAudioSessionId));
- if ((NO_ERROR != doSetRetransmitEndpoint(player)) ||
- (NO_ERROR != player->setDataSource(dsd))) {
+ if (NO_ERROR != player->setDataSource(dsd)) {
player.clear();
}
err = attachNewPlayer(player);
@@ -589,20 +584,6 @@
return NO_ERROR;
}
-status_t MediaPlayer2::doSetRetransmitEndpoint(const sp<MediaPlayer2Engine>& player) {
- Mutex::Autolock _l(mLock);
-
- if (player == NULL) {
- return UNKNOWN_ERROR;
- }
-
- if (mRetransmitEndpointValid) {
- return player->setRetransmitEndpoint(&mRetransmitEndpoint);
- }
-
- return OK;
-}
-
status_t MediaPlayer2::reset()
{
ALOGV("reset");
@@ -782,34 +763,6 @@
return INVALID_OPERATION;
}
-status_t MediaPlayer2::setRetransmitEndpoint(const char* addrString,
- uint16_t port) {
- ALOGV("MediaPlayer2::setRetransmitEndpoint(%s:%hu)",
- addrString ? addrString : "(null)", port);
-
- Mutex::Autolock _l(mLock);
- if ((mPlayer != NULL) || (mCurrentState != MEDIA_PLAYER2_IDLE))
- return INVALID_OPERATION;
-
- if (NULL == addrString) {
- mRetransmitEndpointValid = false;
- return OK;
- }
-
- struct in_addr saddr;
- if(!inet_aton(addrString, &saddr)) {
- return BAD_VALUE;
- }
-
- memset(&mRetransmitEndpoint, 0, sizeof(mRetransmitEndpoint));
- mRetransmitEndpoint.sin_family = AF_INET;
- mRetransmitEndpoint.sin_addr = saddr;
- mRetransmitEndpoint.sin_port = htons(port);
- mRetransmitEndpointValid = true;
-
- return OK;
-}
-
void MediaPlayer2::notify(int msg, int ext1, int ext2, const Parcel *obj)
{
ALOGV("message received msg=%d, ext1=%d, ext2=%d", msg, ext1, ext2);
@@ -949,27 +902,6 @@
return mPlayer->setNextPlayer(next == NULL ? NULL : next->mPlayer);
}
-VolumeShaper::Status MediaPlayer2::applyVolumeShaper(
- const sp<VolumeShaper::Configuration>& configuration,
- const sp<VolumeShaper::Operation>& operation)
-{
- Mutex::Autolock _l(mLock);
- if (mPlayer == nullptr) {
- return VolumeShaper::Status(NO_INIT);
- }
- VolumeShaper::Status status = mPlayer->applyVolumeShaper(configuration, operation);
- return status;
-}
-
-sp<VolumeShaper::State> MediaPlayer2::getVolumeShaperState(int id)
-{
- Mutex::Autolock _l(mLock);
- if (mPlayer == nullptr) {
- return nullptr;
- }
- return mPlayer->getVolumeShaperState(id);
-}
-
// Modular DRM
status_t MediaPlayer2::prepareDrm(const uint8_t uuid[16], const Vector<uint8_t>& drmSessionId)
{
diff --git a/media/libmedia/nuplayer2/Android.bp b/media/libmedia/nuplayer2/Android.bp
index 4d29026..1f4455f 100644
--- a/media/libmedia/nuplayer2/Android.bp
+++ b/media/libmedia/nuplayer2/Android.bp
@@ -12,7 +12,6 @@
"NuPlayer2Driver.cpp",
"NuPlayer2Drm.cpp",
"NuPlayer2Renderer.cpp",
- "NuPlayer2StreamListener.cpp",
"RTSPSource2.cpp",
],
diff --git a/media/libmedia/nuplayer2/NuPlayer2StreamListener.cpp b/media/libmedia/nuplayer2/NuPlayer2StreamListener.cpp
deleted file mode 100644
index 0769711..0000000
--- a/media/libmedia/nuplayer2/NuPlayer2StreamListener.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//#define LOG_NDEBUG 0
-#define LOG_TAG "NuPlayer2StreamListener"
-#include <utils/Log.h>
-
-#include "NuPlayer2StreamListener.h"
-
-#include <binder/MemoryDealer.h>
-#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/foundation/AMessage.h>
-#include <media/stagefright/MediaErrors.h>
-
-namespace android {
-
-NuPlayer2::StreamListener::StreamListener(
- const sp<IStreamSource> &source,
- const sp<AHandler> &targetHandler)
- : mSource(source),
- mTargetHandler(targetHandler),
- mEOS(false),
- mSendDataNotification(true) {
- mSource->setListener(this);
-
- mMemoryDealer = new MemoryDealer(kNumBuffers * kBufferSize);
- for (size_t i = 0; i < kNumBuffers; ++i) {
- sp<IMemory> mem = mMemoryDealer->allocate(kBufferSize);
- CHECK(mem != NULL);
-
- mBuffers.push(mem);
- }
- mSource->setBuffers(mBuffers);
-}
-
-void NuPlayer2::StreamListener::start() {
- for (size_t i = 0; i < kNumBuffers; ++i) {
- mSource->onBufferAvailable(i);
- }
-}
-
-void NuPlayer2::StreamListener::queueBuffer(size_t index, size_t size) {
- QueueEntry entry;
- entry.mIsCommand = false;
- entry.mIndex = index;
- entry.mSize = size;
- entry.mOffset = 0;
-
- Mutex::Autolock autoLock(mLock);
- mQueue.push_back(entry);
-
- if (mSendDataNotification) {
- mSendDataNotification = false;
-
- if (mTargetHandler != NULL) {
- (new AMessage(kWhatMoreDataQueued, mTargetHandler))->post();
- }
- }
-}
-
-void NuPlayer2::StreamListener::issueCommand(
- Command cmd, bool synchronous, const sp<AMessage> &extra) {
- CHECK(!synchronous);
-
- QueueEntry entry;
- entry.mIsCommand = true;
- entry.mCommand = cmd;
- entry.mExtra = extra;
-
- Mutex::Autolock autoLock(mLock);
- mQueue.push_back(entry);
-
- if (mSendDataNotification) {
- mSendDataNotification = false;
-
- if (mTargetHandler != NULL) {
- (new AMessage(kWhatMoreDataQueued, mTargetHandler))->post();
- }
- }
-}
-
-ssize_t NuPlayer2::StreamListener::read(
- void *data, size_t size, sp<AMessage> *extra) {
- CHECK_GT(size, 0u);
-
- extra->clear();
-
- Mutex::Autolock autoLock(mLock);
-
- if (mEOS) {
- return 0;
- }
-
- if (mQueue.empty()) {
- mSendDataNotification = true;
-
- return -EWOULDBLOCK;
- }
-
- QueueEntry *entry = &*mQueue.begin();
-
- if (entry->mIsCommand) {
- switch (entry->mCommand) {
- case EOS:
- {
- mQueue.erase(mQueue.begin());
- entry = NULL;
-
- mEOS = true;
- return 0;
- }
-
- case DISCONTINUITY:
- {
- *extra = entry->mExtra;
-
- mQueue.erase(mQueue.begin());
- entry = NULL;
-
- return INFO_DISCONTINUITY;
- }
-
- default:
- TRESPASS();
- break;
- }
- }
-
- size_t copy = entry->mSize;
- if (copy > size) {
- copy = size;
- }
-
- if (entry->mIndex >= mBuffers.size()) {
- return ERROR_MALFORMED;
- }
-
- sp<IMemory> mem = mBuffers.editItemAt(entry->mIndex);
- if (mem == NULL || mem->size() < copy || mem->size() - copy < entry->mOffset) {
- return ERROR_MALFORMED;
- }
-
- memcpy(data,
- (const uint8_t *)mem->pointer()
- + entry->mOffset,
- copy);
-
- entry->mOffset += copy;
- entry->mSize -= copy;
-
- if (entry->mSize == 0) {
- mSource->onBufferAvailable(entry->mIndex);
- mQueue.erase(mQueue.begin());
- entry = NULL;
- }
-
- return copy;
-}
-
-} // namespace android
diff --git a/media/libmedia/nuplayer2/NuPlayer2StreamListener.h b/media/libmedia/nuplayer2/NuPlayer2StreamListener.h
deleted file mode 100644
index 4327b24..0000000
--- a/media/libmedia/nuplayer2/NuPlayer2StreamListener.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef NUPLAYER2_STREAM_LISTENER_H_
-
-#define NUPLAYER2_STREAM_LISTENER_H_
-
-#include "NuPlayer2.h"
-
-#include <media/IStreamSource.h>
-
-namespace android {
-
-class MemoryDealer;
-
-struct NuPlayer2::StreamListener : public BnStreamListener {
- StreamListener(
- const sp<IStreamSource> &source,
- const sp<AHandler> &targetHandler);
-
- virtual void queueBuffer(size_t index, size_t size);
-
- virtual void issueCommand(
- Command cmd, bool synchronous, const sp<AMessage> &extra);
-
- void start();
- ssize_t read(void *data, size_t size, sp<AMessage> *extra);
-
-private:
- enum {
- kNumBuffers = 8,
- kBufferSize = 188 * 10
- };
-
- struct QueueEntry {
- bool mIsCommand;
-
- size_t mIndex;
- size_t mSize;
- size_t mOffset;
-
- Command mCommand;
- sp<AMessage> mExtra;
- };
-
- Mutex mLock;
-
- sp<IStreamSource> mSource;
- sp<AHandler> mTargetHandler;
- sp<MemoryDealer> mMemoryDealer;
- Vector<sp<IMemory> > mBuffers;
- List<QueueEntry> mQueue;
- bool mEOS;
- bool mSendDataNotification;
-
- DISALLOW_EVIL_CONSTRUCTORS(StreamListener);
-};
-
-} // namespace android
-
-#endif // NUPLAYER2_STREAM_LISTENER_H_