|
|
Descriptionmedia: AVDA now doesn't queue EOS for a flush if the codec is empty
Apparently some MediaCodecs consider it an error to receive an EOS
buffer as their first input. So now we skip queueing the EOS if there
are no pending buffers in the decoder and no pending inputs.
BUG=672268
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
Committed: https://crrev.com/89afd26f42c7a417841e1657499f5216262906d2
Cr-Commit-Position: refs/heads/master@{#437436}
Patch Set 1 #
Total comments: 4
Patch Set 2 : Fix a bug #
Total comments: 5
Patch Set 3 : braces #
Messages
Total messages: 38 (25 generated)
Description was changed from ========== media: AVDA now doesn't queue EOS for a flush if the codec is empty Apparently some MediaCodecs consider it an error to receive an EOS buffer as their first input. So now we skip queueing the EOS if there are no pending buffers in the decoder and no pending inputs. BUG=672268 ========== to ========== media: AVDA now doesn't queue EOS for a flush if the codec is empty Apparently some MediaCodecs consider it an error to receive an EOS buffer as their first input. So now we skip queueing the EOS if there are no pending buffers in the decoder and no pending inputs. BUG=672268 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 ==========
The CQ bit was checked by watk@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
watk@chromium.org changed reviewers: + dalecurtis@chromium.org
https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... File media/gpu/android_video_decode_accelerator.cc (left): https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... media/gpu/android_video_decode_accelerator.cc:868: if (state_ == SURFACE_DESTROYED || defer_surface_creation_) These both imply media_codec == nullptr so I used that directly below.
lgtm https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... File media/gpu/android_video_decode_accelerator.cc (right): https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... media/gpu/android_video_decode_accelerator.cc:969: // reset because MediaCodec might hang in release() or flush() if we don't. Comment is a bit misleading, code skips drain if there's nothing in it even for vp8. https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... media/gpu/android_video_decode_accelerator.cc:971: if (!media_codec_ || (pending_bitstream_records_.empty() && Maybe clarify that in the case of Reset() pending bitstream records is already empty by this point?
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... File media/gpu/android_video_decode_accelerator.cc (right): https://codereview.chromium.org/2563533002/diff/1/media/gpu/android_video_dec... media/gpu/android_video_decode_accelerator.cc:1125: while (!pending_bitstream_records_.empty()) Because I was curious and have been benchmarking too many things lately, on my z620: std::queue<int>().swap(queue); ~50 microseconds for 100000 objects versus ~100 microseconds for the while() pop version. Just as an FYI in case it ever matters (it certainly doesn't here).
The CQ bit was checked by watk@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
PTAL https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... File media/gpu/android_video_decode_accelerator.cc (right): https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... media/gpu/android_video_decode_accelerator.cc:1032: !media_codec_) This was caught by the unittest!! yay for CQ tests. Previously when we skipped the drain for flush and destroy we never called ResetCodecState. Now the destruction path always calls ResetCodecState. I don't know if this is ideal, but we have the waiting for codec state as well. https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... media/gpu/android_video_decode_accelerator.cc:1130: std::queue<BitstreamRecord>().swap(pending_bitstream_records_); I actually really disliked the pop() method anyway, so changing it now :)
The CQ bit was checked by watk@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: android_n5x_swarming_rel on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_n5x_...)
The CQ bit was checked by watk@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
lgtm https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... File media/gpu/android_video_decode_accelerator.cc (right): https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... media/gpu/android_video_decode_accelerator.cc:1032: !media_codec_) On 2016/12/08 at 02:29:44, watk wrote: > This was caught by the unittest!! yay for CQ tests. > > Previously when we skipped the drain for flush and destroy we never called ResetCodecState. Now the destruction path always calls ResetCodecState. I don't know if this is ideal, but we have the waiting for codec state as well. Multiline if needs {}
The CQ bit was checked by watk@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from dalecurtis@chromium.org Link to the patchset: https://codereview.chromium.org/2563533002/#ps40001 (title: "braces")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: android_n5x_swarming_rel on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_n5x_...)
tsunghung@chromium.org changed reviewers: + tsunghung@chromium.org
https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... File media/gpu/android_video_decode_accelerator.cc (right): https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... media/gpu/android_video_decode_accelerator.cc:1005: switch (*drain_type_) { enumeration value 'DRAIN_TYPE_NONE' not handled in switch
https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... File media/gpu/android_video_decode_accelerator.cc (right): https://codereview.chromium.org/2563533002/diff/20001/media/gpu/android_video... media/gpu/android_video_decode_accelerator.cc:1005: switch (*drain_type_) { On 2016/12/08 21:27:02, AndyWu wrote: > enumeration value 'DRAIN_TYPE_NONE' not handled in switch NONE was removed from the enum and is now represented by an optional. Was this a compiler warning somehow?
> NONE was removed from the enum and is now represented by an optional. Was this a > compiler warning somehow? Oh, maybe I didn't merge the code right, sorry about that.
The CQ bit was checked by watk@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by watk@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 40001, "attempt_start_ts": 1481247548447210, "parent_rev": "e2dae70ef6e0e621937df62e0b045247b7dd26a9", "commit_rev": "9760d8f4be887e6fab39482fe3d66adf993e7110"}
Message was sent while issue was closed.
Committed patchset #3 (id:40001)
Message was sent while issue was closed.
Description was changed from ========== media: AVDA now doesn't queue EOS for a flush if the codec is empty Apparently some MediaCodecs consider it an error to receive an EOS buffer as their first input. So now we skip queueing the EOS if there are no pending buffers in the decoder and no pending inputs. BUG=672268 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 ========== to ========== media: AVDA now doesn't queue EOS for a flush if the codec is empty Apparently some MediaCodecs consider it an error to receive an EOS buffer as their first input. So now we skip queueing the EOS if there are no pending buffers in the decoder and no pending inputs. BUG=672268 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 Committed: https://crrev.com/89afd26f42c7a417841e1657499f5216262906d2 Cr-Commit-Position: refs/heads/master@{#437436} ==========
Message was sent while issue was closed.
Patchset 3 (id:??) landed as https://crrev.com/89afd26f42c7a417841e1657499f5216262906d2 Cr-Commit-Position: refs/heads/master@{#437436} |