Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1715)

Issue 215783002: Fix an issue that audio and video may run out of sync (Closed)

Created:
6 years, 9 months ago by qinmin
Modified:
6 years, 8 months ago
CC:
chromium-reviews, feature-media-reviews_chromium.org, gunsch
Visibility:
Public.

Description

Fix an issue that audio and video may run out of sync This CL fixes 3 issues: 1. In ProcessPendingEvents(), if there is a non-seek pending event, UpdateTimestamps() will not get called. This is probably the number 1 reason that a/v lose sync. 2. MSP use its internal clock to estimate the current presentation time. However, hardware may consume data at a different rate. Passing the current frame position from AudioTrack to MSP so we get a better estimation of the current time. 3. When config change comes, We don't need to reset the clock if audio decoder is not recreated. BUG=351722 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=263754

Patch Set 1 : #

Total comments: 6

Patch Set 2 : addressing comments #

Total comments: 16

Patch Set 3 : addressing wolenetz's comment #

Total comments: 2

Patch Set 4 : adding TODO for pointer comparison #

Total comments: 2

Patch Set 5 : addressing acolwell's comments #

Total comments: 9

Patch Set 6 : addressing acolwell's comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+213 lines, -101 lines) Patch
M media/base/android/audio_decoder_job.h View 1 2 3 4 3 chunks +14 lines, -1 line 0 comments Download
M media/base/android/audio_decoder_job.cc View 1 2 3 4 5 3 chunks +39 lines, -8 lines 0 comments Download
M media/base/android/java/src/org/chromium/media/MediaCodecBridge.java View 1 2 3 4 5 2 chunks +30 lines, -10 lines 0 comments Download
M media/base/android/media_codec_bridge.h View 1 chunk +3 lines, -2 lines 0 comments Download
M media/base/android/media_codec_bridge.cc View 1 2 2 chunks +3 lines, -2 lines 0 comments Download
M media/base/android/media_decoder_job.h View 1 2 3 4 3 chunks +10 lines, -8 lines 0 comments Download
M media/base/android/media_decoder_job.cc View 1 2 3 4 5 11 chunks +18 lines, -16 lines 0 comments Download
M media/base/android/media_source_player.h View 1 2 3 4 5 chunks +12 lines, -12 lines 0 comments Download
M media/base/android/media_source_player.cc View 1 2 3 4 13 chunks +30 lines, -41 lines 0 comments Download
M media/base/android/media_source_player_unittest.cc View 1 2 3 4 5 1 chunk +51 lines, -0 lines 0 comments Download
M media/base/android/video_decoder_job.h View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download
M media/base/android/video_decoder_job.cc View 1 2 3 4 1 chunk +2 lines, -1 line 0 comments Download

Messages

Total messages: 19 (0 generated)
qinmin
PTAL
6 years, 9 months ago (2014-03-27 23:18:28 UTC) #1
wolenetz
Thanks for sharing; I'm sorry it took me so long to get first round of ...
6 years, 8 months ago (2014-04-01 18:15:47 UTC) #2
qinmin
https://codereview.chromium.org/215783002/diff/20001/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java File media/base/android/java/src/org/chromium/media/MediaCodecBridge.java (right): https://codereview.chromium.org/215783002/diff/20001/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java#newcode531 media/base/android/java/src/org/chromium/media/MediaCodecBridge.java:531: // TODO(qinmin): return the head position allows us to ...
6 years, 8 months ago (2014-04-01 20:42:34 UTC) #3
qinmin
This CL intends to solve the AV sync issues for both kitkat and JB, so ...
6 years, 8 months ago (2014-04-01 20:53:35 UTC) #4
wolenetz
Looking pretty good. https://codereview.chromium.org/215783002/diff/40001/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java File media/base/android/java/src/org/chromium/media/MediaCodecBridge.java (right): https://codereview.chromium.org/215783002/diff/40001/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java#newcode526 media/base/android/java/src/org/chromium/media/MediaCodecBridge.java:526: private long playOutputBuffer(byte[] buf) { nit: ...
6 years, 8 months ago (2014-04-03 18:14:40 UTC) #5
qinmin
https://codereview.chromium.org/215783002/diff/40001/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java File media/base/android/java/src/org/chromium/media/MediaCodecBridge.java (right): https://codereview.chromium.org/215783002/diff/40001/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java#newcode526 media/base/android/java/src/org/chromium/media/MediaCodecBridge.java:526: private long playOutputBuffer(byte[] buf) { Done. Java doc added. ...
6 years, 8 months ago (2014-04-03 21:59:45 UTC) #6
wolenetz
lgtm % nit. I would like for acolwell@ to also provide CR to at least ...
6 years, 8 months ago (2014-04-04 17:27:42 UTC) #7
qinmin
https://codereview.chromium.org/215783002/diff/60001/media/base/android/media_source_player_unittest.cc File media/base/android/media_source_player_unittest.cc (right): https://codereview.chromium.org/215783002/diff/60001/media/base/android/media_source_player_unittest.cc#newcode2112 media/base/android/media_source_player_unittest.cc:2112: EXPECT_EQ(helper, GetAudioTimestampHelper()); On 2014/04/04 17:27:43, wolenetz wrote: > nit: ...
6 years, 8 months ago (2014-04-04 17:58:18 UTC) #8
qinmin
ping, acolwell@, would you please take a look at this? Thanks
6 years, 8 months ago (2014-04-04 17:58:57 UTC) #9
acolwell GONE FROM CHROMIUM
https://codereview.chromium.org/215783002/diff/80001/media/base/android/media_source_player.cc File media/base/android/media_source_player.cc (right): https://codereview.chromium.org/215783002/diff/80001/media/base/android/media_source_player.cc#newcode493 media/base/android/media_source_player.cc:493: current_presentation_timestamp = new_max_time; It feels like the bulk of ...
6 years, 8 months ago (2014-04-04 19:25:58 UTC) #10
qinmin
https://codereview.chromium.org/215783002/diff/80001/media/base/android/media_source_player.cc File media/base/android/media_source_player.cc (right): https://codereview.chromium.org/215783002/diff/80001/media/base/android/media_source_player.cc#newcode493 media/base/android/media_source_player.cc:493: current_presentation_timestamp = new_max_time; ok, I will move the logic ...
6 years, 8 months ago (2014-04-04 19:42:51 UTC) #11
qinmin
Done, moved the AudioTimestampHelper to audio_decoder_job.cc acolwell@, would you please take a look again?
6 years, 8 months ago (2014-04-04 23:09:03 UTC) #12
qinmin
ping. acolwell@, would you please take another look? On 2014/04/04 23:09:03, qinmin wrote: > Done, ...
6 years, 8 months ago (2014-04-11 17:45:18 UTC) #13
acolwell GONE FROM CHROMIUM
lgtm https://codereview.chromium.org/215783002/diff/140001/media/base/android/audio_decoder_job.cc File media/base/android/audio_decoder_job.cc (right): https://codereview.chromium.org/215783002/diff/140001/media/base/android/audio_decoder_job.cc#newcode86 media/base/android/audio_decoder_job.cc:86: current_presentation_timestamp = kNoTimestamp(); nit: Move this to an ...
6 years, 8 months ago (2014-04-14 16:00:47 UTC) #14
qinmin
https://codereview.chromium.org/215783002/diff/140001/media/base/android/audio_decoder_job.cc File media/base/android/audio_decoder_job.cc (right): https://codereview.chromium.org/215783002/diff/140001/media/base/android/audio_decoder_job.cc#newcode86 media/base/android/audio_decoder_job.cc:86: current_presentation_timestamp = kNoTimestamp(); On 2014/04/14 16:00:47, acolwell wrote: > ...
6 years, 8 months ago (2014-04-14 19:01:58 UTC) #15
qinmin
The CQ bit was checked by qinmin@chromium.org
6 years, 8 months ago (2014-04-14 19:02:03 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/qinmin@chromium.org/215783002/160001
6 years, 8 months ago (2014-04-14 19:03:50 UTC) #17
commit-bot: I haz the power
Change committed as 263754
6 years, 8 months ago (2014-04-15 00:41:36 UTC) #18
horo
6 years, 8 months ago (2014-04-15 05:45:49 UTC) #19
Message was sent while issue was closed.
A revert of this CL has been created in
https://codereview.chromium.org/238053004/ by horo@chromium.org.

The reason for reverting is: Android Tests failed
http://build.chromium.org/p/chromium.linux/builders/Android%20Tests/builds/13105



Note: Google Test filter =
MediaSourcePlayerTest.CurrentTimeUpdatedWhileDecoderStarved
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from MediaSourcePlayerTest
[ RUN      ] MediaSourcePlayerTest.CurrentTimeUpdatedWhileDecoderStarved
../../media/base/android/media_source_player_unittest.cc:2088: Failure
Expected: (current_time.InMillisecondsF()) <
(player_.GetCurrentTime().InMillisecondsF()), actual: 0 vs 0
[  FAILED  ] MediaSourcePlayerTest.CurrentTimeUpdatedWhileDecoderStarved (305
ms)
[----------] 1 test from MediaSourcePlayerTest (305 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (307 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] MediaSourcePlayerTest.CurrentTimeUpdatedWhileDecoderStarved.

Powered by Google App Engine
This is Rietveld 408576698