Loading include/media/stagefright/OMXCodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ private: int64_t mSeekTimeUs; ReadOptions::SeekMode mSeekMode; int64_t mTargetTimeUs; bool mOutputPortSettingsChangedPending; MediaBuffer *mLeftOverBuffer; Loading media/libstagefright/OMXCodec.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -1434,6 +1434,7 @@ OMXCodec::OMXCodec( mSeekTimeUs(-1), mSeekMode(ReadOptions::SEEK_CLOSEST_SYNC), mTargetTimeUs(-1), mOutputPortSettingsChangedPending(false), mLeftOverBuffer(NULL), mPaused(false), mNativeWindow(nativeWindow) { Loading Loading @@ -2344,6 +2345,14 @@ void OMXCodec::onCmdComplete(OMX_COMMANDTYPE cmd, OMX_U32 data) { drainInputBuffers(); fillOutputBuffers(); } if (mOutputPortSettingsChangedPending) { CODEC_LOGV( "Honoring deferred output port settings change."); mOutputPortSettingsChangedPending = false; onPortSettingsChanged(kPortIndexOutput); } } break; Loading Loading @@ -2407,6 +2416,8 @@ void OMXCodec::onStateChange(OMX_STATETYPE newState) { CODEC_LOGV("Now Executing."); mOutputPortSettingsChangedPending = false; setState(EXECUTING); // Buffers will be submitted to the component in the first Loading Loading @@ -2520,6 +2531,14 @@ void OMXCodec::onPortSettingsChanged(OMX_U32 portIndex) { CHECK_EQ((int)mState, (int)EXECUTING); CHECK_EQ(portIndex, (OMX_U32)kPortIndexOutput); CHECK(!mOutputPortSettingsChangedPending); if (mPortStatus[kPortIndexOutput] != ENABLED) { CODEC_LOGV("Deferring output port settings change."); mOutputPortSettingsChangedPending = true; return; } setState(RECONFIGURING); if (mQuirks & kNeedsFlushBeforeDisable) { Loading Loading @@ -2712,6 +2731,7 @@ bool OMXCodec::drainInputBuffer(BufferInfo *info) { if (srcBuffer->meta_data()->findInt64( kKeyTargetTime, &targetTimeUs) && targetTimeUs >= 0) { CODEC_LOGV("targetTimeUs = %lld us", targetTimeUs); mTargetTimeUs = targetTimeUs; } else { mTargetTimeUs = -1; Loading Loading @@ -3385,6 +3405,14 @@ status_t OMXCodec::read( } if (seeking) { while (mState == RECONFIGURING) { mBufferFilled.wait(mLock); } if (mState != EXECUTING) { return UNKNOWN_ERROR; } CODEC_LOGV("seeking to %lld us (%.2f secs)", seekTimeUs, seekTimeUs / 1E6); mSignalledEOS = false; Loading Loading
include/media/stagefright/OMXCodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ private: int64_t mSeekTimeUs; ReadOptions::SeekMode mSeekMode; int64_t mTargetTimeUs; bool mOutputPortSettingsChangedPending; MediaBuffer *mLeftOverBuffer; Loading
media/libstagefright/OMXCodec.cpp +28 −0 Original line number Diff line number Diff line Loading @@ -1434,6 +1434,7 @@ OMXCodec::OMXCodec( mSeekTimeUs(-1), mSeekMode(ReadOptions::SEEK_CLOSEST_SYNC), mTargetTimeUs(-1), mOutputPortSettingsChangedPending(false), mLeftOverBuffer(NULL), mPaused(false), mNativeWindow(nativeWindow) { Loading Loading @@ -2344,6 +2345,14 @@ void OMXCodec::onCmdComplete(OMX_COMMANDTYPE cmd, OMX_U32 data) { drainInputBuffers(); fillOutputBuffers(); } if (mOutputPortSettingsChangedPending) { CODEC_LOGV( "Honoring deferred output port settings change."); mOutputPortSettingsChangedPending = false; onPortSettingsChanged(kPortIndexOutput); } } break; Loading Loading @@ -2407,6 +2416,8 @@ void OMXCodec::onStateChange(OMX_STATETYPE newState) { CODEC_LOGV("Now Executing."); mOutputPortSettingsChangedPending = false; setState(EXECUTING); // Buffers will be submitted to the component in the first Loading Loading @@ -2520,6 +2531,14 @@ void OMXCodec::onPortSettingsChanged(OMX_U32 portIndex) { CHECK_EQ((int)mState, (int)EXECUTING); CHECK_EQ(portIndex, (OMX_U32)kPortIndexOutput); CHECK(!mOutputPortSettingsChangedPending); if (mPortStatus[kPortIndexOutput] != ENABLED) { CODEC_LOGV("Deferring output port settings change."); mOutputPortSettingsChangedPending = true; return; } setState(RECONFIGURING); if (mQuirks & kNeedsFlushBeforeDisable) { Loading Loading @@ -2712,6 +2731,7 @@ bool OMXCodec::drainInputBuffer(BufferInfo *info) { if (srcBuffer->meta_data()->findInt64( kKeyTargetTime, &targetTimeUs) && targetTimeUs >= 0) { CODEC_LOGV("targetTimeUs = %lld us", targetTimeUs); mTargetTimeUs = targetTimeUs; } else { mTargetTimeUs = -1; Loading Loading @@ -3385,6 +3405,14 @@ status_t OMXCodec::read( } if (seeking) { while (mState == RECONFIGURING) { mBufferFilled.wait(mLock); } if (mState != EXECUTING) { return UNKNOWN_ERROR; } CODEC_LOGV("seeking to %lld us (%.2f secs)", seekTimeUs, seekTimeUs / 1E6); mSignalledEOS = false; Loading