void MediaCodecDataDecoder::State(ModuleState aState) { LOG("%s -> %s", ModuleStateStr(mState), ModuleStateStr(aState)); if (aState == kDrainDecoder) { MOZ_ASSERT(mState == kDrainQueue); } else if (aState == kDrainWaitEOS) { MOZ_ASSERT(mState == kDrainDecoder); } mState = aState; }
bool MediaCodecDataDecoder::State(ModuleState aState) { bool ok = true; if (mState == kShutdown) { ok = false; } else if (mState == kStopping) { ok = aState == kShutdown; } else if (aState == kDrainDecoder) { ok = mState == kDrainQueue; } else if (aState == kDrainWaitEOS) { ok = mState == kDrainDecoder; } if (ok) { LOG("%s -> %s", ModuleStateStr(mState), ModuleStateStr(aState)); mState = aState; } return ok; }
bool MediaCodecDataDecoder::SetState(ModuleState aState) { bool ok = true; if (mState == ModuleState::kShutdown) { ok = false; } else if (mState == ModuleState::kStopping) { ok = aState == ModuleState::kShutdown; } else if (aState == ModuleState::kDrainDecoder) { ok = mState == ModuleState::kDrainQueue; } else if (aState == ModuleState::kDrainWaitEOS) { ok = mState == ModuleState::kDrainDecoder; } if (ok) { LOG("%s -> %s", ModuleStateStr(mState), ModuleStateStr(aState)); mState = aState; } else { LOG("Fail to transit from %s to %s state", ModuleStateStr(mState), ModuleStateStr(aState)); } return ok; }