diff options
| -rw-r--r-- | include/media/stagefright/SurfaceMediaSource.h | 4 | ||||
| -rw-r--r-- | media/libstagefright/SurfaceMediaSource.cpp | 17 | 
2 files changed, 12 insertions, 9 deletions
diff --git a/include/media/stagefright/SurfaceMediaSource.h b/include/media/stagefright/SurfaceMediaSource.h index f60a535..82e5965 100644 --- a/include/media/stagefright/SurfaceMediaSource.h +++ b/include/media/stagefright/SurfaceMediaSource.h @@ -193,8 +193,8 @@ private:      // Set to a default of 30 fps if not specified by the client side      int32_t mFrameRate; -    // mStopped is a flag to check if the recording is going on -    bool mStopped; +    // mStarted is a flag to check if the recording is going on +    bool mStarted;      // mNumFramesReceived indicates the number of frames recieved from      // the client side diff --git a/media/libstagefright/SurfaceMediaSource.cpp b/media/libstagefright/SurfaceMediaSource.cpp index 9d39d0e..97f9c7c 100644 --- a/media/libstagefright/SurfaceMediaSource.cpp +++ b/media/libstagefright/SurfaceMediaSource.cpp @@ -42,7 +42,7 @@ SurfaceMediaSource::SurfaceMediaSource(uint32_t bufferWidth, uint32_t bufferHeig      mNumPendingBuffers(0),      mCurrentTimestamp(0),      mFrameRate(30), -    mStopped(false), +    mStarted(false),      mNumFramesReceived(0),      mNumFramesEncoded(0),      mFirstFrameTimestamp(0), @@ -80,7 +80,7 @@ SurfaceMediaSource::SurfaceMediaSource(uint32_t bufferWidth, uint32_t bufferHeig  SurfaceMediaSource::~SurfaceMediaSource() {      ALOGV("~SurfaceMediaSource"); -    CHECK(mStopped == true); +    CHECK(!mStarted);  }  nsecs_t SurfaceMediaSource::getTimestamp() { @@ -140,6 +140,8 @@ status_t SurfaceMediaSource::start(MetaData *params)      Mutex::Autolock lock(mMutex); +    CHECK(!mStarted); +      mStartTimeNs = 0;      int64_t startTimeUs;      int32_t bufferCount = 0; @@ -171,6 +173,7 @@ status_t SurfaceMediaSource::start(MetaData *params)      }      mNumPendingBuffers = 0; +    mStarted = true;      return OK;  } @@ -191,7 +194,7 @@ status_t SurfaceMediaSource::stop()      ALOGV("stop");      Mutex::Autolock lock(mMutex); -    if (mStopped) { +    if (!mStarted) {          return OK;      } @@ -208,7 +211,7 @@ status_t SurfaceMediaSource::stop()          mMediaBuffersAvailableCondition.wait(mMutex);      } -    mStopped = true; +    mStarted = false;      mFrameAvailableCondition.signal();      mMediaBuffersAvailableCondition.signal(); @@ -270,7 +273,7 @@ status_t SurfaceMediaSource::read( MediaBuffer **buffer,      *buffer = NULL; -    while (!mStopped && mNumPendingBuffers == mMaxAcquiredBufferCount) { +    while (mStarted && mNumPendingBuffers == mMaxAcquiredBufferCount) {          mMediaBuffersAvailableCondition.wait(mMutex);      } @@ -281,7 +284,7 @@ status_t SurfaceMediaSource::read( MediaBuffer **buffer,      BufferQueue::BufferItem item;      // If the recording has started and the queue is empty, then just      // wait here till the frames come in from the client side -    while (!mStopped) { +    while (mStarted) {          status_t err = mBufferQueue->acquireBuffer(&item);          if (err == BufferQueue::NO_BUFFER_AVAILABLE) { @@ -322,7 +325,7 @@ status_t SurfaceMediaSource::read( MediaBuffer **buffer,      // If the loop was exited as a result of stopping the recording,      // it is OK -    if (mStopped) { +    if (!mStarted) {          ALOGV("Read: SurfaceMediaSource is stopped. Returning ERROR_END_OF_STREAM.");          return ERROR_END_OF_STREAM;      }  | 
