Closed Bug 1131467 Opened 10 years ago Closed 10 years ago

Can't seek in MSE demo player

Categories

(Core :: Audio/Video, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1123669

People

(Reporter: ayang, Assigned: bwu)

References

Details

http://dash-mse-test.appspot.com/dash-player.html I tried to rollback to 226601, the result is the same. After performing seeking, Input() is called twice and then stopping to be called. The OMX decode won't output any frame for just 2 inputs.
Another clue is: http://developer.android.com/reference/android/media/MediaCodec.html My my understanding, QCT OMX needs to be configure as adaptive, or it needs to call MediaCodec->flush() after seeking.
(In reply to Alfredo Yang from comment #0) > http://dash-mse-test.appspot.com/dash-player.html > > I tried to rollback to 226601, the result is the same. > After performing seeking, Input() is called twice and then stopping to be > called. > The OMX decode won't output any frame for just 2 inputs. Then we should make input() to be called more... :) It seems MP4Reader should not expect any output for just 2 inputs. Let me check it.
Assignee: nobody → bwu
From MediaCodec document: "Once the client reaches the end of the input data it signals the end of the input stream by specifying a flag of BUFFER_FLAG_END_OF_STREAM in the call to queueInputBuffer(int, int, int, long, int). The codec will continue to return output buffers until it eventually signals the end of the output stream by specifying the same flag (BUFFER_FLAG_END_OF_STREAM) on the BufferInfo returned in dequeueOutputBuffer(MediaCodec.BufferInfo, long). Do not submit additional input buffers after signaling the end of the input stream, unless the codec has been flushed, or stopped and restarted. " Since current code uses BUFFER_FLAG_END_OF_STREAM without flush(), it could be one reason. BTW, this problem can be reproduced by normal video. It can't seek to other place after playing to end.
(In reply to Alfredo Yang from comment #3) > From MediaCodec document: > > "Once the client reaches the end of the input data it signals the end of the > input stream by specifying a flag of BUFFER_FLAG_END_OF_STREAM in the call > to queueInputBuffer(int, int, int, long, int). The codec will continue to > return output buffers until it eventually signals the end of the output > stream by specifying the same flag (BUFFER_FLAG_END_OF_STREAM) on the > BufferInfo returned in dequeueOutputBuffer(MediaCodec.BufferInfo, long). Do > not submit additional input buffers after signaling the end of the input > stream, unless the codec has been flushed, or stopped and restarted. " > > Since current code uses BUFFER_FLAG_END_OF_STREAM without flush(), it could > be one reason. > > BTW, this problem can be reproduced by normal video. It can't seek to other > place after playing to end. Thanks for the info! It looks this bug could be similar to Bug 1123669.
The rootcause are 1. mDrainComplete is not reset when flushing, so ProcessOutput[1] will not enter the loop to retrieve the decoded data. 2. mInputEOS is not reset when flushing, so no input data will be processed. [1]https://dxr.mozilla.org/mozilla-central/source/dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp?from=GonkMediaDataDecoder.cpp#174 [2]https://dxr.mozilla.org/mozilla-central/source/dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp?from=GonkMediaDataDecoder.cpp#54
(In reply to Blake Wu [:bwu][:blakewu] from comment #5) > The rootcause are > 1. mDrainComplete is not reset when flushing, so ProcessOutput[1] will not > enter the loop to retrieve the decoded data. > 2. mInputEOS is not reset when flushing, so no input data will be processed. > > > [1]https://dxr.mozilla.org/mozilla-central/source/dom/media/fmp4/gonk/ > GonkMediaDataDecoder.cpp?from=GonkMediaDataDecoder.cpp#174 > [2]https://dxr.mozilla.org/mozilla-central/source/dom/media/fmp4/gonk/ > GonkMediaDataDecoder.cpp?from=GonkMediaDataDecoder.cpp#54 I should put this comment in bug 1123669 since currently I only tested on local playback instead of MSE case. The rootcause might be different. Will MSE afterwards.
Depends on: 1123669
After verifying the patch in bug 1123669 in MSE case, the problem in this bug is gone.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.