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

Issue 1128383003: Implementation of MediaCodecPlayer stage 1 (Closed)

Created:
5 years, 7 months ago by Tima Vaisburd
Modified:
5 years, 6 months ago
CC:
chromium-reviews, posciak+watch_chromium.org, avayvod+watch_chromium.org, jam, mcasas+watch_chromium.org, feature-media-reviews_chromium.org, darin-cc_chromium.org, wjia+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Implementation of MediaCodecPlayer stage 1 The CL implements the basic playback with pause/resume till completion only (no seek, dynamic configuration, surface change, encryption). This player uses one long-lived Media thread for the IPC with demuxer and for the player's internal operations. The player starts and stops one audio and one video decoder thread as necessary. The MediaCodec input and output buffers operations (dequeue/enqueue/release) as well as the rendering of the output buffers all happen on the same decoder thread. Closing since this CL as been splitted into 3 smaller ones: https://codereview.chromium.org/1162203009/ https://codereview.chromium.org/1176993005/ https://codereview.chromium.org/1184373005/ BUG=407577

Patch Set 1 #

Total comments: 3

Patch Set 2 : Changed stop procedure, fixed compilation #

Total comments: 30

Patch Set 3 : Addressed Min comments, added DCHECKs for current threads #

Total comments: 27

Patch Set 4 : Removed unneeded changed to MediaPlayerAndroid, style guide compliance #

Total comments: 36

Patch Set 5 : Comments, better Listener callbacks, removed unused includes #

Total comments: 13

Patch Set 6 : Ensure EOS is released last; cleanup #

Patch Set 7 : Moved state machine into MediaCodecPlayer and eliminated the State pattern. #

Patch Set 8 : Removed unused media_codec_player_state.h and .cc #

Total comments: 93

Patch Set 9 : Accept configuration change from decoder, media metadata cache #

Total comments: 8

Patch Set 10 : Addressed some comments #

Total comments: 21

Patch Set 11 : AccessUnitQueue changed to list of chunks, threading cleanup for decoders #

Total comments: 2

Patch Set 12 : Improved state machine diagrams #

Total comments: 15

Patch Set 13 : Added AccessUnitQueue unittests, cleanup per Min comments. #

Patch Set 14 : Added initial unit tests for MediaCodecPlayer #

Patch Set 15 : Restored media_source_player_unittest.cc #

Total comments: 52

Patch Set 16 : Addressed watk@ comments #

Patch Set 17 : AccessUnitQueue::GetInfo() returns result by value #

Total comments: 4
Unified diffs Side-by-side diffs Delta from patch set Stats (+3269 lines, -80 lines) Patch
M content/browser/media/android/browser_media_player_manager.h View 1 2 3 4 5 6 7 8 9 1 chunk +0 lines, -1 line 0 comments Download
M content/browser/media/android/browser_media_player_manager.cc View 1 2 3 4 5 6 7 8 9 10 5 chunks +5 lines, -10 lines 0 comments Download
M media/base/android/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 3 chunks +10 lines, -0 lines 0 comments Download
A media/base/android/access_unit_queue.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +93 lines, -0 lines 0 comments Download
A media/base/android/access_unit_queue.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +151 lines, -0 lines 0 comments Download
A media/base/android/access_unit_queue_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +314 lines, -0 lines 0 comments Download
M media/base/android/demuxer_stream_player_params.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +4 lines, -0 lines 0 comments Download
M media/base/android/demuxer_stream_player_params.cc View 1 2 3 4 5 6 7 8 9 1 chunk +9 lines, -0 lines 0 comments Download
A media/base/android/media_codec_audio_decoder.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +85 lines, -0 lines 0 comments Download
A media/base/android/media_codec_audio_decoder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +213 lines, -0 lines 0 comments Download
A media/base/android/media_codec_decoder.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +223 lines, -0 lines 0 comments Download
A media/base/android/media_codec_decoder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +525 lines, -0 lines 2 comments Download
M media/base/android/media_codec_player.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +248 lines, -9 lines 0 comments Download
M media/base/android/media_codec_player.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5 chunks +529 lines, -54 lines 2 comments Download
A media/base/android/media_codec_player_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +488 lines, -0 lines 0 comments Download
A media/base/android/media_codec_video_decoder.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +95 lines, -0 lines 0 comments Download
A media/base/android/media_codec_video_decoder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +245 lines, -0 lines 0 comments Download
M media/base/android/media_player_android.h View 1 2 3 4 5 6 7 8 9 10 4 chunks +17 lines, -6 lines 0 comments Download
M media/base/android/media_player_android.cc View 1 2 3 4 5 6 7 8 1 chunk +5 lines, -0 lines 0 comments Download
M media/media.gyp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 chunks +10 lines, -0 lines 0 comments Download

Messages

Total messages: 55 (4 generated)
timav
Min, I pulled it my existing implementation here and change the names: Player -> MediaCodecPlayer ...
5 years, 7 months ago (2015-05-11 23:17:40 UTC) #2
timav
Min, this maybe better, I tried to simplify the stop.
5 years, 7 months ago (2015-05-12 02:14:57 UTC) #3
qinmin
Some initial comments https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc File media/base/android/au_queue.cc (right): https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc#newcode10 media/base/android/au_queue.cc:10: //#include "base/tvlog.h" remove unused includes https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc#newcode15 ...
5 years, 7 months ago (2015-05-12 23:58:23 UTC) #4
timav
https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc File media/base/android/au_queue.cc (right): https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc#newcode10 media/base/android/au_queue.cc:10: //#include "base/tvlog.h" On 2015/05/12 23:58:22, qinmin wrote: > remove ...
5 years, 7 months ago (2015-05-13 01:05:18 UTC) #5
Tima Vaisburd
Updated the CL description. Added DCHECKs for what thread the method is executing. https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc File ...
5 years, 7 months ago (2015-05-13 22:51:47 UTC) #6
qinmin
some initial comments https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_audio_decoder.cc File media/base/android/media_codec_audio_decoder.cc (right): https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_audio_decoder.cc#newcode44 media/base/android/media_codec_audio_decoder.cc:44: {} { placed incorrectly https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_audio_decoder.cc#newcode47 media/base/android/media_codec_audio_decoder.cc:47: ...
5 years, 7 months ago (2015-05-13 23:17:32 UTC) #7
Tima Vaisburd
https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_audio_decoder.cc File media/base/android/media_codec_audio_decoder.cc (right): https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_audio_decoder.cc#newcode44 media/base/android/media_codec_audio_decoder.cc:44: {} On 2015/05/13 23:17:31, qinmin wrote: > { placed ...
5 years, 7 months ago (2015-05-14 00:15:00 UTC) #8
qinmin
+wolenetz https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/40001/media/base/android/media_codec_player.cc#newcode354 media/base/android/media_codec_player.cc:354: &MediaPlayerAndroid::DetachListener, weak_ptr_for_ui_thread())); On 2015/05/14 00:14:59, Tima Vaisburd wrote: ...
5 years, 7 months ago (2015-05-14 17:54:08 UTC) #10
qinmin
https://codereview.chromium.org/1128383003/diff/60001/media/base/android/access_unit_queue.cc File media/base/android/access_unit_queue.cc (right): https://codereview.chromium.org/1128383003/diff/60001/media/base/android/access_unit_queue.cc#newcode6 media/base/android/access_unit_queue.cc:6: remove empty line https://codereview.chromium.org/1128383003/diff/60001/media/base/android/access_unit_queue.cc#newcode10 media/base/android/access_unit_queue.cc:10: //#include "base/tvlog.h" remove unused ...
5 years, 7 months ago (2015-05-14 19:52:58 UTC) #11
Tima Vaisburd
In addition to inline comments, I changed the semantic of AccessQueue::GetInfo() slighly: only one Info ...
5 years, 7 months ago (2015-05-15 00:12:40 UTC) #12
qinmin
https://codereview.chromium.org/1128383003/diff/60001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/60001/media/base/android/media_codec_player.cc#newcode354 media/base/android/media_codec_player.cc:354: &MediaPlayerAndroid::DetachListener, WeakPtrForUIThread())); On 2015/05/15 00:12:39, Tima Vaisburd wrote: > ...
5 years, 7 months ago (2015-05-15 01:14:14 UTC) #13
Tima Vaisburd
On 2015/05/15 01:14:14, qinmin wrote: > https://codereview.chromium.org/1128383003/diff/60001/media/base/android/media_codec_player.cc > File media/base/android/media_codec_player.cc (right): > > https://codereview.chromium.org/1128383003/diff/60001/media/base/android/media_codec_player.cc#newcode354 > ...
5 years, 7 months ago (2015-05-15 17:28:57 UTC) #14
qinmin
On 2015/05/15 17:28:57, Tima Vaisburd wrote: > On 2015/05/15 01:14:14, qinmin wrote: > > > ...
5 years, 7 months ago (2015-05-15 17:54:15 UTC) #15
Tima Vaisburd
On 2015/05/14 19:52:58, qinmin wrote: > https://codereview.chromium.org/1128383003/diff/60001/media/base/android/access_unit_queue.cc > File media/base/android/access_unit_queue.cc (right): > > https://codereview.chromium.org/1128383003/diff/60001/media/base/android/access_unit_queue.cc#newcode6 > ...
5 years, 7 months ago (2015-05-18 17:43:37 UTC) #16
qinmin
On 2015/05/18 17:43:37, Tima Vaisburd wrote: > On 2015/05/14 19:52:58, qinmin wrote: > > > ...
5 years, 7 months ago (2015-05-19 00:08:26 UTC) #17
Tima Vaisburd
On 2015/05/19 00:08:26, qinmin wrote: > On 2015/05/18 17:43:37, Tima Vaisburd wrote: > > On ...
5 years, 7 months ago (2015-05-19 00:28:23 UTC) #18
qinmin
https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_audio_decoder.cc File media/base/android/media_codec_audio_decoder.cc (right): https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_audio_decoder.cc#newcode144 media/base/android/media_codec_audio_decoder.cc:144: new AudioTimestampHelper(configs_.audio_sampling_rate)); output sampling rate may not equal to ...
5 years, 7 months ago (2015-05-19 19:26:26 UTC) #19
wolenetz
First few comments. I'll continue CR of the player and decoder files next. https://codereview.chromium.org/1128383003/diff/20001/media/base/android/au_queue.cc File ...
5 years, 7 months ago (2015-05-19 21:58:37 UTC) #20
wolenetz
Some further comments. I haven't CR'ed the decoder files. Please add some unit tests. Also, ...
5 years, 7 months ago (2015-05-19 23:05:23 UTC) #22
Tima Vaisburd
Min, the time propagation from decoder is not moved to media thread (yet). I'd like ...
5 years, 7 months ago (2015-05-20 05:19:59 UTC) #23
qinmin
https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_player.cc#newcode346 media/base/android/media_codec_player.cc:346: SetState(STATE_PLAYING); On 2015/05/20 05:19:58, Tima Vaisburd wrote: > On ...
5 years, 7 months ago (2015-05-20 15:39:25 UTC) #24
qinmin
https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_player.cc#newcode608 media/base/android/media_codec_player.cc:608: request_resources_cb_)); On 2015/05/20 05:19:58, Tima Vaisburd wrote: > On ...
5 years, 7 months ago (2015-05-20 15:48:17 UTC) #25
Tima Vaisburd
https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/140001/media/base/android/media_codec_player.cc#newcode346 media/base/android/media_codec_player.cc:346: SetState(STATE_PLAYING); On 2015/05/20 15:39:25, qinmin wrote: > On 2015/05/20 ...
5 years, 7 months ago (2015-05-20 17:34:56 UTC) #26
wolenetz
https://codereview.chromium.org/1128383003/diff/160001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/160001/media/base/android/media_codec_player.cc#newcode417 media/base/android/media_codec_player.cc:417: // 3. DestroySelf arrives, we delete the player and ...
5 years, 7 months ago (2015-05-20 18:20:04 UTC) #27
chromium-reviews
Matthew, all your (and Min!) comments are thoroughly considered, I'm Android sheriff today and tomorrow, ...
5 years, 7 months ago (2015-05-20 18:25:15 UTC) #28
Tima Vaisburd
Hi, I decided to release the intermediate state today in case you would get a ...
5 years, 7 months ago (2015-05-22 22:48:55 UTC) #29
Tima Vaisburd
https://codereview.chromium.org/1128383003/diff/140001/media/base/android/access_unit_queue.h File media/base/android/access_unit_queue.h (right): https://codereview.chromium.org/1128383003/diff/140001/media/base/android/access_unit_queue.h#newcode23 media/base/android/access_unit_queue.h:23: // Information about the queue state and it's front ...
5 years, 7 months ago (2015-05-22 23:37:52 UTC) #30
qinmin
https://codereview.chromium.org/1128383003/diff/80001/media/base/android/media_codec_audio_decoder.cc File media/base/android/media_codec_audio_decoder.cc (right): https://codereview.chromium.org/1128383003/diff/80001/media/base/android/media_codec_audio_decoder.cc#newcode9 media/base/android/media_codec_audio_decoder.cc:9: remove extra line https://codereview.chromium.org/1128383003/diff/80001/media/base/android/media_codec_audio_decoder.h File media/base/android/media_codec_audio_decoder.h (right): https://codereview.chromium.org/1128383003/diff/80001/media/base/android/media_codec_audio_decoder.h#newcode27 media/base/android/media_codec_audio_decoder.h:27: ...
5 years, 7 months ago (2015-05-26 00:49:20 UTC) #31
Tima Vaisburd
I tried to address all Min comments and most Matthew comments with the exception of ...
5 years, 7 months ago (2015-05-28 02:00:35 UTC) #32
Tima Vaisburd
With Patch Set 12 I tried to address all your comments except for unit tests, ...
5 years, 6 months ago (2015-05-28 19:44:31 UTC) #33
wolenetz
On 2015/05/28 19:44:31, Tima Vaisburd wrote: > With Patch Set 12 I tried to address ...
5 years, 6 months ago (2015-05-28 20:21:32 UTC) #34
chromium-reviews
Got it, will do. On Thu, May 28, 2015 at 1:21 PM, <wolenetz@chromium.org> wrote: > ...
5 years, 6 months ago (2015-05-28 21:04:05 UTC) #35
qinmin
https://codereview.chromium.org/1128383003/diff/180001/media/base/android/media_codec_player.cc File media/base/android/media_codec_player.cc (right): https://codereview.chromium.org/1128383003/diff/180001/media/base/android/media_codec_player.cc#newcode107 media/base/android/media_codec_player.cc:107: interpolator_.SetUpperBound(base::TimeDelta()); On 2015/05/28 02:00:34, Tima Vaisburd wrote: > On ...
5 years, 6 months ago (2015-05-31 20:19:13 UTC) #36
Tima Vaisburd
Publishing AccessUnitQueue tests, other tests are not done yet. https://codereview.chromium.org/1128383003/diff/200001/media/base/android/access_unit_queue.cc File media/base/android/access_unit_queue.cc (right): https://codereview.chromium.org/1128383003/diff/200001/media/base/android/access_unit_queue.cc#newcode31 media/base/android/access_unit_queue.cc:31: ...
5 years, 6 months ago (2015-06-01 18:56:53 UTC) #37
Tima Vaisburd
Added initial unit tests to the player as a whole. Please take another look. https://codereview.chromium.org/1128383003/diff/220001/media/base/android/media_codec_player.h ...
5 years, 6 months ago (2015-06-04 00:46:37 UTC) #38
watk
Review still in progress! I thought I'd send these minor comments in case you wanted ...
5 years, 6 months ago (2015-06-04 20:56:44 UTC) #39
watk
Some more minor comments. I'm still wrapping my head around the architecture so I will ...
5 years, 6 months ago (2015-06-05 01:00:33 UTC) #40
Tima Vaisburd
https://codereview.chromium.org/1128383003/diff/280001/media/base/android/access_unit_queue.cc File media/base/android/access_unit_queue.cc (right): https://codereview.chromium.org/1128383003/diff/280001/media/base/android/access_unit_queue.cc#newcode61 media/base/android/access_unit_queue.cc:61: --current_chunk_; On 2015/06/04 20:56:43, watk wrote: > It seems ...
5 years, 6 months ago (2015-06-05 04:17:48 UTC) #41
watk
Looks good Tima! I wasn't able to understand it all as well as I'd hoped, ...
5 years, 6 months ago (2015-06-05 20:13:22 UTC) #42
wolenetz
On 2015/06/05 20:13:22, watk wrote: > Looks good Tima! I wasn't able to understand it ...
5 years, 6 months ago (2015-06-05 20:39:13 UTC) #43
Tima Vaisburd
On 2015/06/05 20:39:13, wolenetz wrote: > On 2015/06/05 20:13:22, watk wrote: > > Looks good ...
5 years, 6 months ago (2015-06-05 21:05:15 UTC) #44
Tima Vaisburd
https://codereview.chromium.org/1128383003/diff/280001/media/base/android/access_unit_queue.cc File media/base/android/access_unit_queue.cc (right): https://codereview.chromium.org/1128383003/diff/280001/media/base/android/access_unit_queue.cc#newcode61 media/base/android/access_unit_queue.cc:61: --current_chunk_; On 2015/06/05 20:13:22, watk wrote: > On 2015/06/05 ...
5 years, 6 months ago (2015-06-05 22:09:46 UTC) #45
Tima Vaisburd
> Please consider finding ways of breaking it down into > smaller chunks to land. ...
5 years, 6 months ago (2015-06-05 23:26:09 UTC) #46
wolenetz
On 2015/06/05 23:26:09, Tima Vaisburd wrote: > > Please consider finding ways of breaking it ...
5 years, 6 months ago (2015-06-08 17:33:26 UTC) #47
wolenetz
On 2015/06/05 23:26:09, Tima Vaisburd wrote: > > Please consider finding ways of breaking it ...
5 years, 6 months ago (2015-06-08 17:33:31 UTC) #48
Tima Vaisburd
> Yes, conceptually, splitting off the decoder would also elicit places where it > might ...
5 years, 6 months ago (2015-06-08 17:38:56 UTC) #49
wolenetz
On 2015/06/08 17:38:56, Tima Vaisburd wrote: > > Yes, conceptually, splitting off the decoder would ...
5 years, 6 months ago (2015-06-08 21:38:08 UTC) #50
liberato (no reviews please)
watk@ pointed me at this CL. just a few minor comments. looks really nice. -fl ...
5 years, 6 months ago (2015-06-09 15:44:31 UTC) #52
Tima Vaisburd
https://codereview.chromium.org/1128383003/diff/320001/media/base/android/media_codec_decoder.cc File media/base/android/media_codec_decoder.cc (right): https://codereview.chromium.org/1128383003/diff/320001/media/base/android/media_codec_decoder.cc#newcode345 media/base/android/media_codec_decoder.cc:345: decoder_thread_.task_runner()->PostDelayedTask( On 2015/06/09 15:44:30, liberato wrote: > alternatively, could ...
5 years, 6 months ago (2015-06-09 17:38:27 UTC) #53
wolenetz
timav@: Should this CL be closed since it's been broken into multiple other pieces, of ...
5 years, 6 months ago (2015-06-22 22:03:55 UTC) #54
Tima Vaisburd
5 years, 6 months ago (2015-06-23 22:51:03 UTC) #55
On 2015/06/22 22:03:55, wolenetz wrote:
> timav@: Should this CL be closed since it's been broken into multiple other
> pieces, of which at least one has already landed?

Closing this CL since it has been splitted into 3 smaller ones:

https://codereview.chromium.org/1162203009/
https://codereview.chromium.org/1176993005/
https://codereview.chromium.org/1184373005/

Powered by Google App Engine
This is Rietveld 408576698