Loading cmds/stagefright/SimplePlayer.cpp +48 −25 Original line number Diff line number Diff line Loading @@ -259,7 +259,7 @@ void SimplePlayer::onMessageReceived(const sp<AMessage> &msg) { status_t err = onDoMoreStuff(); if (err == OK) { msg->post(5000ll); msg->post(10000ll); } break; } Loading Loading @@ -411,16 +411,27 @@ status_t SimplePlayer::onReset() { } status_t SimplePlayer::onDoMoreStuff() { ALOGV("onDoMoreStuff"); for (size_t i = 0; i < mStateByTrackIndex.size(); ++i) { CodecState *state = &mStateByTrackIndex.editValueAt(i); status_t err; do { size_t index; status_t err = state->mCodec->dequeueInputBuffer(&index); err = state->mCodec->dequeueInputBuffer(&index); if (err == OK) { ALOGV("dequeued input buffer on track %d", mStateByTrackIndex.keyAt(i)); state->mAvailInputBufferIndices.push_back(index); } else { ALOGV("dequeueInputBuffer on track %d returned %d", mStateByTrackIndex.keyAt(i), err); } } while (err == OK); do { BufferInfo info; err = state->mCodec->dequeueOutputBuffer( &info.mIndex, Loading @@ -430,6 +441,9 @@ status_t SimplePlayer::onDoMoreStuff() { &info.mFlags); if (err == OK) { ALOGV("dequeued output buffer on track %d", mStateByTrackIndex.keyAt(i)); state->mAvailOutputBufferInfos.push_back(info); } else if (err == INFO_FORMAT_CHANGED) { err = onOutputFormatChanged(mStateByTrackIndex.keyAt(i), state); Loading @@ -437,7 +451,13 @@ status_t SimplePlayer::onDoMoreStuff() { } else if (err == INFO_OUTPUT_BUFFERS_CHANGED) { err = state->mCodec->getOutputBuffers(&state->mBuffers[1]); CHECK_EQ(err, (status_t)OK); } else { ALOGV("dequeueOutputBuffer on track %d returned %d", mStateByTrackIndex.keyAt(i), err); } } while (err == OK || err == INFO_FORMAT_CHANGED || err == INFO_OUTPUT_BUFFERS_CHANGED); } for (;;) { Loading Loading @@ -475,6 +495,8 @@ status_t SimplePlayer::onDoMoreStuff() { 0); CHECK_EQ(err, (status_t)OK); ALOGV("enqueued input data on track %d", trackIndex); err = mExtractor->advance(); CHECK_EQ(err, (status_t)OK); } Loading @@ -500,7 +522,7 @@ status_t SimplePlayer::onDoMoreStuff() { if (lateByUs > 30000ll) { ALOGI("track %d buffer late by %lld us, dropping.", i, lateByUs); mStateByTrackIndex.keyAt(i), lateByUs); state->mCodec->releaseOutputBuffer(info->mIndex); } else { if (state->mAudioTrack != NULL) { Loading Loading @@ -529,7 +551,8 @@ status_t SimplePlayer::onDoMoreStuff() { break; } } else { ALOGV("track %d buffer early by %lld us.", i, -lateByUs); ALOGV("track %d buffer early by %lld us.", mStateByTrackIndex.keyAt(i), -lateByUs); break; } } Loading cmds/stagefright/codec.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -394,7 +394,7 @@ int main(int argc, char **argv) { player->setDataSource(argv[0]); player->setSurface(surface->getSurfaceTexture()); player->start(); sleep(10); sleep(60); player->stop(); player->reset(); Loading Loading
cmds/stagefright/SimplePlayer.cpp +48 −25 Original line number Diff line number Diff line Loading @@ -259,7 +259,7 @@ void SimplePlayer::onMessageReceived(const sp<AMessage> &msg) { status_t err = onDoMoreStuff(); if (err == OK) { msg->post(5000ll); msg->post(10000ll); } break; } Loading Loading @@ -411,16 +411,27 @@ status_t SimplePlayer::onReset() { } status_t SimplePlayer::onDoMoreStuff() { ALOGV("onDoMoreStuff"); for (size_t i = 0; i < mStateByTrackIndex.size(); ++i) { CodecState *state = &mStateByTrackIndex.editValueAt(i); status_t err; do { size_t index; status_t err = state->mCodec->dequeueInputBuffer(&index); err = state->mCodec->dequeueInputBuffer(&index); if (err == OK) { ALOGV("dequeued input buffer on track %d", mStateByTrackIndex.keyAt(i)); state->mAvailInputBufferIndices.push_back(index); } else { ALOGV("dequeueInputBuffer on track %d returned %d", mStateByTrackIndex.keyAt(i), err); } } while (err == OK); do { BufferInfo info; err = state->mCodec->dequeueOutputBuffer( &info.mIndex, Loading @@ -430,6 +441,9 @@ status_t SimplePlayer::onDoMoreStuff() { &info.mFlags); if (err == OK) { ALOGV("dequeued output buffer on track %d", mStateByTrackIndex.keyAt(i)); state->mAvailOutputBufferInfos.push_back(info); } else if (err == INFO_FORMAT_CHANGED) { err = onOutputFormatChanged(mStateByTrackIndex.keyAt(i), state); Loading @@ -437,7 +451,13 @@ status_t SimplePlayer::onDoMoreStuff() { } else if (err == INFO_OUTPUT_BUFFERS_CHANGED) { err = state->mCodec->getOutputBuffers(&state->mBuffers[1]); CHECK_EQ(err, (status_t)OK); } else { ALOGV("dequeueOutputBuffer on track %d returned %d", mStateByTrackIndex.keyAt(i), err); } } while (err == OK || err == INFO_FORMAT_CHANGED || err == INFO_OUTPUT_BUFFERS_CHANGED); } for (;;) { Loading Loading @@ -475,6 +495,8 @@ status_t SimplePlayer::onDoMoreStuff() { 0); CHECK_EQ(err, (status_t)OK); ALOGV("enqueued input data on track %d", trackIndex); err = mExtractor->advance(); CHECK_EQ(err, (status_t)OK); } Loading @@ -500,7 +522,7 @@ status_t SimplePlayer::onDoMoreStuff() { if (lateByUs > 30000ll) { ALOGI("track %d buffer late by %lld us, dropping.", i, lateByUs); mStateByTrackIndex.keyAt(i), lateByUs); state->mCodec->releaseOutputBuffer(info->mIndex); } else { if (state->mAudioTrack != NULL) { Loading Loading @@ -529,7 +551,8 @@ status_t SimplePlayer::onDoMoreStuff() { break; } } else { ALOGV("track %d buffer early by %lld us.", i, -lateByUs); ALOGV("track %d buffer early by %lld us.", mStateByTrackIndex.keyAt(i), -lateByUs); break; } } Loading
cmds/stagefright/codec.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -394,7 +394,7 @@ int main(int argc, char **argv) { player->setDataSource(argv[0]); player->setSurface(surface->getSurfaceTexture()); player->start(); sleep(10); sleep(60); player->stop(); player->reset(); Loading