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

Commit 08c7473c authored by James Dong's avatar James Dong
Browse files

Initial checkin for pause and resume control

Change-Id: Ibdcf7bea5fb66baa81878704ba4091dfcfe382ee
parent e577e87a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ struct AMRWriter : public MediaWriter {
    virtual bool reachedEOS();
    virtual status_t start();
    virtual void stop();
    virtual void pause();

protected:
    virtual ~AMRWriter();
@@ -46,6 +47,8 @@ private:
    status_t mInitCheck;
    sp<MediaSource> mSource;
    bool mStarted;
    volatile bool mPaused;
    volatile bool mResumed;
    volatile bool mDone;
    volatile bool mReachedEOS;
    pthread_t mThread;
+4 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ public:
    virtual status_t start();
    virtual bool reachedEOS();
    virtual void stop();
    virtual void pause();

    void beginBox(const char *fourcc);
    void writeInt8(int8_t x);
@@ -59,6 +60,8 @@ private:
    class Track;

    FILE *mFile;
    bool mPaused;
    bool mStarted;
    off_t mOffset;
    off_t mMdatOffset;
    uint8_t *mMoovBoxBuffer;
@@ -77,6 +80,7 @@ private:

    void setStartTimestamp(int64_t timeUs);
    int64_t getStartTimestamp();  // Not const
    status_t startTracks();

    void lock();
    void unlock();
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ struct MediaWriter : public RefBase {
    virtual bool reachedEOS() = 0;
    virtual status_t start() = 0;
    virtual void stop() = 0;
    virtual void pause() = 0;
    virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; }
    virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; }
    virtual void setListener(const sp<IMediaPlayerClient>& listener) {
+8 −0
Original line number Diff line number Diff line
@@ -692,6 +692,14 @@ status_t StagefrightRecorder::startMPEG4Recording() {
    return OK;
}

status_t StagefrightRecorder::pause() {
    if (mWriter == NULL) {
        return UNKNOWN_ERROR;
    }
    mWriter->pause();
    return OK;
}

status_t StagefrightRecorder::stop() {
    if (mWriter == NULL) {
        return UNKNOWN_ERROR;
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ struct StagefrightRecorder : public MediaRecorderBase {
    virtual status_t setListener(const sp<IMediaPlayerClient>& listener);
    virtual status_t prepare();
    virtual status_t start();
    virtual status_t pause();
    virtual status_t stop();
    virtual status_t close();
    virtual status_t reset();
Loading