rename some files related to MediaPlayer2.
Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I6def3f7f0aadabdbd9c8d6e722e7b8056a55aade
diff --git a/media/libmedia/nuplayer2/Android.bp b/media/libmedia/nuplayer2/Android.bp
index 700c840..4d29026 100644
--- a/media/libmedia/nuplayer2/Android.bp
+++ b/media/libmedia/nuplayer2/Android.bp
@@ -2,8 +2,8 @@
srcs: [
"JWakeLock.cpp",
- "GenericSource.cpp",
- "HTTPLiveSource.cpp",
+ "GenericSource2.cpp",
+ "HTTPLiveSource2.cpp",
"NuPlayer2.cpp",
"NuPlayer2CCDecoder.cpp",
"NuPlayer2Decoder.cpp",
@@ -13,8 +13,7 @@
"NuPlayer2Drm.cpp",
"NuPlayer2Renderer.cpp",
"NuPlayer2StreamListener.cpp",
- "RTSPSource.cpp",
- "StreamingSource.cpp",
+ "RTSPSource2.cpp",
],
header_libs: [
diff --git a/media/libmedia/nuplayer2/GenericSource.cpp b/media/libmedia/nuplayer2/GenericSource2.cpp
similarity index 93%
rename from media/libmedia/nuplayer2/GenericSource.cpp
rename to media/libmedia/nuplayer2/GenericSource2.cpp
index 6907216..0351a76 100644
--- a/media/libmedia/nuplayer2/GenericSource.cpp
+++ b/media/libmedia/nuplayer2/GenericSource2.cpp
@@ -15,9 +15,9 @@
*/
//#define LOG_NDEBUG 0
-#define LOG_TAG "GenericSource"
+#define LOG_TAG "GenericSource2"
-#include "GenericSource.h"
+#include "GenericSource2.h"
#include "NuPlayer2Drm.h"
#include "AnotherPacketSource.h"
@@ -52,7 +52,7 @@
//static const int kPausePlaybackMarkMs = 2000; // 2secs
static const int kResumePlaybackMarkMs = 15000; // 15secs
-NuPlayer2::GenericSource::GenericSource(
+NuPlayer2::GenericSource2::GenericSource2(
const sp<AMessage> ¬ify,
bool uidValid,
uid_t uid,
@@ -79,7 +79,7 @@
mFd(-1),
mBitrate(-1ll),
mPendingReadBufferTypes(0) {
- ALOGV("GenericSource");
+ ALOGV("GenericSource2");
CHECK(mediaClock != NULL);
mBufferingSettings.mInitialMarkMs = kInitialMarkMs;
@@ -87,7 +87,7 @@
resetDataSource();
}
-void NuPlayer2::GenericSource::resetDataSource() {
+void NuPlayer2::GenericSource2::resetDataSource() {
ALOGV("resetDataSource");
mHTTPService.clear();
@@ -110,7 +110,7 @@
mMimes.clear();
}
-status_t NuPlayer2::GenericSource::setDataSource(
+status_t NuPlayer2::GenericSource2::setDataSource(
const sp<MediaHTTPService> &httpService,
const char *url,
const KeyedVector<String8, String8> *headers) {
@@ -131,7 +131,7 @@
return OK;
}
-status_t NuPlayer2::GenericSource::setDataSource(
+status_t NuPlayer2::GenericSource2::setDataSource(
int fd, int64_t offset, int64_t length) {
Mutex::Autolock _l(mLock);
ALOGV("setDataSource %d/%lld/%lld", fd, (long long)offset, (long long)length);
@@ -147,7 +147,7 @@
return OK;
}
-status_t NuPlayer2::GenericSource::setDataSource(const sp<DataSource>& source) {
+status_t NuPlayer2::GenericSource2::setDataSource(const sp<DataSource>& source) {
Mutex::Autolock _l(mLock);
ALOGV("setDataSource (source: %p)", source.get());
@@ -156,12 +156,12 @@
return OK;
}
-sp<MetaData> NuPlayer2::GenericSource::getFileFormatMeta() const {
+sp<MetaData> NuPlayer2::GenericSource2::getFileFormatMeta() const {
Mutex::Autolock _l(mLock);
return mFileMeta;
}
-status_t NuPlayer2::GenericSource::initFromDataSource() {
+status_t NuPlayer2::GenericSource2::initFromDataSource() {
sp<IMediaExtractor> extractor;
CHECK(mDataSource != NULL || mFd != -1);
sp<DataSource> dataSource = mDataSource;
@@ -294,7 +294,7 @@
return OK;
}
-status_t NuPlayer2::GenericSource::getBufferingSettings(
+status_t NuPlayer2::GenericSource2::getBufferingSettings(
BufferingSettings* buffering /* nonnull */) {
{
Mutex::Autolock _l(mLock);
@@ -305,7 +305,7 @@
return OK;
}
-status_t NuPlayer2::GenericSource::setBufferingSettings(const BufferingSettings& buffering) {
+status_t NuPlayer2::GenericSource2::setBufferingSettings(const BufferingSettings& buffering) {
ALOGV("setBufferingSettings{%s}", buffering.toString().string());
Mutex::Autolock _l(mLock);
@@ -313,7 +313,7 @@
return OK;
}
-status_t NuPlayer2::GenericSource::startSources() {
+status_t NuPlayer2::GenericSource2::startSources() {
// Start the selected A/V tracks now before we start buffering.
// Widevine sources might re-initialize crypto when starting, if we delay
// this to start(), all data buffered during prepare would be wasted.
@@ -334,7 +334,7 @@
return OK;
}
-int64_t NuPlayer2::GenericSource::getLastReadPosition() {
+int64_t NuPlayer2::GenericSource2::getLastReadPosition() {
if (mAudioTrack.mSource != NULL) {
return mAudioTimeUs;
} else if (mVideoTrack.mSource != NULL) {
@@ -344,13 +344,13 @@
}
}
-bool NuPlayer2::GenericSource::isStreaming() const {
+bool NuPlayer2::GenericSource2::isStreaming() const {
Mutex::Autolock _l(mLock);
return mIsStreaming;
}
-NuPlayer2::GenericSource::~GenericSource() {
- ALOGV("~GenericSource");
+NuPlayer2::GenericSource2::~GenericSource2() {
+ ALOGV("~GenericSource2");
if (mLooper != NULL) {
mLooper->unregisterHandler(id());
mLooper->stop();
@@ -361,7 +361,7 @@
resetDataSource();
}
-void NuPlayer2::GenericSource::prepareAsync() {
+void NuPlayer2::GenericSource2::prepareAsync() {
Mutex::Autolock _l(mLock);
ALOGV("prepareAsync: (looper: %d)", (mLooper != NULL));
@@ -379,7 +379,7 @@
msg->post();
}
-void NuPlayer2::GenericSource::onPrepareAsync() {
+void NuPlayer2::GenericSource2::onPrepareAsync() {
ALOGV("onPrepareAsync: mDataSource: %d", (mDataSource != NULL));
// delayed data source creation
@@ -460,7 +460,7 @@
ALOGV("onPrepareAsync: Done");
}
-void NuPlayer2::GenericSource::finishPrepareAsync() {
+void NuPlayer2::GenericSource2::finishPrepareAsync() {
ALOGV("finishPrepareAsync");
status_t err = startSources();
@@ -487,7 +487,7 @@
}
}
-void NuPlayer2::GenericSource::notifyPreparedAndCleanup(status_t err) {
+void NuPlayer2::GenericSource2::notifyPreparedAndCleanup(status_t err) {
if (err != OK) {
mDataSource.clear();
mCachedSource.clear();
@@ -500,7 +500,7 @@
notifyPrepared(err);
}
-void NuPlayer2::GenericSource::start() {
+void NuPlayer2::GenericSource2::start() {
Mutex::Autolock _l(mLock);
ALOGI("start");
@@ -515,22 +515,22 @@
mStarted = true;
}
-void NuPlayer2::GenericSource::stop() {
+void NuPlayer2::GenericSource2::stop() {
Mutex::Autolock _l(mLock);
mStarted = false;
}
-void NuPlayer2::GenericSource::pause() {
+void NuPlayer2::GenericSource2::pause() {
Mutex::Autolock _l(mLock);
mStarted = false;
}
-void NuPlayer2::GenericSource::resume() {
+void NuPlayer2::GenericSource2::resume() {
Mutex::Autolock _l(mLock);
mStarted = true;
}
-void NuPlayer2::GenericSource::disconnect() {
+void NuPlayer2::GenericSource2::disconnect() {
sp<DataSource> dataSource, httpSource;
{
Mutex::Autolock _l(mLock);
@@ -549,11 +549,11 @@
}
}
-status_t NuPlayer2::GenericSource::feedMoreTSData() {
+status_t NuPlayer2::GenericSource2::feedMoreTSData() {
return OK;
}
-void NuPlayer2::GenericSource::sendCacheStats() {
+void NuPlayer2::GenericSource2::sendCacheStats() {
int32_t kbps = 0;
status_t err = UNKNOWN_ERROR;
@@ -569,7 +569,7 @@
}
}
-void NuPlayer2::GenericSource::onMessageReceived(const sp<AMessage> &msg) {
+void NuPlayer2::GenericSource2::onMessageReceived(const sp<AMessage> &msg) {
Mutex::Autolock _l(mLock);
switch (msg->what()) {
case kWhatPrepareAsync:
@@ -686,7 +686,7 @@
}
}
-void NuPlayer2::GenericSource::fetchTextData(
+void NuPlayer2::GenericSource2::fetchTextData(
uint32_t sendWhat,
media_track_type type,
int32_t curGen,
@@ -723,7 +723,7 @@
mMediaClock->addTimer(msg2, subTimeUs);
}
-void NuPlayer2::GenericSource::sendTextData(
+void NuPlayer2::GenericSource2::sendTextData(
uint32_t what,
media_track_type type,
int32_t curGen,
@@ -759,7 +759,7 @@
}
}
-void NuPlayer2::GenericSource::sendGlobalTextData(
+void NuPlayer2::GenericSource2::sendGlobalTextData(
uint32_t what,
int32_t curGen,
sp<AMessage> msg) {
@@ -790,12 +790,12 @@
}
}
-sp<MetaData> NuPlayer2::GenericSource::getFormatMeta(bool audio) {
+sp<MetaData> NuPlayer2::GenericSource2::getFormatMeta(bool audio) {
Mutex::Autolock _l(mLock);
return getFormatMeta_l(audio);
}
-sp<MetaData> NuPlayer2::GenericSource::getFormatMeta_l(bool audio) {
+sp<MetaData> NuPlayer2::GenericSource2::getFormatMeta_l(bool audio) {
sp<IMediaSource> source = audio ? mAudioTrack.mSource : mVideoTrack.mSource;
if (source == NULL) {
@@ -805,7 +805,7 @@
return source->getFormat();
}
-status_t NuPlayer2::GenericSource::dequeueAccessUnit(
+status_t NuPlayer2::GenericSource2::dequeueAccessUnit(
bool audio, sp<ABuffer> *accessUnit) {
Mutex::Autolock _l(mLock);
// If has gone through stop/releaseDrm sequence, we no longer send down any buffer b/c
@@ -901,18 +901,18 @@
return result;
}
-status_t NuPlayer2::GenericSource::getDuration(int64_t *durationUs) {
+status_t NuPlayer2::GenericSource2::getDuration(int64_t *durationUs) {
Mutex::Autolock _l(mLock);
*durationUs = mDurationUs;
return OK;
}
-size_t NuPlayer2::GenericSource::getTrackCount() const {
+size_t NuPlayer2::GenericSource2::getTrackCount() const {
Mutex::Autolock _l(mLock);
return mSources.size();
}
-sp<AMessage> NuPlayer2::GenericSource::getTrackInfo(size_t trackIndex) const {
+sp<AMessage> NuPlayer2::GenericSource2::getTrackInfo(size_t trackIndex) const {
Mutex::Autolock _l(mLock);
size_t trackCount = mSources.size();
if (trackIndex >= trackCount) {
@@ -962,7 +962,7 @@
return format;
}
-ssize_t NuPlayer2::GenericSource::getSelectedTrack(media_track_type type) const {
+ssize_t NuPlayer2::GenericSource2::getSelectedTrack(media_track_type type) const {
Mutex::Autolock _l(mLock);
const Track *track = NULL;
switch (type) {
@@ -989,7 +989,7 @@
return -1;
}
-status_t NuPlayer2::GenericSource::selectTrack(size_t trackIndex, bool select, int64_t timeUs) {
+status_t NuPlayer2::GenericSource2::selectTrack(size_t trackIndex, bool select, int64_t timeUs) {
Mutex::Autolock _l(mLock);
ALOGV("%s track: %zu", select ? "select" : "deselect", trackIndex);
@@ -1083,7 +1083,7 @@
return INVALID_OPERATION;
}
-status_t NuPlayer2::GenericSource::seekTo(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
+status_t NuPlayer2::GenericSource2::seekTo(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
ALOGV("seekTo: %lld, %d", (long long)seekTimeUs, mode);
sp<AMessage> msg = new AMessage(kWhatSeek, this);
msg->setInt64("seekTimeUs", seekTimeUs);
@@ -1101,7 +1101,7 @@
return err;
}
-void NuPlayer2::GenericSource::onSeek(const sp<AMessage>& msg) {
+void NuPlayer2::GenericSource2::onSeek(const sp<AMessage>& msg) {
int64_t seekTimeUs;
int32_t mode;
CHECK(msg->findInt64("seekTimeUs", &seekTimeUs));
@@ -1116,7 +1116,7 @@
response->postReply(replyID);
}
-status_t NuPlayer2::GenericSource::doSeek(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
+status_t NuPlayer2::GenericSource2::doSeek(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
if (mVideoTrack.mSource != NULL) {
++mVideoDataGeneration;
@@ -1150,7 +1150,7 @@
return OK;
}
-sp<ABuffer> NuPlayer2::GenericSource::mediaBufferToABuffer(
+sp<ABuffer> NuPlayer2::GenericSource2::mediaBufferToABuffer(
MediaBuffer* mb,
media_track_type trackType) {
bool audio = trackType == MEDIA_TRACK_TYPE_AUDIO;
@@ -1248,7 +1248,7 @@
return ab;
}
-int32_t NuPlayer2::GenericSource::getDataGeneration(media_track_type type) const {
+int32_t NuPlayer2::GenericSource2::getDataGeneration(media_track_type type) const {
int32_t generation = -1;
switch (type) {
case MEDIA_TRACK_TYPE_VIDEO:
@@ -1270,7 +1270,7 @@
return generation;
}
-void NuPlayer2::GenericSource::postReadBuffer(media_track_type trackType) {
+void NuPlayer2::GenericSource2::postReadBuffer(media_track_type trackType) {
if ((mPendingReadBufferTypes & (1 << trackType)) == 0) {
mPendingReadBufferTypes |= (1 << trackType);
sp<AMessage> msg = new AMessage(kWhatReadBuffer, this);
@@ -1279,7 +1279,7 @@
}
}
-void NuPlayer2::GenericSource::onReadBuffer(const sp<AMessage>& msg) {
+void NuPlayer2::GenericSource2::onReadBuffer(const sp<AMessage>& msg) {
int32_t tmpType;
CHECK(msg->findInt32("trackType", &tmpType));
media_track_type trackType = (media_track_type)tmpType;
@@ -1287,7 +1287,7 @@
readBuffer(trackType);
}
-void NuPlayer2::GenericSource::readBuffer(
+void NuPlayer2::GenericSource2::readBuffer(
media_track_type trackType, int64_t seekTimeUs, MediaPlayer2SeekMode mode,
int64_t *actualTimeUs, bool formatChange) {
Track *track;
@@ -1460,7 +1460,7 @@
}
}
-void NuPlayer2::GenericSource::queueDiscontinuityIfNeeded(
+void NuPlayer2::GenericSource2::queueDiscontinuityIfNeeded(
bool seeking, bool formatChange, media_track_type trackType, Track *track) {
// formatChange && seeking: track whose source is changed during selection
// formatChange && !seeking: track whose source is not changed during selection
@@ -1475,7 +1475,7 @@
}
}
-void NuPlayer2::GenericSource::notifyBufferingUpdate(int32_t percentage) {
+void NuPlayer2::GenericSource2::notifyBufferingUpdate(int32_t percentage) {
// Buffering percent could go backward as it's estimated from remaining
// data and last access time. This could cause the buffering position
// drawn on media control to jitter slightly. Remember previously reported
@@ -1496,14 +1496,14 @@
notify->post();
}
-void NuPlayer2::GenericSource::schedulePollBuffering() {
+void NuPlayer2::GenericSource2::schedulePollBuffering() {
sp<AMessage> msg = new AMessage(kWhatPollBuffering, this);
msg->setInt32("generation", mPollBufferingGeneration);
// Enquires buffering status every second.
msg->post(1000000ll);
}
-void NuPlayer2::GenericSource::onPollBuffering() {
+void NuPlayer2::GenericSource2::onPollBuffering() {
status_t finalStatus = UNKNOWN_ERROR;
int64_t cachedDurationUs = -1ll;
ssize_t cachedDataRemaining = -1;
@@ -1554,7 +1554,7 @@
}
// Modular DRM
-status_t NuPlayer2::GenericSource::prepareDrm(
+status_t NuPlayer2::GenericSource2::prepareDrm(
const uint8_t uuid[16],
const Vector<uint8_t> &drmSessionId,
sp<AMediaCryptoWrapper> *outCrypto) {
@@ -1611,7 +1611,7 @@
return status;
}
-status_t NuPlayer2::GenericSource::releaseDrm() {
+status_t NuPlayer2::GenericSource2::releaseDrm() {
Mutex::Autolock _l(mLock);
ALOGV("releaseDrm");
@@ -1627,7 +1627,7 @@
return OK;
}
-status_t NuPlayer2::GenericSource::checkDrmInfo()
+status_t NuPlayer2::GenericSource2::checkDrmInfo()
{
// clearing the flag at prepare in case the player is reused after stop/releaseDrm with the
// same source without being reset (called by prepareAsync/initFromDataSource)
@@ -1661,7 +1661,7 @@
return OK;
}
-void NuPlayer2::GenericSource::signalBufferReturned(MediaBuffer *buffer)
+void NuPlayer2::GenericSource2::signalBufferReturned(MediaBuffer *buffer)
{
//ALOGV("signalBufferReturned %p refCount: %d", buffer, buffer->localRefcount());
diff --git a/media/libmedia/nuplayer2/GenericSource.h b/media/libmedia/nuplayer2/GenericSource2.h
similarity index 93%
rename from media/libmedia/nuplayer2/GenericSource.h
rename to media/libmedia/nuplayer2/GenericSource2.h
index 5a71edb..2016304 100644
--- a/media/libmedia/nuplayer2/GenericSource.h
+++ b/media/libmedia/nuplayer2/GenericSource2.h
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-#ifndef GENERIC_SOURCE_H_
+#ifndef GENERIC_SOURCE2_H_
-#define GENERIC_SOURCE_H_
+#define GENERIC_SOURCE2_H_
#include "NuPlayer2.h"
#include "NuPlayer2Source.h"
@@ -40,11 +40,11 @@
struct MediaClock;
struct NuCachedSource2;
-struct NuPlayer2::GenericSource : public NuPlayer2::Source,
- public MediaBufferObserver // Modular DRM
+struct NuPlayer2::GenericSource2 : public NuPlayer2::Source,
+ public MediaBufferObserver // Modular DRM
{
- GenericSource(const sp<AMessage> ¬ify, bool uidValid, uid_t uid,
- const sp<MediaClock> &mediaClock);
+ GenericSource2(const sp<AMessage> ¬ify, bool uidValid, uid_t uid,
+ const sp<MediaClock> &mediaClock);
status_t setDataSource(
const sp<MediaHTTPService> &httpService,
@@ -97,7 +97,7 @@
protected:
- virtual ~GenericSource();
+ virtual ~GenericSource2();
virtual void onMessageReceived(const sp<AMessage> &msg);
@@ -240,9 +240,9 @@
status_t checkDrmInfo();
- DISALLOW_EVIL_CONSTRUCTORS(GenericSource);
+ DISALLOW_EVIL_CONSTRUCTORS(GenericSource2);
};
} // namespace android
-#endif // GENERIC_SOURCE_H_
+#endif // GENERIC_SOURCE2_H_
diff --git a/media/libmedia/nuplayer2/HTTPLiveSource.cpp b/media/libmedia/nuplayer2/HTTPLiveSource2.cpp
similarity index 89%
rename from media/libmedia/nuplayer2/HTTPLiveSource.cpp
rename to media/libmedia/nuplayer2/HTTPLiveSource2.cpp
index e0e3df9..a61cacd 100644
--- a/media/libmedia/nuplayer2/HTTPLiveSource.cpp
+++ b/media/libmedia/nuplayer2/HTTPLiveSource2.cpp
@@ -15,10 +15,10 @@
*/
//#define LOG_NDEBUG 0
-#define LOG_TAG "HTTPLiveSource"
+#define LOG_TAG "HTTPLiveSource2"
#include <utils/Log.h>
-#include "HTTPLiveSource.h"
+#include "HTTPLiveSource2.h"
#include "AnotherPacketSource.h"
#include "LiveDataSource.h"
@@ -38,7 +38,7 @@
namespace android {
-NuPlayer2::HTTPLiveSource::HTTPLiveSource(
+NuPlayer2::HTTPLiveSource2::HTTPLiveSource2(
const sp<AMessage> ¬ify,
const sp<MediaHTTPService> &httpService,
const char *url,
@@ -69,7 +69,7 @@
}
}
-NuPlayer2::HTTPLiveSource::~HTTPLiveSource() {
+NuPlayer2::HTTPLiveSource2::~HTTPLiveSource2() {
if (mLiveSession != NULL) {
mLiveSession->disconnect();
@@ -82,14 +82,14 @@
}
}
-status_t NuPlayer2::HTTPLiveSource::getBufferingSettings(
+status_t NuPlayer2::HTTPLiveSource2::getBufferingSettings(
BufferingSettings* buffering /* nonnull */) {
*buffering = mBufferingSettings;
return OK;
}
-status_t NuPlayer2::HTTPLiveSource::setBufferingSettings(const BufferingSettings& buffering) {
+status_t NuPlayer2::HTTPLiveSource2::setBufferingSettings(const BufferingSettings& buffering) {
mBufferingSettings = buffering;
if (mLiveSession != NULL) {
@@ -99,7 +99,7 @@
return OK;
}
-void NuPlayer2::HTTPLiveSource::prepareAsync() {
+void NuPlayer2::HTTPLiveSource2::prepareAsync() {
if (mLiveLooper == NULL) {
mLiveLooper = new ALooper;
mLiveLooper->setName("http live");
@@ -123,10 +123,10 @@
mURL.c_str(), mExtraHeaders.isEmpty() ? NULL : &mExtraHeaders);
}
-void NuPlayer2::HTTPLiveSource::start() {
+void NuPlayer2::HTTPLiveSource2::start() {
}
-sp<MetaData> NuPlayer2::HTTPLiveSource::getFormatMeta(bool audio) {
+sp<MetaData> NuPlayer2::HTTPLiveSource2::getFormatMeta(bool audio) {
sp<MetaData> meta;
if (mLiveSession != NULL) {
mLiveSession->getStreamFormatMeta(
@@ -138,7 +138,7 @@
return meta;
}
-sp<AMessage> NuPlayer2::HTTPLiveSource::getFormat(bool audio) {
+sp<AMessage> NuPlayer2::HTTPLiveSource2::getFormat(bool audio) {
sp<MetaData> meta;
status_t err = -EWOULDBLOCK;
if (mLiveSession != NULL) {
@@ -161,11 +161,11 @@
return format;
}
-status_t NuPlayer2::HTTPLiveSource::feedMoreTSData() {
+status_t NuPlayer2::HTTPLiveSource2::feedMoreTSData() {
return OK;
}
-status_t NuPlayer2::HTTPLiveSource::dequeueAccessUnit(
+status_t NuPlayer2::HTTPLiveSource2::dequeueAccessUnit(
bool audio, sp<ABuffer> *accessUnit) {
return mLiveSession->dequeueAccessUnit(
audio ? LiveSession::STREAMTYPE_AUDIO
@@ -173,19 +173,19 @@
accessUnit);
}
-status_t NuPlayer2::HTTPLiveSource::getDuration(int64_t *durationUs) {
+status_t NuPlayer2::HTTPLiveSource2::getDuration(int64_t *durationUs) {
return mLiveSession->getDuration(durationUs);
}
-size_t NuPlayer2::HTTPLiveSource::getTrackCount() const {
+size_t NuPlayer2::HTTPLiveSource2::getTrackCount() const {
return mLiveSession->getTrackCount();
}
-sp<AMessage> NuPlayer2::HTTPLiveSource::getTrackInfo(size_t trackIndex) const {
+sp<AMessage> NuPlayer2::HTTPLiveSource2::getTrackInfo(size_t trackIndex) const {
return mLiveSession->getTrackInfo(trackIndex);
}
-ssize_t NuPlayer2::HTTPLiveSource::getSelectedTrack(media_track_type type) const {
+ssize_t NuPlayer2::HTTPLiveSource2::getSelectedTrack(media_track_type type) const {
if (mLiveSession == NULL) {
return -1;
} else if (type == MEDIA_TRACK_TYPE_METADATA) {
@@ -197,7 +197,7 @@
}
}
-status_t NuPlayer2::HTTPLiveSource::selectTrack(size_t trackIndex, bool select, int64_t /*timeUs*/) {
+status_t NuPlayer2::HTTPLiveSource2::selectTrack(size_t trackIndex, bool select, int64_t /*timeUs*/) {
if (mLiveSession == NULL) {
return INVALID_OPERATION;
}
@@ -239,7 +239,7 @@
return (err == OK || err == BAD_VALUE) ? (status_t)OK : err;
}
-status_t NuPlayer2::HTTPLiveSource::seekTo(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
+status_t NuPlayer2::HTTPLiveSource2::seekTo(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
if (mLiveSession->isSeekable()) {
return mLiveSession->seekTo(seekTimeUs, mode);
} else {
@@ -247,7 +247,7 @@
}
}
-void NuPlayer2::HTTPLiveSource::pollForRawData(
+void NuPlayer2::HTTPLiveSource2::pollForRawData(
const sp<AMessage> &msg, int32_t currentGeneration,
LiveSession::StreamType fetchType, int32_t pushWhat) {
@@ -290,7 +290,7 @@
msg->post(1000000ll);
}
-void NuPlayer2::HTTPLiveSource::onMessageReceived(const sp<AMessage> &msg) {
+void NuPlayer2::HTTPLiveSource2::onMessageReceived(const sp<AMessage> &msg) {
switch (msg->what()) {
case kWhatSessionNotify:
{
@@ -328,7 +328,7 @@
}
}
-void NuPlayer2::HTTPLiveSource::onSessionNotify(const sp<AMessage> &msg) {
+void NuPlayer2::HTTPLiveSource2::onSessionNotify(const sp<AMessage> &msg) {
int32_t what;
CHECK(msg->findInt32("what", &what));
diff --git a/media/libmedia/nuplayer2/HTTPLiveSource.h b/media/libmedia/nuplayer2/HTTPLiveSource2.h
similarity index 91%
rename from media/libmedia/nuplayer2/HTTPLiveSource.h
rename to media/libmedia/nuplayer2/HTTPLiveSource2.h
index 7b6a312..97d3653 100644
--- a/media/libmedia/nuplayer2/HTTPLiveSource.h
+++ b/media/libmedia/nuplayer2/HTTPLiveSource2.h
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-#ifndef HTTP_LIVE_SOURCE_H_
+#ifndef HTTP_LIVE_SOURCE2_H_
-#define HTTP_LIVE_SOURCE_H_
+#define HTTP_LIVE_SOURCE2_H_
#include "NuPlayer2.h"
#include "NuPlayer2Source.h"
@@ -27,8 +27,8 @@
struct LiveSession;
-struct NuPlayer2::HTTPLiveSource : public NuPlayer2::Source {
- HTTPLiveSource(
+struct NuPlayer2::HTTPLiveSource2 : public NuPlayer2::Source {
+ HTTPLiveSource2(
const sp<AMessage> ¬ify,
const sp<MediaHTTPService> &httpService,
const char *url,
@@ -56,7 +56,7 @@
MediaPlayer2SeekMode mode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC) override;
protected:
- virtual ~HTTPLiveSource();
+ virtual ~HTTPLiveSource2();
virtual void onMessageReceived(const sp<AMessage> &msg);
@@ -91,9 +91,9 @@
const sp<AMessage> &msg, int32_t currentGeneration,
LiveSession::StreamType fetchType, int32_t pushWhat);
- DISALLOW_EVIL_CONSTRUCTORS(HTTPLiveSource);
+ DISALLOW_EVIL_CONSTRUCTORS(HTTPLiveSource2);
};
} // namespace android
-#endif // HTTP_LIVE_SOURCE_H_
+#endif // HTTP_LIVE_SOURCE2_H_
diff --git a/media/libmedia/nuplayer2/NuPlayer2.cpp b/media/libmedia/nuplayer2/NuPlayer2.cpp
index 35e20e8..65e0957 100644
--- a/media/libmedia/nuplayer2/NuPlayer2.cpp
+++ b/media/libmedia/nuplayer2/NuPlayer2.cpp
@@ -23,7 +23,7 @@
#include "NuPlayer2.h"
-#include "HTTPLiveSource.h"
+#include "HTTPLiveSource2.h"
#include "NuPlayer2CCDecoder.h"
#include "NuPlayer2Decoder.h"
#include "NuPlayer2DecoderBase.h"
@@ -31,9 +31,8 @@
#include "NuPlayer2Driver.h"
#include "NuPlayer2Renderer.h"
#include "NuPlayer2Source.h"
-#include "RTSPSource.h"
-#include "StreamingSource.h"
-#include "GenericSource.h"
+#include "RTSPSource2.h"
+#include "GenericSource2.h"
#include "TextDescriptions.h"
#include "ATSParser.h"
@@ -291,27 +290,27 @@
KeyedVector<String8, String8> *headers = &(dsd->mHeaders);
if (IsHTTPLiveURL(url)) {
- source = new HTTPLiveSource(notify, httpService, url, headers);
- ALOGV("setDataSourceAsync HTTPLiveSource %s", url);
+ source = new HTTPLiveSource2(notify, httpService, url, headers);
+ ALOGV("setDataSourceAsync HTTPLiveSource2 %s", url);
mDataSourceType = DATA_SOURCE_TYPE_HTTP_LIVE;
} else if (!strncasecmp(url, "rtsp://", 7)) {
- source = new RTSPSource(
+ source = new RTSPSource2(
notify, httpService, url, headers, mUIDValid, mUID);
- ALOGV("setDataSourceAsync RTSPSource %s", url);
+ ALOGV("setDataSourceAsync RTSPSource2 %s", url);
mDataSourceType = DATA_SOURCE_TYPE_RTSP;
} else if ((!strncasecmp(url, "http://", 7)
|| !strncasecmp(url, "https://", 8))
&& ((len >= 4 && !strcasecmp(".sdp", &url[len - 4]))
|| strstr(url, ".sdp?"))) {
- source = new RTSPSource(
+ source = new RTSPSource2(
notify, httpService, url, headers, mUIDValid, mUID, true);
- ALOGV("setDataSourceAsync RTSPSource http/https/.sdp %s", url);
+ ALOGV("setDataSourceAsync RTSPSource2 http/https/.sdp %s", url);
mDataSourceType = DATA_SOURCE_TYPE_RTSP;
} else {
- ALOGV("setDataSourceAsync GenericSource %s", url);
+ ALOGV("setDataSourceAsync GenericSource2 %s", url);
- sp<GenericSource> genericSource =
- new GenericSource(notify, mUIDValid, mUID, mMediaClock);
+ sp<GenericSource2> genericSource =
+ new GenericSource2(notify, mUIDValid, mUID, mMediaClock);
status_t err = genericSource->setDataSource(httpService, url, headers);
@@ -329,8 +328,8 @@
case DataSourceDesc::TYPE_FD:
{
- sp<GenericSource> genericSource =
- new GenericSource(notify, mUIDValid, mUID, mMediaClock);
+ sp<GenericSource2> genericSource =
+ new GenericSource2(notify, mUIDValid, mUID, mMediaClock);
ALOGV("setDataSourceAsync fd %d/%lld/%lld source: %p",
dsd->mFD, (long long)dsd->mFDOffset, (long long)dsd->mFDLength, source.get());
@@ -350,8 +349,8 @@
case DataSourceDesc::TYPE_CALLBACK:
{
- sp<GenericSource> genericSource =
- new GenericSource(notify, mUIDValid, mUID, mMediaClock);
+ sp<GenericSource2> genericSource =
+ new GenericSource2(notify, mUIDValid, mUID, mMediaClock);
status_t err = genericSource->setDataSource(dsd->mCallbackSource);
if (err != OK) {
diff --git a/media/libmedia/nuplayer2/NuPlayer2.h b/media/libmedia/nuplayer2/NuPlayer2.h
index 0764ec3..1d74b55 100644
--- a/media/libmedia/nuplayer2/NuPlayer2.h
+++ b/media/libmedia/nuplayer2/NuPlayer2.h
@@ -106,11 +106,10 @@
struct DecoderBase;
struct DecoderPassThrough;
struct CCDecoder;
- struct GenericSource;
- struct HTTPLiveSource;
+ struct GenericSource2;
+ struct HTTPLiveSource2;
struct Renderer;
- struct RTSPSource;
- struct StreamingSource;
+ struct RTSPSource2;
struct Action;
struct SeekAction;
struct SetSurfaceAction;
diff --git a/media/libmedia/nuplayer2/RTSPSource.cpp b/media/libmedia/nuplayer2/RTSPSource2.cpp
similarity index 91%
rename from media/libmedia/nuplayer2/RTSPSource.cpp
rename to media/libmedia/nuplayer2/RTSPSource2.cpp
index 3f6966d..8b67ae5 100644
--- a/media/libmedia/nuplayer2/RTSPSource.cpp
+++ b/media/libmedia/nuplayer2/RTSPSource2.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 The Android Open Source Project
+ * 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.
@@ -15,10 +15,10 @@
*/
//#define LOG_NDEBUG 0
-#define LOG_TAG "RTSPSource"
+#define LOG_TAG "RTSPSource2"
#include <utils/Log.h>
-#include "RTSPSource.h"
+#include "RTSPSource2.h"
#include "AnotherPacketSource.h"
#include "MyHandler.h"
@@ -38,7 +38,7 @@
//static const int kStartServerMarkMs = 5000;
static const int kOverflowMarkMs = 10000; // 10 seconds
-NuPlayer2::RTSPSource::RTSPSource(
+NuPlayer2::RTSPSource2::RTSPSource2(
const sp<AMessage> ¬ify,
const sp<MediaHTTPService> &httpService,
const char *url,
@@ -78,27 +78,27 @@
}
}
-NuPlayer2::RTSPSource::~RTSPSource() {
+NuPlayer2::RTSPSource2::~RTSPSource2() {
if (mLooper != NULL) {
mLooper->unregisterHandler(id());
mLooper->stop();
}
}
-status_t NuPlayer2::RTSPSource::getBufferingSettings(
+status_t NuPlayer2::RTSPSource2::getBufferingSettings(
BufferingSettings* buffering /* nonnull */) {
Mutex::Autolock _l(mBufferingSettingsLock);
*buffering = mBufferingSettings;
return OK;
}
-status_t NuPlayer2::RTSPSource::setBufferingSettings(const BufferingSettings& buffering) {
+status_t NuPlayer2::RTSPSource2::setBufferingSettings(const BufferingSettings& buffering) {
Mutex::Autolock _l(mBufferingSettingsLock);
mBufferingSettings = buffering;
return OK;
}
-void NuPlayer2::RTSPSource::prepareAsync() {
+void NuPlayer2::RTSPSource2::prepareAsync() {
if (mIsSDP && mHTTPService == NULL) {
notifyPrepared(BAD_VALUE);
return;
@@ -137,10 +137,10 @@
startBufferingIfNecessary();
}
-void NuPlayer2::RTSPSource::start() {
+void NuPlayer2::RTSPSource2::start() {
}
-void NuPlayer2::RTSPSource::stop() {
+void NuPlayer2::RTSPSource2::stop() {
if (mLooper == NULL) {
return;
}
@@ -150,12 +150,12 @@
msg->postAndAwaitResponse(&dummy);
}
-status_t NuPlayer2::RTSPSource::feedMoreTSData() {
+status_t NuPlayer2::RTSPSource2::feedMoreTSData() {
Mutex::Autolock _l(mBufferingLock);
return mFinalResult;
}
-sp<MetaData> NuPlayer2::RTSPSource::getFormatMeta(bool audio) {
+sp<MetaData> NuPlayer2::RTSPSource2::getFormatMeta(bool audio) {
sp<AnotherPacketSource> source = getSource(audio);
if (source == NULL) {
@@ -165,7 +165,7 @@
return source->getFormat();
}
-bool NuPlayer2::RTSPSource::haveSufficientDataOnAllTracks() {
+bool NuPlayer2::RTSPSource2::haveSufficientDataOnAllTracks() {
// We're going to buffer at least 2 secs worth data on all tracks before
// starting playback (both at startup and after a seek).
@@ -201,7 +201,7 @@
return true;
}
-status_t NuPlayer2::RTSPSource::dequeueAccessUnit(
+status_t NuPlayer2::RTSPSource2::dequeueAccessUnit(
bool audio, sp<ABuffer> *accessUnit) {
if (!stopBufferingIfNecessary()) {
return -EWOULDBLOCK;
@@ -253,7 +253,7 @@
return source->dequeueAccessUnit(accessUnit);
}
-sp<AnotherPacketSource> NuPlayer2::RTSPSource::getSource(bool audio) {
+sp<AnotherPacketSource> NuPlayer2::RTSPSource2::getSource(bool audio) {
if (mTSParser != NULL) {
sp<MediaSource> source = mTSParser->getSource(
audio ? ATSParser::AUDIO : ATSParser::VIDEO);
@@ -264,7 +264,7 @@
return audio ? mAudioTrack : mVideoTrack;
}
-void NuPlayer2::RTSPSource::setEOSTimeout(bool audio, int64_t timeout) {
+void NuPlayer2::RTSPSource2::setEOSTimeout(bool audio, int64_t timeout) {
if (audio) {
mEOSTimeoutAudio = timeout;
} else {
@@ -272,7 +272,7 @@
}
}
-status_t NuPlayer2::RTSPSource::getDuration(int64_t *durationUs) {
+status_t NuPlayer2::RTSPSource2::getDuration(int64_t *durationUs) {
*durationUs = -1ll;
int64_t audioDurationUs;
@@ -294,7 +294,7 @@
return OK;
}
-status_t NuPlayer2::RTSPSource::seekTo(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
+status_t NuPlayer2::RTSPSource2::seekTo(int64_t seekTimeUs, MediaPlayer2SeekMode mode) {
sp<AMessage> msg = new AMessage(kWhatPerformSeek, this);
msg->setInt32("generation", ++mSeekGeneration);
msg->setInt64("timeUs", seekTimeUs);
@@ -309,7 +309,7 @@
return err;
}
-void NuPlayer2::RTSPSource::performSeek(int64_t seekTimeUs) {
+void NuPlayer2::RTSPSource2::performSeek(int64_t seekTimeUs) {
if (mState != CONNECTED) {
finishSeek(INVALID_OPERATION);
return;
@@ -320,12 +320,12 @@
mEOSPending = false;
}
-void NuPlayer2::RTSPSource::schedulePollBuffering() {
+void NuPlayer2::RTSPSource2::schedulePollBuffering() {
sp<AMessage> msg = new AMessage(kWhatPollBuffering, this);
msg->post(1000000ll); // 1 second intervals
}
-void NuPlayer2::RTSPSource::checkBuffering(
+void NuPlayer2::RTSPSource2::checkBuffering(
bool *prepared, bool *underflow, bool *overflow, bool *startServer, bool *finished) {
size_t numTracks = mTracks.size();
size_t preparedCount, underflowCount, overflowCount, startCount, finishedCount;
@@ -383,7 +383,7 @@
*finished = (finishedCount > 0);
}
-void NuPlayer2::RTSPSource::onPollBuffering() {
+void NuPlayer2::RTSPSource2::onPollBuffering() {
bool prepared, underflow, overflow, startServer, finished;
checkBuffering(&prepared, &underflow, &overflow, &startServer, &finished);
@@ -415,7 +415,7 @@
schedulePollBuffering();
}
-void NuPlayer2::RTSPSource::signalSourceEOS(status_t result) {
+void NuPlayer2::RTSPSource2::signalSourceEOS(status_t result) {
const bool audio = true;
const bool video = false;
@@ -430,7 +430,7 @@
}
}
-bool NuPlayer2::RTSPSource::sourceReachedEOS(bool audio) {
+bool NuPlayer2::RTSPSource2::sourceReachedEOS(bool audio) {
sp<AnotherPacketSource> source = getSource(audio);
status_t finalResult;
return (source != NULL &&
@@ -438,14 +438,14 @@
finalResult == ERROR_END_OF_STREAM);
}
-bool NuPlayer2::RTSPSource::sourceNearEOS(bool audio) {
+bool NuPlayer2::RTSPSource2::sourceNearEOS(bool audio) {
sp<AnotherPacketSource> source = getSource(audio);
int64_t mediaDurationUs = 0;
getDuration(&mediaDurationUs);
return (source != NULL && source->isFinished(mediaDurationUs));
}
-void NuPlayer2::RTSPSource::onSignalEOS(const sp<AMessage> &msg) {
+void NuPlayer2::RTSPSource2::onSignalEOS(const sp<AMessage> &msg) {
int32_t generation;
CHECK(msg->findInt32("generation", &generation));
@@ -459,7 +459,7 @@
}
}
-void NuPlayer2::RTSPSource::postSourceEOSIfNecessary() {
+void NuPlayer2::RTSPSource2::postSourceEOSIfNecessary() {
const bool audio = true;
const bool video = false;
// If a source has detected near end, give it some time to retrieve more
@@ -474,7 +474,7 @@
}
}
-void NuPlayer2::RTSPSource::onMessageReceived(const sp<AMessage> &msg) {
+void NuPlayer2::RTSPSource2::onMessageReceived(const sp<AMessage> &msg) {
if (msg->what() == kWhatDisconnect) {
sp<AReplyToken> replyID;
CHECK(msg->senderAwaitsResponse(&replyID));
@@ -722,7 +722,7 @@
}
}
-void NuPlayer2::RTSPSource::onConnected() {
+void NuPlayer2::RTSPSource2::onConnected() {
CHECK(mAudioTrack == NULL);
CHECK(mVideoTrack == NULL);
@@ -770,7 +770,7 @@
mState = CONNECTED;
}
-void NuPlayer2::RTSPSource::onSDPLoaded(const sp<AMessage> &msg) {
+void NuPlayer2::RTSPSource2::onSDPLoaded(const sp<AMessage> &msg) {
status_t err;
CHECK(msg->findInt32("result", &err));
@@ -816,7 +816,7 @@
}
}
-void NuPlayer2::RTSPSource::onDisconnected(const sp<AMessage> &msg) {
+void NuPlayer2::RTSPSource2::onDisconnected(const sp<AMessage> &msg) {
if (mState == DISCONNECTED) {
return;
}
@@ -842,7 +842,7 @@
}
}
-void NuPlayer2::RTSPSource::finishDisconnectIfPossible() {
+void NuPlayer2::RTSPSource2::finishDisconnectIfPossible() {
if (mState != DISCONNECTED) {
if (mHandler != NULL) {
mHandler->disconnect();
@@ -856,12 +856,12 @@
mDisconnectReplyID = 0;
}
-void NuPlayer2::RTSPSource::setError(status_t err) {
+void NuPlayer2::RTSPSource2::setError(status_t err) {
Mutex::Autolock _l(mBufferingLock);
mFinalResult = err;
}
-void NuPlayer2::RTSPSource::startBufferingIfNecessary() {
+void NuPlayer2::RTSPSource2::startBufferingIfNecessary() {
Mutex::Autolock _l(mBufferingLock);
if (!mBuffering) {
@@ -873,7 +873,7 @@
}
}
-bool NuPlayer2::RTSPSource::stopBufferingIfNecessary() {
+bool NuPlayer2::RTSPSource2::stopBufferingIfNecessary() {
Mutex::Autolock _l(mBufferingLock);
if (mBuffering) {
@@ -891,7 +891,7 @@
return true;
}
-void NuPlayer2::RTSPSource::finishSeek(status_t err) {
+void NuPlayer2::RTSPSource2::finishSeek(status_t err) {
if (mSeekReplyID == NULL) {
return;
}
diff --git a/media/libmedia/nuplayer2/RTSPSource.h b/media/libmedia/nuplayer2/RTSPSource2.h
similarity index 94%
rename from media/libmedia/nuplayer2/RTSPSource.h
rename to media/libmedia/nuplayer2/RTSPSource2.h
index 9bce473..739bd53 100644
--- a/media/libmedia/nuplayer2/RTSPSource.h
+++ b/media/libmedia/nuplayer2/RTSPSource2.h
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-#ifndef RTSP_SOURCE_H_
+#ifndef RTSP_SOURCE2_H_
-#define RTSP_SOURCE_H_
+#define RTSP_SOURCE2_H_
#include "NuPlayer2Source.h"
@@ -30,8 +30,8 @@
struct MyHandler;
struct SDPLoader;
-struct NuPlayer2::RTSPSource : public NuPlayer2::Source {
- RTSPSource(
+struct NuPlayer2::RTSPSource2 : public NuPlayer2::Source {
+ RTSPSource2(
const sp<AMessage> ¬ify,
const sp<MediaHTTPService> &httpService,
const char *url,
@@ -60,7 +60,7 @@
void onMessageReceived(const sp<AMessage> &msg);
protected:
- virtual ~RTSPSource();
+ virtual ~RTSPSource2();
virtual sp<MetaData> getFormatMeta(bool audio);
@@ -161,9 +161,9 @@
bool sourceNearEOS(bool audio);
bool sourceReachedEOS(bool audio);
- DISALLOW_EVIL_CONSTRUCTORS(RTSPSource);
+ DISALLOW_EVIL_CONSTRUCTORS(RTSPSource2);
};
} // namespace android
-#endif // RTSP_SOURCE_H_
+#endif // RTSP_SOURCE2_H_
diff --git a/media/libmedia/nuplayer2/StreamingSource.cpp b/media/libmedia/nuplayer2/StreamingSource.cpp
deleted file mode 100644
index 1c370b6..0000000
--- a/media/libmedia/nuplayer2/StreamingSource.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) 2010 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 "StreamingSource"
-#include <utils/Log.h>
-
-#include "StreamingSource.h"
-
-#include "ATSParser.h"
-#include "AnotherPacketSource.h"
-#include "NuPlayer2StreamListener.h"
-
-#include <media/MediaSource.h>
-#include <media/stagefright/foundation/ABuffer.h>
-#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/foundation/AMessage.h>
-#include <media/stagefright/foundation/MediaKeys.h>
-#include <media/stagefright/MetaData.h>
-#include <media/stagefright/Utils.h>
-
-namespace android {
-
-const int32_t kNumListenerQueuePackets = 80;
-
-NuPlayer2::StreamingSource::StreamingSource(
- const sp<AMessage> ¬ify,
- const sp<IStreamSource> &source)
- : Source(notify),
- mSource(source),
- mFinalResult(OK),
- mBuffering(false) {
-}
-
-NuPlayer2::StreamingSource::~StreamingSource() {
- if (mLooper != NULL) {
- mLooper->unregisterHandler(id());
- mLooper->stop();
- }
-}
-
-status_t NuPlayer2::StreamingSource::getBufferingSettings(
- BufferingSettings *buffering /* nonnull */) {
- *buffering = BufferingSettings();
- return OK;
-}
-
-status_t NuPlayer2::StreamingSource::setBufferingSettings(
- const BufferingSettings & /* buffering */) {
- return OK;
-}
-
-void NuPlayer2::StreamingSource::prepareAsync() {
- if (mLooper == NULL) {
- mLooper = new ALooper;
- mLooper->setName("streaming");
- mLooper->start();
-
- mLooper->registerHandler(this);
- }
-
- notifyVideoSizeChanged();
- notifyFlagsChanged(0);
- notifyPrepared();
-}
-
-void NuPlayer2::StreamingSource::start() {
- mStreamListener = new StreamListener(mSource, NULL);
-
- uint32_t sourceFlags = mSource->flags();
-
- uint32_t parserFlags = ATSParser::TS_TIMESTAMPS_ARE_ABSOLUTE;
- if (sourceFlags & IStreamSource::kFlagAlignedVideoData) {
- parserFlags |= ATSParser::ALIGNED_VIDEO_DATA;
- }
-
- mTSParser = new ATSParser(parserFlags);
-
- mStreamListener->start();
-
- postReadBuffer();
-}
-
-status_t NuPlayer2::StreamingSource::feedMoreTSData() {
- return postReadBuffer();
-}
-
-void NuPlayer2::StreamingSource::onReadBuffer() {
- for (int32_t i = 0; i < kNumListenerQueuePackets; ++i) {
- char buffer[188];
- sp<AMessage> extra;
- ssize_t n = mStreamListener->read(buffer, sizeof(buffer), &extra);
-
- if (n == 0) {
- ALOGI("input data EOS reached.");
- mTSParser->signalEOS(ERROR_END_OF_STREAM);
- setError(ERROR_END_OF_STREAM);
- break;
- } else if (n == INFO_DISCONTINUITY) {
- int32_t type = ATSParser::DISCONTINUITY_TIME;
-
- int32_t mask;
- if (extra != NULL
- && extra->findInt32(
- kIStreamListenerKeyDiscontinuityMask, &mask)) {
- if (mask == 0) {
- ALOGE("Client specified an illegal discontinuity type.");
- setError(ERROR_UNSUPPORTED);
- break;
- }
-
- type = mask;
- }
-
- mTSParser->signalDiscontinuity(
- (ATSParser::DiscontinuityType)type, extra);
- } else if (n < 0) {
- break;
- } else {
- if (buffer[0] == 0x00) {
- // XXX legacy
-
- if (extra == NULL) {
- extra = new AMessage;
- }
-
- uint8_t type = buffer[1];
-
- if (type & 2) {
- int64_t mediaTimeUs;
- memcpy(&mediaTimeUs, &buffer[2], sizeof(mediaTimeUs));
-
- extra->setInt64(kATSParserKeyMediaTimeUs, mediaTimeUs);
- }
-
- mTSParser->signalDiscontinuity(
- ((type & 1) == 0)
- ? ATSParser::DISCONTINUITY_TIME
- : ATSParser::DISCONTINUITY_FORMATCHANGE,
- extra);
- } else {
- status_t err = mTSParser->feedTSPacket(buffer, sizeof(buffer));
-
- if (err != OK) {
- ALOGE("TS Parser returned error %d", err);
-
- mTSParser->signalEOS(err);
- setError(err);
- break;
- }
- }
- }
- }
-}
-
-status_t NuPlayer2::StreamingSource::postReadBuffer() {
- {
- Mutex::Autolock _l(mBufferingLock);
- if (mFinalResult != OK) {
- return mFinalResult;
- }
- if (mBuffering) {
- return OK;
- }
- mBuffering = true;
- }
-
- (new AMessage(kWhatReadBuffer, this))->post();
- return OK;
-}
-
-bool NuPlayer2::StreamingSource::haveSufficientDataOnAllTracks() {
- // We're going to buffer at least 2 secs worth data on all tracks before
- // starting playback (both at startup and after a seek).
-
- static const int64_t kMinDurationUs = 2000000ll;
-
- sp<AnotherPacketSource> audioTrack = getSource(true /*audio*/);
- sp<AnotherPacketSource> videoTrack = getSource(false /*audio*/);
-
- status_t err;
- int64_t durationUs;
- if (audioTrack != NULL
- && (durationUs = audioTrack->getBufferedDurationUs(&err))
- < kMinDurationUs
- && err == OK) {
- ALOGV("audio track doesn't have enough data yet. (%.2f secs buffered)",
- durationUs / 1E6);
- return false;
- }
-
- if (videoTrack != NULL
- && (durationUs = videoTrack->getBufferedDurationUs(&err))
- < kMinDurationUs
- && err == OK) {
- ALOGV("video track doesn't have enough data yet. (%.2f secs buffered)",
- durationUs / 1E6);
- return false;
- }
-
- return true;
-}
-
-void NuPlayer2::StreamingSource::setError(status_t err) {
- Mutex::Autolock _l(mBufferingLock);
- mFinalResult = err;
-}
-
-sp<AnotherPacketSource> NuPlayer2::StreamingSource::getSource(bool audio) {
- if (mTSParser == NULL) {
- return NULL;
- }
-
- sp<MediaSource> source = mTSParser->getSource(
- audio ? ATSParser::AUDIO : ATSParser::VIDEO);
-
- return static_cast<AnotherPacketSource *>(source.get());
-}
-
-sp<AMessage> NuPlayer2::StreamingSource::getFormat(bool audio) {
- sp<AnotherPacketSource> source = getSource(audio);
-
- sp<AMessage> format = new AMessage;
- if (source == NULL) {
- format->setInt32("err", -EWOULDBLOCK);
- return format;
- }
-
- sp<MetaData> meta = source->getFormat();
- if (meta == NULL) {
- format->setInt32("err", -EWOULDBLOCK);
- return format;
- }
- status_t err = convertMetaDataToMessage(meta, &format);
- if (err != OK) { // format may have been cleared on error
- return NULL;
- }
- return format;
-}
-
-status_t NuPlayer2::StreamingSource::dequeueAccessUnit(
- bool audio, sp<ABuffer> *accessUnit) {
- sp<AnotherPacketSource> source = getSource(audio);
-
- if (source == NULL) {
- return -EWOULDBLOCK;
- }
-
- if (!haveSufficientDataOnAllTracks()) {
- postReadBuffer();
- }
-
- status_t finalResult;
- if (!source->hasBufferAvailable(&finalResult)) {
- return finalResult == OK ? -EWOULDBLOCK : finalResult;
- }
-
- status_t err = source->dequeueAccessUnit(accessUnit);
-
-#if !defined(LOG_NDEBUG) || LOG_NDEBUG == 0
- if (err == OK) {
- int64_t timeUs;
- CHECK((*accessUnit)->meta()->findInt64("timeUs", &timeUs));
- ALOGV("dequeueAccessUnit timeUs=%lld us", timeUs);
- }
-#endif
-
- return err;
-}
-
-bool NuPlayer2::StreamingSource::isRealTime() const {
- return mSource->flags() & IStreamSource::kFlagIsRealTimeData;
-}
-
-void NuPlayer2::StreamingSource::onMessageReceived(
- const sp<AMessage> &msg) {
- switch (msg->what()) {
- case kWhatReadBuffer:
- {
- onReadBuffer();
-
- {
- Mutex::Autolock _l(mBufferingLock);
- mBuffering = false;
- }
- break;
- }
- default:
- {
- TRESPASS();
- }
- }
-}
-
-
-} // namespace android
-
diff --git a/media/libmedia/nuplayer2/StreamingSource.h b/media/libmedia/nuplayer2/StreamingSource.h
deleted file mode 100644
index 4b89c38..0000000
--- a/media/libmedia/nuplayer2/StreamingSource.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2010 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 STREAMING_SOURCE_H_
-
-#define STREAMING_SOURCE_H_
-
-#include "NuPlayer2.h"
-#include "NuPlayer2Source.h"
-
-namespace android {
-
-struct ABuffer;
-struct ATSParser;
-struct AnotherPacketSource;
-
-struct NuPlayer2::StreamingSource : public NuPlayer2::Source {
- StreamingSource(
- const sp<AMessage> ¬ify,
- const sp<IStreamSource> &source);
-
- virtual status_t getBufferingSettings(
- BufferingSettings* buffering /* nonnull */) override;
- virtual status_t setBufferingSettings(const BufferingSettings& buffering) override;
-
- virtual void prepareAsync();
- virtual void start();
-
- virtual status_t feedMoreTSData();
-
- virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit);
-
- virtual bool isRealTime() const;
-
-protected:
- virtual ~StreamingSource();
-
- virtual void onMessageReceived(const sp<AMessage> &msg);
-
- virtual sp<AMessage> getFormat(bool audio);
-
-private:
- enum {
- kWhatReadBuffer,
- };
- sp<IStreamSource> mSource;
- status_t mFinalResult;
- sp<StreamListener> mStreamListener;
- sp<ATSParser> mTSParser;
-
- bool mBuffering;
- Mutex mBufferingLock;
- sp<ALooper> mLooper;
-
- void setError(status_t err);
- sp<AnotherPacketSource> getSource(bool audio);
- bool haveSufficientDataOnAllTracks();
- status_t postReadBuffer();
- void onReadBuffer();
-
- DISALLOW_EVIL_CONSTRUCTORS(StreamingSource);
-};
-
-} // namespace android
-
-#endif // STREAMING_SOURCE_H_