diff options
author | Wei Jia <wjia@google.com> | 2015-03-09 17:01:47 -0700 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2015-03-09 17:01:47 -0700 |
commit | 5833b6aad2c46ba516bdc8262f4fc4667e8018ed (patch) | |
tree | ff4014a0c9a409d1849bf9d2c7583a361ff9637b /media/libmediaplayerservice/nuplayer | |
parent | e8c9a8f78a9f9213060e5d54a15cde364df3e0d0 (diff) | |
download | frameworks_av-5833b6aad2c46ba516bdc8262f4fc4667e8018ed.zip frameworks_av-5833b6aad2c46ba516bdc8262f4fc4667e8018ed.tar.gz frameworks_av-5833b6aad2c46ba516bdc8262f4fc4667e8018ed.tar.bz2 |
mediaplayer: move MediaClock from NuPlayer to libstagefright.
Bug: 19666434
Change-Id: I86865e594226419bbbbee217098f96434e43afbe
Diffstat (limited to 'media/libmediaplayerservice/nuplayer')
4 files changed, 1 insertions, 219 deletions
diff --git a/media/libmediaplayerservice/nuplayer/Android.mk b/media/libmediaplayerservice/nuplayer/Android.mk index e2c72ed..6609874 100644 --- a/media/libmediaplayerservice/nuplayer/Android.mk +++ b/media/libmediaplayerservice/nuplayer/Android.mk @@ -4,7 +4,6 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ GenericSource.cpp \ HTTPLiveSource.cpp \ - MediaClock.cpp \ NuPlayer.cpp \ NuPlayerCCDecoder.cpp \ NuPlayerDecoder.cpp \ diff --git a/media/libmediaplayerservice/nuplayer/MediaClock.cpp b/media/libmediaplayerservice/nuplayer/MediaClock.cpp deleted file mode 100644 index 9152da1..0000000 --- a/media/libmediaplayerservice/nuplayer/MediaClock.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (C) 2015 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 "MediaClock" -#include <utils/Log.h> - -#include "MediaClock.h" - -#include <media/stagefright/foundation/ADebug.h> -#include <media/stagefright/foundation/ALooper.h> - -namespace android { - -MediaClock::MediaClock() - : mAnchorTimeMediaUs(-1), - mAnchorTimeRealUs(-1), - mMaxTimeMediaUs(INT64_MAX), - mStartingTimeMediaUs(-1), - mPlaybackRate(1.0) { -} - -MediaClock::~MediaClock() { -} - -void MediaClock::setStartingTimeMedia(int64_t startingTimeMediaUs) { - Mutex::Autolock autoLock(mLock); - mStartingTimeMediaUs = startingTimeMediaUs; -} - -void MediaClock::clearAnchor() { - Mutex::Autolock autoLock(mLock); - mAnchorTimeMediaUs = -1; - mAnchorTimeRealUs = -1; -} - -void MediaClock::updateAnchor( - int64_t anchorTimeMediaUs, - int64_t anchorTimeRealUs, - int64_t maxTimeMediaUs) { - if (anchorTimeMediaUs < 0 || anchorTimeRealUs < 0) { - ALOGW("reject anchor time since it is negative."); - return; - } - - Mutex::Autolock autoLock(mLock); - int64_t nowUs = ALooper::GetNowUs(); - int64_t nowMediaUs = - anchorTimeMediaUs + (nowUs - anchorTimeRealUs) * (double)mPlaybackRate; - if (nowMediaUs < 0) { - ALOGW("reject anchor time since it leads to negative media time."); - return; - } - mAnchorTimeRealUs = nowUs; - mAnchorTimeMediaUs = nowMediaUs; - mMaxTimeMediaUs = maxTimeMediaUs; -} - -void MediaClock::updateMaxTimeMedia(int64_t maxTimeMediaUs) { - Mutex::Autolock autoLock(mLock); - mMaxTimeMediaUs = maxTimeMediaUs; -} - -void MediaClock::setPlaybackRate(float rate) { - CHECK_GE(rate, 0.0); - Mutex::Autolock autoLock(mLock); - if (mAnchorTimeRealUs == -1) { - mPlaybackRate = rate; - return; - } - - int64_t nowUs = ALooper::GetNowUs(); - mAnchorTimeMediaUs += (nowUs - mAnchorTimeRealUs) * (double)mPlaybackRate; - if (mAnchorTimeMediaUs < 0) { - ALOGW("setRate: anchor time should not be negative, set to 0."); - mAnchorTimeMediaUs = 0; - } - mAnchorTimeRealUs = nowUs; - mPlaybackRate = rate; -} - -status_t MediaClock::getMediaTime( - int64_t realUs, int64_t *outMediaUs, bool allowPastMaxTime) { - Mutex::Autolock autoLock(mLock); - return getMediaTime_l(realUs, outMediaUs, allowPastMaxTime); -} - -status_t MediaClock::getMediaTime_l( - int64_t realUs, int64_t *outMediaUs, bool allowPastMaxTime) { - if (mAnchorTimeRealUs == -1) { - return NO_INIT; - } - - int64_t mediaUs = mAnchorTimeMediaUs - + (realUs - mAnchorTimeRealUs) * (double)mPlaybackRate; - if (mediaUs > mMaxTimeMediaUs && !allowPastMaxTime) { - mediaUs = mMaxTimeMediaUs; - } - if (mediaUs < mStartingTimeMediaUs) { - mediaUs = mStartingTimeMediaUs; - } - if (mediaUs < 0) { - mediaUs = 0; - } - *outMediaUs = mediaUs; - return OK; -} - -status_t MediaClock::getRealTimeFor(int64_t targetMediaUs, int64_t *outRealUs) { - Mutex::Autolock autoLock(mLock); - if (mPlaybackRate == 0.0) { - return NO_INIT; - } - - int64_t nowUs = ALooper::GetNowUs(); - int64_t nowMediaUs; - status_t status = - getMediaTime_l(nowUs, &nowMediaUs, true /* allowPastMaxTime */); - if (status != OK) { - return status; - } - *outRealUs = (targetMediaUs - nowMediaUs) / (double)mPlaybackRate + nowUs; - return OK; -} - -} // namespace android diff --git a/media/libmediaplayerservice/nuplayer/MediaClock.h b/media/libmediaplayerservice/nuplayer/MediaClock.h deleted file mode 100644 index 660764f..0000000 --- a/media/libmediaplayerservice/nuplayer/MediaClock.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2015 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 MEDIA_CLOCK_H_ - -#define MEDIA_CLOCK_H_ - -#include <media/stagefright/foundation/ABase.h> -#include <utils/Mutex.h> -#include <utils/RefBase.h> - -namespace android { - -struct AMessage; - -struct MediaClock : public RefBase { - MediaClock(); - - void setStartingTimeMedia(int64_t startingTimeMediaUs); - - void clearAnchor(); - // It's required to use timestamp of just rendered frame as - // anchor time in paused state. - void updateAnchor( - int64_t anchorTimeMediaUs, - int64_t anchorTimeRealUs, - int64_t maxTimeMediaUs = INT64_MAX); - - void updateMaxTimeMedia(int64_t maxTimeMediaUs); - - void setPlaybackRate(float rate); - - // query media time corresponding to real time |realUs|, and save the - // result in |outMediaUs|. - status_t getMediaTime(int64_t realUs, - int64_t *outMediaUs, - bool allowPastMaxTime = false); - // query real time corresponding to media time |targetMediaUs|. - // The result is saved in |outRealUs|. - status_t getRealTimeFor(int64_t targetMediaUs, int64_t *outRealUs); - -protected: - virtual ~MediaClock(); - -private: - status_t getMediaTime_l(int64_t realUs, - int64_t *outMediaUs, - bool allowPastMaxTime); - - Mutex mLock; - - int64_t mAnchorTimeMediaUs; - int64_t mAnchorTimeRealUs; - int64_t mMaxTimeMediaUs; - int64_t mStartingTimeMediaUs; - - float mPlaybackRate; - - DISALLOW_EVIL_CONSTRUCTORS(MediaClock); -}; - -} // namespace android - -#endif // MEDIA_CLOCK_H_ diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index e491a31..6f19ba5 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -20,13 +20,12 @@ #include "NuPlayerRenderer.h" -#include "MediaClock.h" - #include <media/stagefright/foundation/ABuffer.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/foundation/AUtils.h> #include <media/stagefright/foundation/AWakeLock.h> +#include <media/stagefright/MediaClock.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/MetaData.h> #include <media/stagefright/Utils.h> |