Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a68f66a authored by Wei Jia's avatar Wei Jia
Browse files

NuPlayer: make MediaClock a player-wide resource.

Test: compiles
Bug: 65204641
Change-Id: I7e58abd508b29c222cdb9fd2e60563cf5735a444
parent 52f34c89
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/MediaBuffer.h>
#include <media/stagefright/MediaClock.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
@@ -172,9 +173,10 @@ private:

////////////////////////////////////////////////////////////////////////////////

NuPlayer::NuPlayer(pid_t pid)
NuPlayer::NuPlayer(pid_t pid, const sp<MediaClock> &mediaClock)
    : mUIDValid(false),
      mPID(pid),
      mMediaClock(mediaClock),
      mSourceFlags(0),
      mOffloadAudio(false),
      mAudioDecoderGeneration(0),
@@ -204,6 +206,7 @@ NuPlayer::NuPlayer(pid_t pid)
      mPausedForBuffering(false),
      mIsDrmProtected(false),
      mDataSourceType(DATA_SOURCE_TYPE_NONE) {
    CHECK(mediaClock != NULL);
    clearFlushComplete();
}

@@ -1523,7 +1526,7 @@ void NuPlayer::onStart(int64_t startPositionUs, MediaPlayerSeekMode mode) {
    sp<AMessage> notify = new AMessage(kWhatRendererNotify, this);
    ++mRendererGeneration;
    notify->setInt32("generation", mRendererGeneration);
    mRenderer = new Renderer(mAudioSink, notify, flags);
    mRenderer = new Renderer(mAudioSink, mMediaClock, notify, flags);
    mRendererLooper = new ALooper;
    mRendererLooper->setName("NuPlayerRenderer");
    mRendererLooper->start(false, false, ANDROID_PRIORITY_AUDIO);
+3 −1
Original line number Diff line number Diff line
@@ -30,11 +30,12 @@ struct AMessage;
struct AudioPlaybackRate;
struct AVSyncSettings;
class IDataSource;
struct MediaClock;
class MetaData;
struct NuPlayerDriver;

struct NuPlayer : public AHandler {
    explicit NuPlayer(pid_t pid);
    explicit NuPlayer(pid_t pid, const sp<MediaClock> &mediaClock);

    void setUID(uid_t uid);

@@ -157,6 +158,7 @@ private:
    bool mUIDValid;
    uid_t mUID;
    pid_t mPID;
    const sp<MediaClock> mMediaClock;
    Mutex mSourceLock;  // guard |mSource|.
    sp<Source> mSource;
    uint32_t mSourceFlags;
+3 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/ALooper.h>
#include <media/stagefright/foundation/AUtils.h>
#include <media/stagefright/MediaClock.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/Utils.h>

@@ -66,7 +67,8 @@ NuPlayerDriver::NuPlayerDriver(pid_t pid)
      mSeekInProgress(false),
      mPlayingTimeUs(0),
      mLooper(new ALooper),
      mPlayer(new NuPlayer(pid)),
      mMediaClock(new MediaClock),
      mPlayer(new NuPlayer(pid, mMediaClock)),
      mPlayerFlags(0),
      mAnalyticsItem(NULL),
      mAtEOS(false),
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
namespace android {

struct ALooper;
struct MediaClock;
struct NuPlayer;

struct NuPlayerDriver : public MediaPlayerInterface {
@@ -127,6 +128,7 @@ private:
    // <<<

    sp<ALooper> mLooper;
    const sp<MediaClock> mMediaClock;
    const sp<NuPlayer> mPlayer;
    sp<AudioSink> mAudioSink;
    uint32_t mPlayerFlags;
+3 −2
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ const int64_t NuPlayer::Renderer::kMinPositionUpdateDelayUs = 100000ll;

NuPlayer::Renderer::Renderer(
        const sp<MediaPlayerBase::AudioSink> &sink,
        const sp<MediaClock> &mediaClock,
        const sp<AMessage> &notify,
        uint32_t flags)
    : mAudioSink(sink),
@@ -103,6 +104,7 @@ NuPlayer::Renderer::Renderer(
      mAudioDrainGeneration(0),
      mVideoDrainGeneration(0),
      mAudioEOSGeneration(0),
      mMediaClock(mediaClock),
      mPlaybackSettings(AUDIO_PLAYBACK_RATE_DEFAULT),
      mAudioFirstAnchorTimeMediaUs(-1),
      mAnchorTimeMediaUs(-1),
@@ -130,7 +132,7 @@ NuPlayer::Renderer::Renderer(
      mLastAudioBufferDrained(0),
      mUseAudioCallback(false),
      mWakeLock(new AWakeLock()) {
    mMediaClock = new MediaClock;
    CHECK(mediaClock != NULL);
    mPlaybackRate = mPlaybackSettings.mSpeed;
    mMediaClock->setPlaybackRate(mPlaybackRate);
}
@@ -149,7 +151,6 @@ NuPlayer::Renderer::~Renderer() {
        flushQueue(&mVideoQueue);
    }
    mWakeLock.clear();
    mMediaClock.clear();
    mVideoScheduler.clear();
    mNotify.clear();
    mAudioSink.clear();
Loading