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

Issue 1287423004: MediaCodecPlayer implementation (stage 5 - reconfiguration) (Closed)

Created:
5 years, 4 months ago by Tima Vaisburd
Modified:
5 years, 3 months ago
CC:
chromium-reviews, posciak+watch_chromium.org, avayvod+watch_chromium.org, mcasas+watch_chromium.org, feature-media-reviews_chromium.org, wjia+watch_chromium.org, mlamouri+watch-media_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@mtplayer-cleanuptest
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

MediaCodecPlayer implementation (stage 5 - reconfiguration) This CL addresses a simple case when reconfiguration does not interfere with prerolling or simultaneous reconfig on another stream. When decoder detects that reconfiguration is required, it enqueues EOS to drain itself. After the drain is completed the decoder releases the media codec and posts notification to the player. The release of the media codec marks that this decoder would need preroll. Upon receiving the notificaton the player requests to stop another stream and also marks it for preroll. The player also sets the pending start. After the stop is completed the player will restart, recreating the deleted MediaCodec and performing the preroll. BUG=407577 Committed: https://crrev.com/39392412c833b080409464a2d875ccfcfeb23b5c Cr-Commit-Position: refs/heads/master@{#346276}

Patch Set 1 #

Patch Set 2 : Request to stop other stream as soon as we queued EOS for draining, added first player unit test #

Patch Set 3 : Notified another stream after the drain completed; emulated reconfig #

Total comments: 3

Patch Set 4 : Deleted config change emulation #

Patch Set 5 : Deleted better #

Total comments: 4

Patch Set 6 : Fixed AccessUnitQueue, added audio reconfigure unit test #

Patch Set 7 : Rebased wrt "increase preroll precision" CL #

Patch Set 8 : Avoid potential frame skipping after decoder drain with a new prerolling mode #

Total comments: 15

Patch Set 9 : Better explanation of the new preroll mode, added unit test for video only #

Patch Set 10 : Rebased, removed the wait and check for prerolling in the tests #

Total comments: 2

Patch Set 11 : Made a helper method for advancing AU queue, report starvation if cannot advance whether we drain d… #

Total comments: 6

Patch Set 12 : Fixed AdvanceAccessUnitQueue() #

Unified diffs Side-by-side diffs Delta from patch set Stats (+761 lines, -117 lines) Patch
M media/base/android/access_unit_queue.h View 1 2 3 4 5 6 7 8 2 chunks +8 lines, -3 lines 0 comments Download
M media/base/android/access_unit_queue.cc View 1 2 3 4 5 2 chunks +19 lines, -7 lines 0 comments Download
M media/base/android/demuxer_stream_player_params.h View 1 1 chunk +3 lines, -0 lines 0 comments Download
M media/base/android/demuxer_stream_player_params.cc View 1 2 chunks +22 lines, -0 lines 0 comments Download
M media/base/android/media_codec_audio_decoder.h View 1 2 3 4 5 2 chunks +2 lines, -2 lines 0 comments Download
M media/base/android/media_codec_audio_decoder.cc View 1 2 3 4 5 6 7 6 chunks +17 lines, -12 lines 0 comments Download
M media/base/android/media_codec_decoder.h View 1 2 3 4 5 6 7 8 9 10 11 chunks +45 lines, -6 lines 0 comments Download
M media/base/android/media_codec_decoder.cc View 1 2 3 4 5 6 7 8 9 10 11 16 chunks +138 lines, -56 lines 0 comments Download
M media/base/android/media_codec_decoder_unittest.cc View 1 2 3 4 5 6 5 chunks +65 lines, -1 line 0 comments Download
M media/base/android/media_codec_player.h View 1 2 3 4 5 6 3 chunks +7 lines, -1 line 0 comments Download
M media/base/android/media_codec_player.cc View 1 2 3 4 5 6 7 8 9 5 chunks +73 lines, -5 lines 0 comments Download
M media/base/android/media_codec_player_unittest.cc View 1 2 3 4 5 6 7 8 9 7 chunks +269 lines, -14 lines 0 comments Download
M media/base/android/media_codec_video_decoder.h View 1 2 3 4 5 2 chunks +2 lines, -2 lines 0 comments Download
M media/base/android/media_codec_video_decoder.cc View 1 2 3 4 5 6 7 5 chunks +13 lines, -8 lines 0 comments Download
M media/base/android/test_data_factory.h View 1 2 3 4 5 3 chunks +21 lines, -0 lines 0 comments Download
M media/base/android/test_data_factory.cc View 1 2 3 4 5 5 chunks +57 lines, -0 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 33 (4 generated)
Tima Vaisburd
Not tested yet. No real unit tests as well.
5 years, 4 months ago (2015-08-13 23:18:46 UTC) #2
Tima Vaisburd
I restored the original place where I post OnDecoderDrained callback. After that as far as ...
5 years, 4 months ago (2015-08-20 01:29:29 UTC) #3
qinmin
https://codereview.chromium.org/1287423004/diff/40001/media/base/android/access_unit_queue.h File media/base/android/access_unit_queue.h (right): https://codereview.chromium.org/1287423004/diff/40001/media/base/android/access_unit_queue.h#newcode73 media/base/android/access_unit_queue.h:73: // Request to emulate config changes for some key ...
5 years, 4 months ago (2015-08-20 19:41:25 UTC) #4
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/40001/media/base/android/media_codec_video_decoder.cc File media/base/android/media_codec_video_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/40001/media/base/android/media_codec_video_decoder.cc#newcode39 media/base/android/media_codec_video_decoder.cc:39: // Generate |kConfigChanged| before every key frame On 2015/08/20 ...
5 years, 4 months ago (2015-08-20 20:05:22 UTC) #5
Tima Vaisburd
On 2015/08/20 20:05:22, Tima Vaisburd wrote: > https://codereview.chromium.org/1287423004/diff/40001/media/base/android/media_codec_video_decoder.cc > File media/base/android/media_codec_video_decoder.cc (right): > > https://codereview.chromium.org/1287423004/diff/40001/media/base/android/media_codec_video_decoder.cc#newcode39 ...
5 years, 4 months ago (2015-08-20 20:36:21 UTC) #6
qinmin
https://codereview.chromium.org/1287423004/diff/80001/media/base/android/access_unit_queue.cc File media/base/android/access_unit_queue.cc (right): https://codereview.chromium.org/1287423004/diff/80001/media/base/android/access_unit_queue.cc#newcode197 media/base/android/access_unit_queue.cc:197: DCHECK((*chunk)->demuxer_configs.size() == 1); doesn't this impacts GetInfo() call above? ...
5 years, 4 months ago (2015-08-21 18:37:53 UTC) #7
Tima Vaisburd
I ran the tests on two devices, Nexus 4 (Android 4.4) and Nexus 5 (Android ...
5 years, 3 months ago (2015-08-25 22:57:30 UTC) #8
Tima Vaisburd
Rebased
5 years, 3 months ago (2015-08-26 22:16:35 UTC) #9
Tima Vaisburd
The latest patch set follows Min's idea to have zero preroll timestamp after the decoder ...
5 years, 3 months ago (2015-08-27 19:04:51 UTC) #10
Tima Vaisburd
5 years, 3 months ago (2015-08-27 19:05:12 UTC) #12
qinmin
lgtm % comments https://codereview.chromium.org/1287423004/diff/140001/media/base/android/access_unit_queue.h File media/base/android/access_unit_queue.h (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/access_unit_queue.h#newcode81 media/base/android/access_unit_queue.h:81: // Returns the total number of ...
5 years, 3 months ago (2015-08-27 19:38:42 UTC) #13
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/140001/media/base/android/access_unit_queue.h File media/base/android/access_unit_queue.h (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/access_unit_queue.h#newcode81 media/base/android/access_unit_queue.h:81: // Returns the total number of access (total_length) and ...
5 years, 3 months ago (2015-08-27 20:39:47 UTC) #14
liberato (no reviews please)
still getting my head wrapped around this. https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc#newcode273 media/base/android/media_codec_decoder.cc:273: preroll_timestamp_ = ...
5 years, 3 months ago (2015-08-27 20:42:27 UTC) #15
liberato (no reviews please)
still getting my head wrapped around this.
5 years, 3 months ago (2015-08-27 20:42:27 UTC) #16
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc#newcode273 media/base/android/media_codec_decoder.cc:273: preroll_timestamp_ = (preroll_mode_ == kPrerollTillPTS) ? preroll_timestamp On 2015/08/27 ...
5 years, 3 months ago (2015-08-27 22:04:19 UTC) #17
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc#newcode273 media/base/android/media_codec_decoder.cc:273: preroll_timestamp_ = (preroll_mode_ == kPrerollTillPTS) ? preroll_timestamp On 2015/08/27 ...
5 years, 3 months ago (2015-08-27 22:13:11 UTC) #18
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_player_unittest.cc File media/base/android/media_codec_player_unittest.cc (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_player_unittest.cc#newcode1759 media/base/android/media_codec_player_unittest.cc:1759: WaitForDelay(base::TimeDelta::FromMilliseconds(100)); On 2015/08/27 22:04:19, Tima Vaisburd wrote: > On ...
5 years, 3 months ago (2015-08-28 00:16:49 UTC) #19
liberato (no reviews please)
thanks for clarifying all of that. i'd like to take one more pass at it ...
5 years, 3 months ago (2015-08-28 15:21:42 UTC) #20
Tima Vaisburd
> the "advance past config AU" logic is bothering me, but > it's not quite ...
5 years, 3 months ago (2015-08-28 18:31:09 UTC) #21
Tima Vaisburd
> --------------------------------------------------------- > | data | data | configs | data (key frame) | data ...
5 years, 3 months ago (2015-08-28 18:33:31 UTC) #22
liberato (no reviews please)
On 2015/08/28 18:33:31, Tima Vaisburd wrote: > > --------------------------------------------------------- > > | data | data ...
5 years, 3 months ago (2015-08-28 18:55:55 UTC) #23
Tima Vaisburd
On 2015/08/28 18:55:55, liberato wrote: > On 2015/08/28 18:33:31, Tima Vaisburd wrote: > > > ...
5 years, 3 months ago (2015-08-28 19:04:20 UTC) #24
liberato (no reviews please)
On 2015/08/28 19:04:20, Tima Vaisburd wrote: > On 2015/08/28 18:55:55, liberato wrote: > > On ...
5 years, 3 months ago (2015-08-28 20:07:53 UTC) #25
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/140001/media/base/android/media_codec_decoder.cc#newcode630 media/base/android/media_codec_decoder.cc:630: AccessUnitQueue::Info au_info; On 2015/08/28 15:21:42, liberato wrote: > this ...
5 years, 3 months ago (2015-08-28 21:26:23 UTC) #26
liberato (no reviews please)
still looks good % nits. https://codereview.chromium.org/1287423004/diff/200001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/200001/media/base/android/media_codec_decoder.cc#newcode636 media/base/android/media_codec_decoder.cc:636: << ": starvation detected"; ...
5 years, 3 months ago (2015-08-28 21:42:47 UTC) #27
Tima Vaisburd
https://codereview.chromium.org/1287423004/diff/200001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1287423004/diff/200001/media/base/android/media_codec_decoder.cc#newcode636 media/base/android/media_codec_decoder.cc:636: << ": starvation detected"; On 2015/08/28 21:42:47, liberato wrote: ...
5 years, 3 months ago (2015-08-28 22:28:55 UTC) #28
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1287423004/220001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1287423004/220001
5 years, 3 months ago (2015-08-28 22:34:37 UTC) #31
commit-bot: I haz the power
Committed patchset #12 (id:220001)
5 years, 3 months ago (2015-08-28 23:51:12 UTC) #32
commit-bot: I haz the power
5 years, 3 months ago (2015-08-28 23:51:54 UTC) #33
Message was sent while issue was closed.
Patchset 12 (id:??) landed as
https://crrev.com/39392412c833b080409464a2d875ccfcfeb23b5c
Cr-Commit-Position: refs/heads/master@{#346276}

Powered by Google App Engine
This is Rietveld 408576698