Chromium Code Reviews
DescriptionMerge 58: Move destruction of VEAEncoder to encoding task runner
We were seeing random crashes in WebRtcMediaRecorderTest.*FiresErrorEvent tests
because:
- GpuVideoEncodeAcceleratorHost::Initialize() takes a naked ptr to |client|
which is VEAEncoder.
- GpuVideoEncodeAcceleratorHost::OnRequireBitstreamBuffers() calls
client->OnRequireBitstreamBuffers().
- While VEAEncoder::RequireBitstreamBuffers() is running on
|encoding_task_runner_|, ~VEAEncoder() gets called on main render thread
through ~VideoTrackRecorder() after the error event.
~ VEAEncoder() needs a mechanism similar to H264Encoder::ShutdownEncoder() to
make sure that shutdown tasks on |encoding_task_runner_| are completed before
moving on.
This CL solves the issues by making sure that dtor completes tasks on encoding
task runner via DestroyOnEncodingTaskRunner().
BUG=701030
TEST=WebRtcMediaRecorderTest.*FiresErrorEvent tests consistently pass on
local Mac builds.
Review-Url: https://codereview.chromium.org/2750993002
Cr-Commit-Position: refs/heads/master@{#457101}
(cherry picked from commit caa1c995a9a8dc99a4d6999d78f796aa4dbdae0f)
NOTRY=true
NOPRESUBMIT=true
TBR=mcasas@chromium.org
Review-Url: https://codereview.chromium.org/2753073002
Cr-Commit-Position: refs/branch-heads/3029@{#243}
Cr-Branched-From: 939b32ee5ba05c396eef3fd992822fcca9a2e262-refs/heads/master@{#454471}
Committed: https://chromium.googlesource.com/chromium/src/+/d23165856a4a8c63c88b0585757e5249da66ba95
Patch Set 1 #
Messages
Total messages: 10 (8 generated)
|
|||||||||||||||||||