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

Commit d5c07b2b authored by Lajos Molnar's avatar Lajos Molnar Committed by Android Git Automerger
Browse files

am 63f393db: am a3725d7b: stagefright: MediaSync: use VideoFrameScheduler

* commit '63f393db':
  stagefright: MediaSync: use VideoFrameScheduler
parents 441576dc 63f393db
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ class GraphicBuffer;
class IGraphicBufferConsumer;
class IGraphicBufferProducer;
struct MediaClock;
struct VideoFrameScheduler;

// MediaSync manages media playback and its synchronization to a media clock
// source. It can be also used for video-only playback.
@@ -132,10 +133,9 @@ protected:
private:
    enum {
        kWhatDrainVideo          = 'dVid',
        kWhatCheckFrameAvailable = 'cFrA',
    };

    static const int MAX_OUTSTANDING_BUFFERS = 2;

    // This is a thin wrapper class that lets us listen to
    // IConsumerListener::onFrameAvailable from mInput.
    class InputListener : public BnConsumerListener,
@@ -194,6 +194,7 @@ private:
    sp<IGraphicBufferConsumer> mInput;
    sp<IGraphicBufferProducer> mOutput;
    int mUsageFlagsFromOutput;
    uint32_t mMaxAcquiredBufferCount; // max acquired buffer count

    sp<AudioTrack> mAudioTrack;
    uint32_t mNativeSampleRateInHz;
@@ -202,6 +203,7 @@ private:

    int64_t mNextBufferItemMediaUs;
    List<BufferItem> mBufferItems;
    sp<VideoFrameScheduler> mFrameScheduler;

    // Keep track of buffers received from |mInput|. This is needed because
    // it's possible the consumer of |mOutput| could return a different
@@ -242,8 +244,9 @@ private:
    // onBufferReleasedByOutput releases a buffer back to the input.
    void onFrameAvailableFromInput();

    // Send |bufferItem| to the output for rendering.
    void renderOneBufferItem_l(const BufferItem &bufferItem);
    // Send |bufferItem| to the output for rendering. If this is not the only
    // buffer sent for rendering, check for any dropped frames in |checkInUs| us.
    void renderOneBufferItem_l(const BufferItem &bufferItem, int64_t checkInUs);

    // This implements the onBufferReleased callback from IProducerListener.
    // It gets called from an OutputListener.
+5 −1
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ struct VideoFrameScheduler : public RefBase {
    // returns the vsync period for the main display
    nsecs_t getVsyncPeriod();

    // returns the current frames-per-second, or 0.f if not primed
    float getFrameRate();

    void release();

    static const size_t kHistorySize = 8;
@@ -54,8 +57,9 @@ private:
        void reset(float fps = -1);
        // keep current estimate, but restart phase
        void restart();
        // returns period
        // returns period or 0 if not yet primed
        nsecs_t addSample(nsecs_t time);
        nsecs_t getPeriod() const;

    private:
        nsecs_t mPeriod;
+0 −1
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ LOCAL_SRC_FILES:= \
    StagefrightPlayer.cpp       \
    StagefrightRecorder.cpp     \
    TestPlayerStub.cpp          \
    VideoFrameScheduler.cpp     \

LOCAL_SHARED_LIBRARIES :=       \
    libbinder                   \
+1 −2
Original line number Diff line number Diff line
@@ -29,8 +29,7 @@
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/Utils.h>

#include <VideoFrameScheduler.h>
#include <media/stagefright/VideoFrameScheduler.h>

#include <inttypes.h>

+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ LOCAL_SRC_FILES:= \
        TimedEventQueue.cpp               \
        Utils.cpp                         \
        VBRISeeker.cpp                    \
        VideoFrameScheduler.cpp           \
        WAVExtractor.cpp                  \
        WVMExtractor.cpp                  \
        XINGSeeker.cpp                    \
Loading