commit | 4f20ebb8ab8ed0eba43a5cf15f5829069bd5dd02 | [log] [tgz] |
---|---|---|
author | Dongseong Hwang <dongseong.hwang@intel.com> | Thu Jun 07 00:28:20 2018 |
committer | Commit Bot <commit-bot@chromium.org> | Thu Jun 07 00:28:20 2018 |
tree | f594c3919dae20f8504c8d75aebf0ca5cf746af4 | |
parent | 090b2968450aad56603690852ed49a047371d956 [diff] |
vaapi: give up vp8 decoding if the size is changed and the key frame is missing. WebRTC causes GPU hang on ChromeOS because of this bug. WebRTC can switch the resolution of video size depending on network condition. So the first size-changed frame can be inter frame. However, vp8 decoder assumes the first size-changed frame is always key frame, and passes wrong size value with the different sized encoded data and then libva causes GPU hang. Unfortunately, we don't know the first inter frame after rtc dropping frames has different size or not, because vp8 doesn't store the size in inter frame. So this CL makes vp8 decoder give up decoding all inter frames when rtc dropping frames. If vp8 decoder has to skip more than 75 frames (i.e. around 3 secs), it reports decode error to request new keyframe. In the same sense, vp9 decoder also doesn't report decode error until 75 frames skipped. Extract P frame from bear-320x240.webm to add an unittest by Sreerenj <sreerenj.balachandran@intel.com> gst-launch-1.0 -v filesrc location=bear-320x240.webm ! matroskademux ! multifilesink location=vp8-frame-320x240_%d TEST=run https://appr.tc/?vsc=vp8 on 2 IA chromebooks. e.g. KBL, APL, SKL add VP8DecoderTest in media_unittests BUG=831037, b/72676160 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel Change-Id: I2e116efcc28ebdbea9739c84b28ce3027eac836d Reviewed-on: https://chromium-review.googlesource.com/1009324 Commit-Queue: Dongseong Hwang <dongseong.hwang@intel.com> Reviewed-by: Miguel Casas <mcasas@chromium.org> Reviewed-by: Emircan Uysaler <emircan@chromium.org> Reviewed-by: Dongseong Hwang <dongseong.hwang@intel.com> Reviewed-by: Daniele Castagna <dcastagna@chromium.org> Cr-Commit-Position: refs/heads/master@{#565121}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .