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

Issue 755889 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Feature



Sign in to add a comment

Add Flush() to VEA interface

Project Member Reported by owenlin@chromium.org, Aug 16 2017

Issue description

Just like VDA, we need a way to flush all pending the video frames and a callback to know when all encoded bitstream has been returned.


https://cs.chromium.org/chromium/src/media/video/video_decode_accelerator.h?q=video_decode_accelerator&dr=CSs&l=302

We need the following new interface in VEA

VideoEncoderAccelerator::Flush();

and

VideoEncoderAccelerator::Client::NotifyFlushDone();

 
Is there an Android CTS that tests encoder Flush?
Actually most CTS will send the last input buffer with EOS flag. The issue is we don't know when to mark the output stream as EOS. 

According to an offline discussion with Pawel, Encode() and BitstreamBufferReady() may not be one-to-one mapped. We should have a formal/efficient way to know all pending frames has been processed.
Cc: bbudge@chromium.org emir...@chromium.org kcwu@chromium.org dalecur...@chromium.org posciak@chromium.org joedow@chromium.org
A draft CL is uploaded: https://chromium-review.googlesource.com/616525

cc'ed code owners for suggestions. 

Comment 4 by mcasas@chromium.org, Oct 16 2017

Status: Started (was: Assigned)
owenlin@ can you comment a bit further on  "we need a way to flush..."?
What's the use case and/or client ?
Android frameworks has an EOS flag to request encoders to return all frames. Owen know more detail.
Yes, we need a way to know all the input has been processed by the encoder. (Please also see #2).

As wucheng said, BitstreamBufferReady() is an asynchronous call. How should we know there are no more bitstream buffers and we can mark it as EOS in Android?

Project Member

Comment 7 by bugdroid1@chromium.org, Oct 26 2017

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

commit 84dcd258d0a789dfafebc3ff2fa0a77f10787d27
Author: Owen Lin <owenlin@google.com>
Date: Thu Oct 26 07:09:10 2017

vea: Add Flush() to the VEA interface.

The new method is used to drain the encoder, i.e., make sure all
input video frames have been processed and all bitstreams have been
returned to the client.

BUG= 755889 
TEST=None (only interface change, no implementation yet)

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: I0c00b06ea905ef13628a2b93fb3094c524847c9a
Reviewed-on: https://chromium-review.googlesource.com/616525
Commit-Queue: Owen Lin <owenlin@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Pawel Osciak <posciak@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#511756}
[modify] https://crrev.com/84dcd258d0a789dfafebc3ff2fa0a77f10787d27/media/video/video_encode_accelerator.cc
[modify] https://crrev.com/84dcd258d0a789dfafebc3ff2fa0a77f10787d27/media/video/video_encode_accelerator.h

Project Member

Comment 8 by bugdroid1@chromium.org, Oct 30 2017

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

commit f28762023e8071053bf35d09b42d09c8ad1e5450
Author: Owen Lin <owenlin@google.com>
Date: Mon Oct 30 05:54:38 2017

vaapi_vea: Add Flush() implementation.

BUG= 755889 
TEST=None

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: Ib5a80303c67429b9cc7d69d7e8fd917bc775a903
Reviewed-on: https://chromium-review.googlesource.com/720736
Commit-Queue: Owen Lin <owenlin@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512445}
[modify] https://crrev.com/f28762023e8071053bf35d09b42d09c8ad1e5450/media/gpu/vaapi_video_encode_accelerator.cc
[modify] https://crrev.com/f28762023e8071053bf35d09b42d09c8ad1e5450/media/gpu/vaapi_video_encode_accelerator.h

Project Member

Comment 9 by bugdroid1@chromium.org, Oct 30 2017

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

commit 7c673f92b1caf36bfe219e1f265f677f396a4b14
Author: Owen Lin <owenlin@google.com>
Date: Mon Oct 30 07:13:01 2017

components/arc: Add Flush() to the video_encode_accelerator interface.

BUG= 755889 
TEST=None

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: I1780b6b54fa6de50594c995170724d888abc64ae
Reviewed-on: https://chromium-review.googlesource.com/720737
Commit-Queue: Owen Lin <owenlin@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512450}
[modify] https://crrev.com/7c673f92b1caf36bfe219e1f265f677f396a4b14/chrome/gpu/gpu_arc_video_encode_accelerator.cc
[modify] https://crrev.com/7c673f92b1caf36bfe219e1f265f677f396a4b14/chrome/gpu/gpu_arc_video_encode_accelerator.h
[modify] https://crrev.com/7c673f92b1caf36bfe219e1f265f677f396a4b14/components/arc/common/video_encode_accelerator.mojom

Is this done?
Status: Available (was: Started)
Only implement it on intel platform. Should we track the implementation v4l2_vea with another issue?
Yeah. Please file a new bug for v4l2vea implementation.
Status: Fixed (was: Available)
Thanks. Let's track the flush() in v4l2_vea vai
https://bugs.chromium.org/p/chromium/issues/detail?id=789061

Sign in to add a comment