New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 660942 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 17
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug


Sign in to add a comment

Implement MediaCodecVideoDecoder (AKA AVDAv2)

Project Member Reported by w...@chromium.org, Oct 31 2016

Issue description

We need to refactor AVDA into MCVD, which will implement media::VideoDecoder and be used remotely through the MojoVideoDecoder.
 

Comment 1 by w...@chromium.org, Oct 31 2016

Components: Internals>Media
Project Member

Comment 2 by bugdroid1@chromium.org, Dec 2 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/265d88ba39df12b89f9c9a93aa2297c4adecd94a

commit 265d88ba39df12b89f9c9a93aa2297c4adecd94a
Author: watk <watk@chromium.org>
Date: Fri Dec 02 03:51:04 2016

media: Add MediaCodecVideoDecoder (as a copy of AVDA initially)

This is the first commit in a series to implement MediaCodecVideoDecoder
to deprecate AndroidVideoDecodeAccelerator. In this CL MCVD is just a
copy of AVDA with some automatic renaming. It doesn't build.

BUG= 660942 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2549643002
Cr-Commit-Position: refs/heads/master@{#435847}

[add] https://crrev.com/265d88ba39df12b89f9c9a93aa2297c4adecd94a/media/gpu/android/media_codec_video_decoder.cc
[add] https://crrev.com/265d88ba39df12b89f9c9a93aa2297c4adecd94a/media/gpu/android/media_codec_video_decoder.h

Comment 3 by w...@chromium.org, Dec 2 2016

Blockedon: 670869

Comment 4 by w...@chromium.org, Dec 2 2016

Blockedon: 670871
Project Member

Comment 5 by bugdroid1@chromium.org, Dec 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/10cf4db3bb82ae815eb35c0381ab2994dad2a1fe

commit 10cf4db3bb82ae815eb35c0381ab2994dad2a1fe
Author: watk <watk@chromium.org>
Date: Sat Dec 03 00:25:07 2016

media: Delete VDA specific code from MCVD

This deletes things that are very VDA specific and will not be reusable.

BUG= 660942 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2550523003
Cr-Commit-Position: refs/heads/master@{#436098}

[modify] https://crrev.com/10cf4db3bb82ae815eb35c0381ab2994dad2a1fe/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/10cf4db3bb82ae815eb35c0381ab2994dad2a1fe/media/gpu/android/media_codec_video_decoder.h

Project Member

Comment 6 by bugdroid1@chromium.org, Dec 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0dfa90016056dc7ad38fe179e5f23a0cb57d6cc5

commit 0dfa90016056dc7ad38fe179e5f23a0cb57d6cc5
Author: watk <watk@chromium.org>
Date: Sat Dec 03 01:41:42 2016

media: Convert GetSupportedProfiles to IsConfigSupported in MCVD

Supported profiles will not be used. Support is tested by trying to
initialize the decoder.

BUG= 660942 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2548923002
Cr-Commit-Position: refs/heads/master@{#436135}

[modify] https://crrev.com/0dfa90016056dc7ad38fe179e5f23a0cb57d6cc5/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/0dfa90016056dc7ad38fe179e5f23a0cb57d6cc5/media/gpu/android/media_codec_video_decoder.h

Project Member

Comment 7 by bugdroid1@chromium.org, Dec 6 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8897c835c2c252898b58b479dc6f5a514bd0edfc

commit 8897c835c2c252898b58b479dc6f5a514bd0edfc
Author: watk <watk@chromium.org>
Date: Tue Dec 06 21:25:43 2016

media: Pare MCVD down to a minimal media::VideoDecoder

Originally the plan was to iterate on MCVD by starting with AVDA and
deleting/refactoring, but that didn't turn out well. The diffs were
noisy and it was a lot of work to keep it building. Now we're changing
direction and building MCVD from the ground up, taking pieces of AVDA
where necessary. It builds and comes with a minimal unittest.

BUG= 660942 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2552883003
Cr-Commit-Position: refs/heads/master@{#436733}

[modify] https://crrev.com/8897c835c2c252898b58b479dc6f5a514bd0edfc/media/base/test_helpers.cc
[modify] https://crrev.com/8897c835c2c252898b58b479dc6f5a514bd0edfc/media/base/test_helpers.h
[modify] https://crrev.com/8897c835c2c252898b58b479dc6f5a514bd0edfc/media/gpu/BUILD.gn
[modify] https://crrev.com/8897c835c2c252898b58b479dc6f5a514bd0edfc/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/8897c835c2c252898b58b479dc6f5a514bd0edfc/media/gpu/android/media_codec_video_decoder.h

Project Member

Comment 8 by bugdroid1@chromium.org, Dec 9 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7fa9f4ce28c3fa048620ee419f40dd9c5b10eeda

commit 7fa9f4ce28c3fa048620ee419f40dd9c5b10eeda
Author: watk <watk@chromium.org>
Date: Fri Dec 09 21:35:19 2016

media: Add a unittest for MediaCodecVideoDecoder

BUG= 660942 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2561653002
Cr-Commit-Position: refs/heads/master@{#437663}

[add] https://crrev.com/7fa9f4ce28c3fa048620ee419f40dd9c5b10eeda/media/gpu/android/media_codec_video_decoder_unittest.cc

Project Member

Comment 9 by bugdroid1@chromium.org, May 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/70e667e8760193c544959ef7cd388ccfb5ecb939

commit 70e667e8760193c544959ef7cd388ccfb5ecb939
Author: Chris Watkins <watk@chromium.org>
Date: Mon May 22 19:49:33 2017

media: Implement MediaCodecVideoDecoder initialization

This adds initialization logic to MediaCodecVideoDecoder. Most of it
comes from AVDA with some tweaks. It also includes moving
FakeCodecAllocator to its own file for reuse.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ib835ed7fdc263ef321c264978a6185134501ab87
Reviewed-on: https://chromium-review.googlesource.com/509895
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#473660}
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/BUILD.gn
[add] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android/fake_codec_allocator.cc
[add] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android/fake_codec_allocator.h
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android_video_decode_accelerator.cc
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/android_video_decode_accelerator_unittest.cc
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/avda_codec_allocator.cc
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/avda_codec_allocator.h
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/avda_surface_bundle.cc
[modify] https://crrev.com/70e667e8760193c544959ef7cd388ccfb5ecb939/media/gpu/avda_surface_bundle.h

Project Member

Comment 10 by bugdroid1@chromium.org, May 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3285ffe2d06230a9722894457649e20516fef72f

commit 3285ffe2d06230a9722894457649e20516fef72f
Author: Chris Watkins <watk@chromium.org>
Date: Thu May 25 18:42:16 2017

media: Move WaitForFrameAvailable logic from AVDASharedState to SurfaceTextureGLOwner

Conceptually it makes sense for SurfaceTexture to keep track of incoming
buffers and expose a way to wait for them to be available. This will
also let us share the logic between AVDA and MCVD.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: If08e0236a308c465a52557b69bd31e421405dbd6
Reviewed-on: https://chromium-review.googlesource.com/514210
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#474721}
[modify] https://crrev.com/3285ffe2d06230a9722894457649e20516fef72f/media/gpu/avda_picture_buffer_manager.cc
[modify] https://crrev.com/3285ffe2d06230a9722894457649e20516fef72f/media/gpu/avda_shared_state.cc
[modify] https://crrev.com/3285ffe2d06230a9722894457649e20516fef72f/media/gpu/avda_shared_state.h
[modify] https://crrev.com/3285ffe2d06230a9722894457649e20516fef72f/media/gpu/surface_texture_gl_owner.cc
[modify] https://crrev.com/3285ffe2d06230a9722894457649e20516fef72f/media/gpu/surface_texture_gl_owner.h
[modify] https://crrev.com/3285ffe2d06230a9722894457649e20516fef72f/media/gpu/surface_texture_gl_owner_unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, May 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4a732e3be418d4c3fda70486571f68d24cd3a5ba

commit 4a732e3be418d4c3fda70486571f68d24cd3a5ba
Author: Chris Watkins <watk@chromium.org>
Date: Wed May 31 02:04:46 2017

media: Add CodecWrapper for threadsafe MediaCodec access

MediaCodecVideoDecoder needs to decode using a MediaCodec on the MCVD
thread while dequeued buffers are released back to the codec on the GPU
thread. CodecWrapper supports this use case by vending CodecOutputBuffers
which keep a reference to their backing wrapper, and a unique id so that
CodecWrapper can keep track of which buffers are valid.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I798df44a7639071f9eb3f2803d018ced4b121137
Reviewed-on: https://chromium-review.googlesource.com/517351
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#475740}
[modify] https://crrev.com/4a732e3be418d4c3fda70486571f68d24cd3a5ba/media/gpu/BUILD.gn
[add] https://crrev.com/4a732e3be418d4c3fda70486571f68d24cd3a5ba/media/gpu/android/codec_wrapper.cc
[add] https://crrev.com/4a732e3be418d4c3fda70486571f68d24cd3a5ba/media/gpu/android/codec_wrapper.h
[add] https://crrev.com/4a732e3be418d4c3fda70486571f68d24cd3a5ba/media/gpu/android/codec_wrapper_unittest.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Jun 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/05681d3939d311c090824c901d922f5bdb4df78c

commit 05681d3939d311c090824c901d922f5bdb4df78c
Author: Chris Watkins <watk@chromium.org>
Date: Fri Jun 02 03:00:29 2017

media: Make SurfaceTextureGLOwner mockable and add a mock.

This converts STGLO to be a pure virtual interface so we can mock it.
It will be used in a coming CL.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ief880307a7ea47d9284fdd26f624de6bf39a6c86
Reviewed-on: https://chromium-review.googlesource.com/520662
Reviewed-by: John Bauman <jbauman@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#476537}
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/BUILD.gn
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/android/fake_codec_allocator.h
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/avda_picture_buffer_manager.cc
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/avda_shared_state.h
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/avda_surface_bundle.cc
[add] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/mock_surface_texture_gl_owner.cc
[add] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/mock_surface_texture_gl_owner.h
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/surface_texture_gl_owner.cc
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/surface_texture_gl_owner.h
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/media/gpu/surface_texture_gl_owner_unittest.cc
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/ui/gl/android/surface_texture.cc
[modify] https://crrev.com/05681d3939d311c090824c901d922f5bdb4df78c/ui/gl/android/surface_texture.h

Project Member

Comment 13 by bugdroid1@chromium.org, Jun 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a60f5b103c707c47fb7a51e7a726fcf261f8398f

commit a60f5b103c707c47fb7a51e7a726fcf261f8398f
Author: Chris Watkins <watk@chromium.org>
Date: Fri Jun 02 22:27:57 2017

media: Add CodecImage; a GLImage based on AVDACodecImage

CodecImage is the AVDACodecImage equivalent for MediaCodecVideoDecoder.
The main way in which it's different is that it won't be reused to back
different video frames. This lets us simplify it by relying on two
things: the CodecOutputBuffer backing it won't change, and the surface
backing it won't change.

It also comes with unit tests.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ie04ac81298bf1d2784a17a3f6a4db5ef69a97268
Reviewed-on: https://chromium-review.googlesource.com/522230
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#476818}
[modify] https://crrev.com/a60f5b103c707c47fb7a51e7a726fcf261f8398f/media/gpu/BUILD.gn
[add] https://crrev.com/a60f5b103c707c47fb7a51e7a726fcf261f8398f/media/gpu/android/codec_image.cc
[add] https://crrev.com/a60f5b103c707c47fb7a51e7a726fcf261f8398f/media/gpu/android/codec_image.h
[add] https://crrev.com/a60f5b103c707c47fb7a51e7a726fcf261f8398f/media/gpu/android/codec_image_unittest.cc
[modify] https://crrev.com/a60f5b103c707c47fb7a51e7a726fcf261f8398f/media/gpu/mock_surface_texture_gl_owner.cc
[modify] https://crrev.com/a60f5b103c707c47fb7a51e7a726fcf261f8398f/media/gpu/mock_surface_texture_gl_owner.h

Project Member

Comment 14 by bugdroid1@chromium.org, Jun 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/95467ed227058488e98d7efefcd8c901f07d7d32

commit 95467ed227058488e98d7efefcd8c901f07d7d32
Author: Chris Watkins <watk@chromium.org>
Date: Wed Jun 14 00:22:41 2017

media: Implement MediaCodecVideoDecoder decoder IO

This change adds the basic codec pumping loop to queue input
buffers and dequeue output buffers. It also includes all of
the changes necessary to support unit testing it.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I3bd3b042cfd1fb67953540bc0486a70ac98b7e54
Reviewed-on: https://chromium-review.googlesource.com/511662
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#479223}
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/base/android/mock_android_overlay.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/base/overlay_info.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/base/overlay_info.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/BUILD.gn
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/codec_wrapper.h
[add] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/device_info.cc
[add] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/device_info.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/fake_codec_allocator.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/fake_codec_allocator.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/media_codec_video_decoder_unittest.cc
[add] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/mock_device_info.cc
[add] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android/mock_device_info.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android_video_decode_accelerator.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android_video_decode_accelerator.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/android_video_decode_accelerator_unittest.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/content_video_view_overlay.cc
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/content_video_view_overlay.h
[add] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/fake_android_video_surface_chooser.cc
[add] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/fake_android_video_surface_chooser.h
[modify] https://crrev.com/95467ed227058488e98d7efefcd8c901f07d7d32/media/gpu/gpu_video_decode_accelerator_factory.cc

Project Member

Comment 15 by bugdroid1@chromium.org, Jul 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dc990134c637735f4bb1f66314497d59fa63c97e

commit dc990134c637735f4bb1f66314497d59fa63c97e
Author: Chris Watkins <watk@chromium.org>
Date: Wed Jul 05 22:00:47 2017

media: VideoFrameFactory now keeps its textures alive

Previously VideoFrameFactory would create TextureRefs that were
immediately released. Now it keeps a collection of outstanding refs and
deletes them when the corresponding VideoFrame is deleted, or when
VideoFrameFactory is deleted. If VFF is deleted, outstanding mailboxes
may become unbacked. Solving this case is a work in progress.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Icf99f997553becb36ee4e0fe8a5cac729966cd40
Reviewed-on: https://chromium-review.googlesource.com/550664
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484360}
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/android/video_frame_factory.h
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/android/video_frame_factory_impl.cc
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/android/video_frame_factory_impl.h
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/avda_surface_bundle.cc
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/surface_texture_gl_owner.cc
[modify] https://crrev.com/dc990134c637735f4bb1f66314497d59fa63c97e/media/gpu/surface_texture_gl_owner.h

Project Member

Comment 16 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/15cb078fc40dc91643079380bfad5b5c1ba2a9ea

commit 15cb078fc40dc91643079380bfad5b5c1ba2a9ea
Author: Chris Watkins <watk@chromium.org>
Date: Wed Aug 02 04:08:11 2017

media: Support the creation of MediaCodecVideoDecoders behind a buildflag

Now it's possible to enable MediaCodecVideoDecoder via MojoVideoDecoder
by setting enable_media_codec_video_decoder to true.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ia1d16b20ecb26102e44e18946cb1d8046c4493b2
Reviewed-on: https://chromium-review.googlesource.com/552875
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491263}
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/BUILD.gn
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/codec_image_unittest.cc
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/device_info.h
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/gpu/android/video_frame_factory_impl.cc
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/media_options.gni
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/mojo/clients/mojo_video_decoder.cc
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/mojo/services/BUILD.gn
[modify] https://crrev.com/15cb078fc40dc91643079380bfad5b5c1ba2a9ea/media/mojo/services/gpu_mojo_media_client.cc

Comment 17 by w...@chromium.org, Aug 3 2017

Blockedon: 751926
Project Member

Comment 18 by bugdroid1@chromium.org, Aug 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b7389d11bdd0c4571c191c342c60b4eff7d8b43d

commit b7389d11bdd0c4571c191c342c60b4eff7d8b43d
Author: Chris Watkins <watk@chromium.org>
Date: Fri Aug 04 02:10:36 2017

media: Implement MediaCodecVideoDecoder Reset()

This CL implements Reset() which enables seeking to work as expected.
CodecWrapper also now takes a closure that it will call whenever an
output buffer is released back to the codec to signal that the codec
might now accept more input.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I2b91cffafc6ca4940a7bdc819491359f47b592f0
Reviewed-on: https://chromium-review.googlesource.com/597383
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491919}
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/base/android/mock_media_codec_bridge.cc
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/base/android/mock_media_codec_bridge.h
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/codec_image.cc
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/codec_image_unittest.cc
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/b7389d11bdd0c4571c191c342c60b4eff7d8b43d/media/gpu/android/media_codec_video_decoder_unittest.cc

Comment 19 by w...@chromium.org, Aug 4 2017

Blockedon: 752374
Project Member

Comment 20 by bugdroid1@chromium.org, Aug 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/74520aa158690de556c1a3895f7fffea1b80ef72

commit 74520aa158690de556c1a3895f7fffea1b80ef72
Author: Chris Watkins <watk@chromium.org>
Date: Wed Aug 09 07:04:14 2017

media: Remove timeouts from CodecWrapper's interface

This is a minor cleanup. The timeouts passed to CodecWrapper are always
zero right now, and its interface has diverged enough from
MediaCodecBridge that there's no great reason to keep timeout params.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I07d7e84157c96e08d98bc4b488d2296405fcce99
Reviewed-on: https://chromium-review.googlesource.com/607733
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492876}
[modify] https://crrev.com/74520aa158690de556c1a3895f7fffea1b80ef72/media/gpu/android/codec_image_unittest.cc
[modify] https://crrev.com/74520aa158690de556c1a3895f7fffea1b80ef72/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/74520aa158690de556c1a3895f7fffea1b80ef72/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/74520aa158690de556c1a3895f7fffea1b80ef72/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/74520aa158690de556c1a3895f7fffea1b80ef72/media/gpu/android/media_codec_video_decoder.cc

Project Member

Comment 21 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6e0faa08d306f190f4959c5018582bec971e84e2

commit 6e0faa08d306f190f4959c5018582bec971e84e2
Author: Chris Watkins <watk@chromium.org>
Date: Thu Aug 10 05:41:17 2017

media: Handle Reinitialization in MediaCodecVideoDecoder

Now MCVD handles multiple calls to Initialize() which allows it to
support configuration changes for MSE. Two other important changes are
included in this CL:

1) Previously we were creating and deleting a CodecOutputBuffer for the
the EOS buffer. This resulted in invalidation of all frames preceding
it. Now DequeueOutputBuffer doesn't output a CodecOutputBuffer for EOS.

2) After the codec is drained due to processing an EOS, previously we
would flush it on the next Decode() call. However because flush()
invalidates dequeued buffers this results in us losing frames before
config changes. Now the flush is deferred until all outstanding buffers
are released, and a decode is pending.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I2f6711ff73917b31cf7cf6696c46f1901772b710
Reviewed-on: https://chromium-review.googlesource.com/604634
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493293}
[modify] https://crrev.com/6e0faa08d306f190f4959c5018582bec971e84e2/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/6e0faa08d306f190f4959c5018582bec971e84e2/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/6e0faa08d306f190f4959c5018582bec971e84e2/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/6e0faa08d306f190f4959c5018582bec971e84e2/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/6e0faa08d306f190f4959c5018582bec971e84e2/media/gpu/android/media_codec_video_decoder_unittest.cc

Project Member

Comment 22 by bugdroid1@chromium.org, Aug 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1946aba6c295442fd153f2072573035255dfe2b0

commit 1946aba6c295442fd153f2072573035255dfe2b0
Author: Chris Watkins <watk@chromium.org>
Date: Wed Aug 16 00:50:25 2017

media: MediaCodecVideoDecoder now submits SPS and PPS to MediaCodec

The SPS and PPS are taken from extra_data() and passed to MediaCodec via
the CSD0 and CSD1 fields.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Iee4c609f8770621b63eee214475af2911efbf6df
Reviewed-on: https://chromium-review.googlesource.com/611441
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#494642}
[modify] https://crrev.com/1946aba6c295442fd153f2072573035255dfe2b0/media/base/android/BUILD.gn
[add] https://crrev.com/1946aba6c295442fd153f2072573035255dfe2b0/media/base/android/extract_sps_and_pps.cc
[add] https://crrev.com/1946aba6c295442fd153f2072573035255dfe2b0/media/base/android/extract_sps_and_pps.h
[modify] https://crrev.com/1946aba6c295442fd153f2072573035255dfe2b0/media/filters/gpu_video_decoder.cc
[modify] https://crrev.com/1946aba6c295442fd153f2072573035255dfe2b0/media/gpu/android/media_codec_video_decoder.cc

Project Member

Comment 23 by bugdroid1@chromium.org, Aug 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/da36afe0c8fb8c12ff92ad25bd52bba2d0953af0

commit da36afe0c8fb8c12ff92ad25bd52bba2d0953af0
Author: Chris Watkins <watk@chromium.org>
Date: Tue Aug 22 01:27:48 2017

media: Use GLES2DecoderHelper to create textures in MediaCodecVideoDecoder

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I529c6feed707746f3ce8722f015a7673223ef383
Reviewed-on: https://chromium-review.googlesource.com/622811
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496165}
[modify] https://crrev.com/da36afe0c8fb8c12ff92ad25bd52bba2d0953af0/media/gpu/android/video_frame_factory_impl.cc
[modify] https://crrev.com/da36afe0c8fb8c12ff92ad25bd52bba2d0953af0/media/gpu/android/video_frame_factory_impl.h

Project Member

Comment 24 by bugdroid1@chromium.org, Aug 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ecd490688dd35d8a35481f149139116689097cf1

commit ecd490688dd35d8a35481f149139116689097cf1
Author: Chris Watkins <watk@chromium.org>
Date: Tue Aug 22 02:05:11 2017

media: MediaCodecVideoDecoder no longer outputs old frames after a Reset()

Previously, since MCVD posted frame creation to the GPU thread, but
would finish Reset()s on its thread, it was possible for a frame from
before the Reset() to be output after the reset was finished. This
resulted in broken looping playback if the video renderer received a
frame near the end of the video right after seeking back to 0s.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I9a497561ef96b28bf782e8bd5b38640bfa0b5ed2
Reviewed-on: https://chromium-review.googlesource.com/622460
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496172}
[modify] https://crrev.com/ecd490688dd35d8a35481f149139116689097cf1/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/ecd490688dd35d8a35481f149139116689097cf1/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/ecd490688dd35d8a35481f149139116689097cf1/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/ecd490688dd35d8a35481f149139116689097cf1/media/mojo/services/mojo_video_decoder_service.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Aug 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/062f66ddd7addc0165cea2bbebcd3bb19b44a539

commit 062f66ddd7addc0165cea2bbebcd3bb19b44a539
Author: Chris Watkins <watk@chromium.org>
Date: Wed Aug 30 03:30:23 2017

media: Provide a custom deleter for MediaCodecVideoDecoder to handle its teardown

MediaCodecVideoDecoder needs to handle its own teardown because it might
need to drain its MediaCodec before the destructor runs. Now VideoDecoder
has a std::default_delete specialization with a protected destructor and
private Destroy() method. By default Destroy() just deletes |this| but
Subclasses can override it.

This CL also lets MCVD hold a service_manager::ServiceContextRef so that
it can keep the service thread that it's running on alive until its
teardown completes. 

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I4a6aef70379037588014e609a7ae6516017363c8
Reviewed-on: https://chromium-review.googlesource.com/625551
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#498361}
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/chromecast/media/service/cast_mojo_media_client.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/chromecast/media/service/cast_mojo_media_client.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/base/video_decoder.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/base/video_decoder.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/BUILD.gn
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/DEPS
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/android/video_frame_factory_impl.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/gpu/android/video_frame_factory_impl.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/gpu_mojo_media_client.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/gpu_mojo_media_client.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/media_service.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/mojo_media_client.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/mojo_media_client.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/mojo_video_decoder_service.h
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/test_mojo_media_client.cc
[modify] https://crrev.com/062f66ddd7addc0165cea2bbebcd3bb19b44a539/media/mojo/services/test_mojo_media_client.h

Comment 26 by w...@chromium.org, Aug 31 2017

Blockedon: 760821

Comment 27 by w...@chromium.org, Aug 31 2017

Blockedon: 760822

Comment 28 by w...@chromium.org, Aug 31 2017

Blockedon: 760827
Project Member

Comment 29 by bugdroid1@chromium.org, Aug 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/404e460e465b6658a8b31802ad87a03417cb98e6

commit 404e460e465b6658a8b31802ad87a03417cb98e6
Author: Chris Watkins <watk@chromium.org>
Date: Thu Aug 31 03:16:28 2017

media: MediaCodecVideoDecoder now drains its codec during teardown

Now MCVD will start draining its codec, if necessary, in Destroy() and
delete itself once the drain completes.

This CL includes a refactoring of DestructionObserver to allow setting a default
expectation of destruction, but override it in the tests to not allow destruction.
Now, setting a new expectation cancels the old one. gmock doesn't let you do this.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I299a9a3a95e137cc2e2327b96faddcf46199ec34
Reviewed-on: https://chromium-review.googlesource.com/634787
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#498743}
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/base/android/test_destruction_observable.cc
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/base/android/test_destruction_observable.h
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android/codec_image_unittest.cc
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android/fake_codec_allocator.h
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android_video_decode_accelerator_unittest.cc
[modify] https://crrev.com/404e460e465b6658a8b31802ad87a03417cb98e6/media/gpu/android_video_surface_chooser_impl_unittest.cc

Project Member

Comment 30 by bugdroid1@chromium.org, Sep 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/176e678d515de4c083b577fb6e10b2583fe6cd5c

commit 176e678d515de4c083b577fb6e10b2583fe6cd5c
Author: Chris Watkins <watk@chromium.org>
Date: Mon Sep 04 03:04:18 2017

media: Small cleanups to MediaCodecVideoDecoder

This CL:
 * Adds EnterTerminalState() for handling the common teardown for
   kError and kSurfaceDestroyed. Now we're eagerly releasing the codec
   and surface bundle more often, which can only improve resource
   utilization.
 * Wraps surface_texture_ in a single AVDASurfaceBundle instead of
   wrapping it multiple times. The AVDASurfaceBundle destructor posts
   ReleaseBackBuffers() which we should only call once.
 * Invalidates the AVDACodecAllocatorClient WeakPtr on SurfaceDestroyed
   so that pending codec creations will be canceled automatically. This
   simplifies OnCodecCreated(). Requires a minor change to
   FakeCodecAllocator.
 * Removes base::Optional from incoming_surface_; it's already a pointer.
 * Improves the names of a couple of CodecWrapper functions.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I312e2f561b8f7dc8b1bede066b80674044e8d1ae
Reviewed-on: https://chromium-review.googlesource.com/644655
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499428}
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/fake_codec_allocator.cc
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/fake_codec_allocator.h
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/176e678d515de4c083b577fb6e10b2583fe6cd5c/media/gpu/android/media_codec_video_decoder_unittest.cc

Project Member

Comment 31 by bugdroid1@chromium.org, Sep 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/51301d78b2b873e93121486e16a7bc14f635906d

commit 51301d78b2b873e93121486e16a7bc14f635906d
Author: Chris Watkins <watk@chromium.org>
Date: Thu Sep 07 08:28:33 2017

media: Simplify CodecWrapper's interface; accept DecoderBuffers as input

CodecWrapper and its caller are both simpler if it accepts
DecoderBuffers as inputs. QueueEOS, and QueueSecureInputBuffer are now
gone in favor of a single QueueInputBuffer.

CodecWrapper also now keeps track of whether it still owns a dequeued
input buffer after trying to submit a buffer fails with
MEDIA_CODEC_NO_KEY. It automatically reuses the input buffer for
subsequent inputs.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ie8785721fe93c8ccf46399b587e8de9c2e1b4bdd
Reviewed-on: https://chromium-review.googlesource.com/647266
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500244}
[modify] https://crrev.com/51301d78b2b873e93121486e16a7bc14f635906d/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/51301d78b2b873e93121486e16a7bc14f635906d/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/51301d78b2b873e93121486e16a7bc14f635906d/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/51301d78b2b873e93121486e16a7bc14f635906d/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/51301d78b2b873e93121486e16a7bc14f635906d/media/gpu/android/media_codec_video_decoder.h

Project Member

Comment 32 by bugdroid1@chromium.org, Sep 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f93dd01b4a97eeb653a1301f32e53e1b5d72ce78

commit f93dd01b4a97eeb653a1301f32e53e1b5d72ce78
Author: Chris Watkins <watk@chromium.org>
Date: Fri Sep 08 01:56:13 2017

media: CodecWrapper returns specific status enums to clarify possible results

Previously CodecWrapper returned MediaCodecStatus values which are the
set of all return values from all MediaCodec calls. Now CodecWrapper
translates them into a DequeueStatus and QueueStatus which only contain
the valid values. This makes it more self documenting and easier to verify
that all cases are handled.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Id5d6b89e7f8050588afcc1293e6c30b86a410941
Reviewed-on: https://chromium-review.googlesource.com/654338
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500482}
[modify] https://crrev.com/f93dd01b4a97eeb653a1301f32e53e1b5d72ce78/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/f93dd01b4a97eeb653a1301f32e53e1b5d72ce78/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/f93dd01b4a97eeb653a1301f32e53e1b5d72ce78/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/f93dd01b4a97eeb653a1301f32e53e1b5d72ce78/media/gpu/android/media_codec_video_decoder.cc

Project Member

Comment 33 by bugdroid1@chromium.org, Sep 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ece2fcd68362802273e8038c418e246911ac4aaa

commit ece2fcd68362802273e8038c418e246911ac4aaa
Author: Chris Watkins <watk@chromium.org>
Date: Thu Sep 14 07:08:50 2017

media: Simplify dealing with surfaces in MediaCodecVideoDecoder

Pare down State to four values. Now we only consider the high level
simple and orthogonal states that make sense for MCVD. Other state is
maintained in the other member variables. E.g., waiting for codec is
signified by codec_ being null. In states other than kRunning, codec_ is
definitely null. In state kRunning, codec_ may or may not be null. This
lets us test directly for the state most functions care about: whether
codec_ is null.

Simplify state tracking and ownership of surfaces. Now CodecWrapper owns
a ref to the configured surface. MCVD remembers the last surface choice
by surface_chooser_ and can tell that a surface transition is pending if
the latest choice differs from its codec's one.

Solve an outstanding issue: if SurfaceDestroyed arrives while a codec
creation is pending, immediately switch surfaces.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I1955e4da0b6a71c6c251a0e6c065f40cbbc791fb
Reviewed-on: https://chromium-review.googlesource.com/656920
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501887}
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/android_video_decode_accelerator.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/android_video_decode_accelerator.h
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/avda_codec_allocator.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/avda_codec_allocator.h
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/avda_codec_allocator_unittest.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/codec_image_unittest.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/codec_wrapper.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/codec_wrapper.h
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/codec_wrapper_unittest.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/fake_codec_allocator.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/fake_codec_allocator.h
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/ece2fcd68362802273e8038c418e246911ac4aaa/media/gpu/android/media_codec_video_decoder_unittest.cc

Comment 34 by w...@chromium.org, Sep 15 2017

Blockedon: 737220
Project Member

Comment 35 by bugdroid1@chromium.org, Sep 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3a4a28855383cfab92e01042ef4986b2b76ceb3c

commit 3a4a28855383cfab92e01042ef4986b2b76ceb3c
Author: Chris Watkins <watk@chromium.org>
Date: Fri Sep 15 03:39:52 2017

media: Plumb the AndroidOverlay factory cb to MediaCodecVideoDecoder

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I7d091a3375347ecb5ee661420a724760e56118fa
Reviewed-on: https://chromium-review.googlesource.com/664519
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502151}
[modify] https://crrev.com/3a4a28855383cfab92e01042ef4986b2b76ceb3c/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/3a4a28855383cfab92e01042ef4986b2b76ceb3c/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/3a4a28855383cfab92e01042ef4986b2b76ceb3c/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/3a4a28855383cfab92e01042ef4986b2b76ceb3c/media/gpu/ipc/service/media_gpu_channel_manager.cc
[modify] https://crrev.com/3a4a28855383cfab92e01042ef4986b2b76ceb3c/media/gpu/ipc/service/media_gpu_channel_manager.h
[modify] https://crrev.com/3a4a28855383cfab92e01042ef4986b2b76ceb3c/media/mojo/services/gpu_mojo_media_client.cc

Comment 36 by w...@chromium.org, Sep 15 2017

Blockedon: 765542
Project Member

Comment 37 by bugdroid1@chromium.org, Sep 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/557f84de89444fa5c74f81695b09882b75a03e27

commit 557f84de89444fa5c74f81695b09882b75a03e27
Author: Chris Watkins <watk@chromium.org>
Date: Sat Sep 16 02:31:46 2017

media: Plumb OverlayInfo changes through MojoVideoDecoder to MCVD

Now MediaCodecVideoDecoder gets a callback that it can call during
initialization to request OverlayInfo updates.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ib8ab9026aacafcf489c24ba276d1b6610fc0b331
Reviewed-on: https://chromium-review.googlesource.com/649452
Reviewed-by: Frank Liberato <liberato@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502475}
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/base/decoder_factory.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/base/decoder_factory.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/base/ipc/media_param_traits_macros.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/filters/gpu_video_decoder.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/filters/gpu_video_decoder.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/gpu/ipc/common/media_param_traits_macros.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/clients/mojo_decoder_factory.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/clients/mojo_decoder_factory.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/clients/mojo_video_decoder.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/clients/mojo_video_decoder.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/interfaces/typemaps.gni
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/interfaces/video_decoder.mojom
[add] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/interfaces/video_decoder.typemap
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/BUILD.gn
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/gpu_mojo_media_client.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/gpu_mojo_media_client.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/mojo_media_client.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/mojo_media_client.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/mojo_video_decoder_service.cc
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/mojo/services/mojo_video_decoder_service.h
[modify] https://crrev.com/557f84de89444fa5c74f81695b09882b75a03e27/media/renderers/default_renderer_factory.cc

Project Member

Comment 38 by bugdroid1@chromium.org, Sep 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/671360a7034b6f9462078c1c4dbfb6f5265a1e97

commit 671360a7034b6f9462078c1c4dbfb6f5265a1e97
Author: Chris Watkins <watk@chromium.org>
Date: Tue Sep 19 04:41:18 2017

media: Refactor MediaCodecVideoDecoder ManageTimer into Start/StopTimer()

This is clearer because it avoids the mystery bool param. This CL
also includes some additional unrelated documentation and cleanup.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ic63eec37a30d962fb10d51906e010847c2fb57c2
Reviewed-on: https://chromium-review.googlesource.com/671305
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502781}
[modify] https://crrev.com/671360a7034b6f9462078c1c4dbfb6f5265a1e97/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/671360a7034b6f9462078c1c4dbfb6f5265a1e97/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/671360a7034b6f9462078c1c4dbfb6f5265a1e97/media/gpu/android/video_frame_factory.h

Project Member

Comment 39 by bugdroid1@chromium.org, Sep 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/88a400084974192f17f9125a5b7cf018107bdb33

commit 88a400084974192f17f9125a5b7cf018107bdb33
Author: Chris Watkins <watk@chromium.org>
Date: Thu Sep 28 01:16:42 2017

media: Enable the use of MojoAndroidOverlays from the media service

Previously MojoAndroidOverlays could only be created on the GPU main
thread. Now we can create them on any thread, and specifically the media
service thread, so that MediaCodecVideoDecoder can use them.

Also, they now embed an optional ServiceContextRef so that if they're
used from the media service, they can extend the lifetime of the thread
their mojo interface is bound to. This is necessary because they will
be jointly owned by both MCVD and CodecImages. 

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I6497b81eeb7205a4893ef6c4de4ee5af571ac90a
Reviewed-on: https://chromium-review.googlesource.com/684005
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504854}
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/content/gpu/gpu_child_thread.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/content/gpu/gpu_child_thread.h
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/content/gpu/gpu_service_factory.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/content/gpu/gpu_service_factory.h
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/base/android_overlay_mojo_factory.h
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/gpu/android/android_video_decode_accelerator.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/clients/mojo_android_overlay.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/clients/mojo_android_overlay.h
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/clients/mojo_android_overlay_unittest.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/services/gpu_mojo_media_client.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/services/gpu_mojo_media_client.h
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/services/media_service_factory.cc
[modify] https://crrev.com/88a400084974192f17f9125a5b7cf018107bdb33/media/mojo/services/media_service_factory.h

Project Member

Comment 40 by bugdroid1@chromium.org, Oct 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f

commit ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f
Author: Chris Watkins <watk@chromium.org>
Date: Mon Oct 02 01:13:10 2017

media: Merge AndroidVideoSurfaceChooser's Init and Update

This replaces Initialize() with SetClientCallbacks() and UpdateState().
This lets callers not worry about whether they've called Initialize()
yet. For example, without this MCVD needs a bool to know whether it's
called Initialize() or not.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I0b1b1ba2d958b9f27c9963d2e610bc4697b8495e
Reviewed-on: https://chromium-review.googlesource.com/686334
Reviewed-by: Frank Liberato <liberato@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505527}
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/android_video_decode_accelerator.cc
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/android_video_decode_accelerator_unittest.cc
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/android_video_surface_chooser.h
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/android_video_surface_chooser_impl.cc
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/android_video_surface_chooser_impl.h
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/android_video_surface_chooser_impl_unittest.cc
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/fake_android_video_surface_chooser.cc
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/fake_android_video_surface_chooser.h
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/ae0e76ec2b7c567fb8b090d24d7fe8f6a6c9a80f/media/gpu/android/media_codec_video_decoder_unittest.cc

Project Member

Comment 41 by bugdroid1@chromium.org, Oct 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/791fb7fdf34e1838c0af4771f37bb48243e86e7e

commit 791fb7fdf34e1838c0af4771f37bb48243e86e7e
Author: Chris Watkins <watk@chromium.org>
Date: Tue Oct 03 00:44:39 2017

media: MediaCodecVideoDecoder now requests OverlayInfo updates

If overlays are supported by the device, MCVD now requests OverlayInfo
updates during lazy init and continues initialization when it gets the
first one. If overlays are not supported it skips making any calls to
AndroidVideoSurfaceChooser and uses a surface texture.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I5fb4a008f7bf2932cec96570f6b5782a1d327474
Reviewed-on: https://chromium-review.googlesource.com/689416
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505892}
[modify] https://crrev.com/791fb7fdf34e1838c0af4771f37bb48243e86e7e/media/gpu/android/android_video_surface_chooser.h
[modify] https://crrev.com/791fb7fdf34e1838c0af4771f37bb48243e86e7e/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/791fb7fdf34e1838c0af4771f37bb48243e86e7e/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/791fb7fdf34e1838c0af4771f37bb48243e86e7e/media/gpu/android/media_codec_video_decoder_unittest.cc

Comment 42 by w...@chromium.org, Oct 3 2017

Blockedon: 763929 763930 618368

Comment 43 by w...@chromium.org, Oct 3 2017

Blockedon: 771044
Project Member

Comment 44 by bugdroid1@chromium.org, Oct 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc

commit 0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc
Author: Chris Watkins <watk@chromium.org>
Date: Tue Oct 03 05:39:29 2017

media: Stop calling EOS DecodeCBs after Reset in MediaCodecVideoDecoder

Previously it was possible that eos_decode_cb_ would be run after a
Reset(). Now we guarantee that after a Reset() completes, none of the
VideoFrames from before will be returned, and none of the DecodeCBs 
will be called.

This includes a fix for a bug where we could leak TextureRefs until
MCVD was shut down. We were were dropping VideoFrames without
calling their ReleaseMailboxCBs (we can't add them as VideoFrame
destruction observers due to limitations with MojoVideoDecoder). Now
the release callback is wrapped in a ScopedCallbackRunner to make it
safe.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I03897fcbfff5eb4bd267fc3de1558bd9b5f0a2bd
Reviewed-on: https://chromium-review.googlesource.com/683938
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505958}
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/gpu/android/video_frame_factory.h
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/gpu/android/video_frame_factory_impl.cc
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/gpu/android/video_frame_factory_impl.h
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/mojo/services/gpu_mojo_media_client.cc
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/mojo/services/mojo_media_client.h
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/mojo/services/mojo_video_decoder_service.cc
[modify] https://crrev.com/0dcff6d5a9baf3be4e5ef65e1ee552bd9ba0e6fc/media/mojo/services/mojo_video_decoder_service.h

Comment 45 by w...@chromium.org, Oct 4 2017

Cc: -liber...@chromium.org w...@chromium.org
Components: -Internals>Media Internals>Media>Hardware
Owner: liber...@chromium.org
Project Member

Comment 46 by bugdroid1@chromium.org, Oct 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a0403111d7feec88395dfaa85445d483c2425468

commit a0403111d7feec88395dfaa85445d483c2425468
Author: Chris Watkins <watk@chromium.org>
Date: Wed Oct 04 04:41:43 2017

media: Plumb GpuPreferences to MediaCodecVideoDecoder

It needs to know the value of enable_threaded_texture_mailboxes to
decide whether to disable overlay support.

Also, GpuVideoFrameFactory looks it up through its GpuCommandBufferStub
to decide whether to attach the COPY_REQUIRED metadata flag to frames.

Bug:  660942 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I79f639a68bdeb18faabf2462418a4e62bbdc5136
Reviewed-on: https://chromium-review.googlesource.com/690274
Commit-Queue: Chris Watkins <watk@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506301}
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/content/gpu/gpu_child_thread.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/content/gpu/gpu_service_factory.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/content/gpu/gpu_service_factory.h
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/gpu/android/media_codec_video_decoder.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/gpu/android/media_codec_video_decoder.h
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/gpu/android/media_codec_video_decoder_unittest.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/gpu/android/video_frame_factory_impl.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/mojo/services/gpu_mojo_media_client.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/mojo/services/gpu_mojo_media_client.h
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/mojo/services/media_service_factory.cc
[modify] https://crrev.com/a0403111d7feec88395dfaa85445d483c2425468/media/mojo/services/media_service_factory.h

Blockedon: 781875
Blockedon: 781877
Blocking: 805669
Status: Fixed (was: Started)

Sign in to add a comment