Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed latency issue with VideoDecode implementation for H264 and H265 decoders #181

Closed
wants to merge 1 commit into from
Closed

Fixed latency issue with VideoDecode implementation for H264 and H265 decoders #181

wants to merge 1 commit into from

Conversation

RogerSanders
Copy link
Contributor

As detailed in crbug.com/1462868, this pull request fixes an identified issue in the Chromium implementation of the WebCodecs standard, when dealing with VideoDecoder for H264 and H265 streams. In summary, where a correctly configured H265 stream is provided to Chromium, it is expected that individual frames can be passed to the decode() method of VideoDecoder, and that each frame will progress to being output to the VideoFrameOutputCallback for the decoder without further frames needing to be provided, or flush() needing to be called. In reality, there is 1 frame of latency, where flush() needs to be called, or a subsequent frame submitted for decoding, before Chromium releases the previous frame for output. This makes it impossible to properly display variable rate streams in a predictable and consistent manner.

The cause of this latency is an apparent error in the existing code for the H264 and H265 decoders. As commented in the H265 decoder, the intent is that when the end of the input data stream is reached, any frames pending output are intended to be emitted. In reality, pending frames were only sent for decoding, but the processing step to ensure they were being output was not being run. This code change corrects the issue. Testing steps are given in the bug report.

@RogerSanders
Copy link
Contributor Author

Submitted a pull request here in error instead of pushing through Gerrit. Withdrawn.

aetota61 pushed a commit to monkbrowser/monk-browser that referenced this pull request Aug 2, 2023
…ark-115.0.5790.9-r1 to 115-5779.0-1685354388-benchmark-115.0.5790.13-r1

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/cros-afdo-bigcore-chromium-beta
Please CC c-compiler-chrome@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Chromium Beta Branch: https://bugs.chromium.org/p/chromium/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Tbr: c-compiler-chrome@google.com
Change-Id: I3e40ccd4f6bd04e9a1dca30742b2de974a67290c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4573318
Bot-Commit: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/5790@{chromium#181}
Cr-Branched-From: 1d71a33-refs/heads/main@{#1148114}
l0hn pushed a commit to protectednet/hopium that referenced this pull request Aug 23, 2023
The idle bubble doesn't have a button, other than the "X" button. This
means GetInitiallyFocusedView() returns nullptr, i.e. it's not
keyboard-focusable.

Override GetInitiallyFocusedView() to return the "X" button, making it
focusable with Alt+Shift+A or F6.

Rename BubbleFrameView::GetCloseButtonForTesting() to
BubbleFrameView::GetCloseButton(). Update its call-sites.

(cherry picked from commit c850ff0)

Bug: 1440182
Change-Id: I520f7625be35cf949838eec753e4dbb122271e9f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4637102
Commit-Queue: Nicolas Ouellet-Payeur <nicolaso@chromium.org>
Reviewed-by: Dana Fried <dfried@chromium.org>
Reviewed-by: Fabio Tirelo <ftirelo@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1162374}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4651377
Commit-Queue: Dana Fried <dfried@chromium.org>
Auto-Submit: Nicolas Ouellet-Payeur <nicolaso@chromium.org>
Cr-Commit-Position: refs/branch-heads/5845@{chromium#181}
Cr-Branched-From: 5a5dff6-refs/heads/main@{#1160321}
trflynn89 pushed a commit to RebelBrowser/rebel that referenced this pull request Oct 26, 2023
Commits rolled:
https://chrome-internal.googlesource.com/chrome/src-internal.git/+log/d3d668f26438..3d60cfee9367

Generated by: go/bbid/8770206003921370353

Change-Id: I6f1e6cd12501208b831204aa599625afec2a8b4c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4854007
Bot-Commit: Chrome Release Bot (LUCI) <chrome-official-brancher@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/5993@{chromium#181}
Cr-Branched-From: 5113507-refs/heads/main@{#1192594}
vuzix-jeff pushed a commit to Vuzix/chromium that referenced this pull request Nov 3, 2023
Before: https://screenshot.googleplex.com/7vr6YutB7xfafgx
After: https://screenshot.googleplex.com/7ZfgDT9X3Ee5ris

(cherry picked from commit 18be2b9)

Bug: 1313616, 1419988
Change-Id: I2da0cfe2c4a8c6d6681683183f9417c9617a9321
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4278703
Reviewed-by: Florian Leimgruber <fleimgruber@google.com>
Commit-Queue: Alexander Tekle <alexandertekle@google.com>
Reviewed-by: Siyu An <siyua@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1109381}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4304528
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/5615@{chromium#181}
Cr-Branched-From: 9c6408e-refs/heads/main@{#1109224}
vuzix-jeff pushed a commit to Vuzix/chromium that referenced this pull request Nov 3, 2023
Roll Chrome Mac PGO profile from chrome-mac-6045-1696757941-cef82cc392a270fbb83ae41198807c03b4878399.profdata to chrome-mac-6045-1696782300-7d3207835829d5445a6f3b9508db23c5e499d534.profdata

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/pgo-mac-chromium-beta
Please CC chrome-brapp-engprod@google.com,pgo-profile-sheriffs@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Chromium beta branch: https://bugs.chromium.org/p/chromium/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Cq-Include-Trybots: luci.chrome-m119.try:mac-chrome
Tbr: pgo-profile-sheriffs@google.com
Change-Id: I1d6bf9dfd7a1c9cc0e8cba8cb605f9fb48a54bf2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4920224
Commit-Queue: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6045@{chromium#181}
Cr-Branched-From: 905e8bd-refs/heads/main@{#1204232}
Aikoyori pushed a commit to Pissandshittium/pissandshittium that referenced this pull request Dec 8, 2023
This CL updates the ash version ['121.0.6107.0'] for Lacros version skew testing.
This cl only affect linux-lacros config builders like
linux-lacros-tester-rel, linux-lacros-rel.
This cl will certainly NOT affect Lacros on-device builders
(lacros-amd64-generic-rel, lacros-amd64-generic-chrome-skylab,
etc) or any other platforms.

If this CL caused regressions, please revert and stop the autoroller
at https://luci-scheduler.appspot.com/jobs/chrome/lacros-version-skew-roller
Also please file a bug to OS>LaCrOS>Partner, and CC svenzheng@chromium.org.

R=rubber-stamper@appspot.gserviceaccount.com

Bug: None
Change-Id: I65ef76c5df702102f063e5fb980f241e209ca6af
Requires-Testing: True
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5001837
Auto-Submit: chrome-weblayer-builder <chrome-weblayer-builder@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6099@{chromium#181}
Cr-Branched-From: e6ee450-refs/heads/main@{#1217362}
aarongable pushed a commit that referenced this pull request Jan 6, 2024
…1-merged

This CL may cause a small binary size increase, roughly proportional
to how long it's been since our last AFDO profile roll. For larger
increases (around or exceeding 100KB), please file go/crostc-bug.

Please note that, despite rolling to chrome/android, this profile is
used for both Linux and Android.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/afdo-chromium-beta
Please CC c-compiler-chrome@google.com,mobiletc-prebuild@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Chromium Beta Branch: https://bugs.chromium.org/p/chromium/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Tbr: mobiletc-prebuild@google.com
Change-Id: I3af700944b838902af125d03f7bfeee88a276b57
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5107698
Commit-Queue: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6167@{#181}
Cr-Branched-From: 222e786-refs/heads/main@{#1233107}
aarongable pushed a commit that referenced this pull request Jan 27, 2024
Automatic update for 2024-01-27 UTC

Change-Id: I43947204fc3e77aa6f49744895fe5afc08450a2d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5241435
Commit-Queue: PKI Metadata Updates Bot <mdb.chrome-pki-metadata-release-jobs@google.com>
Bot-Commit: PKI Metadata Updates Bot <mdb.chrome-pki-metadata-release-jobs@google.com>
Cr-Commit-Position: refs/branch-heads/6261@{#181}
Cr-Branched-From: 9755d9d-refs/heads/main@{#1250580}
ecotopian pushed a commit to ecosia/chromium-android-browser that referenced this pull request Feb 12, 2024
Integration tests will follow in a separate CL, because the current
Local Approval integration tests mock the native completion callback and therefore cannot hit this code path. An enhancement is already
underway to add tests that don't mock this part of the code.

(cherry picked from commit 8f59e4c)

Bug: 1403235
Change-Id: I7a36d199bde7cb190eb1fea7f8ec67971ab881a3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4206436
Commit-Queue: James Lee <ljjlee@google.com>
Reviewed-by: Nohemi Fernandez <fernandex@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1100915}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4223195
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: James Lee <ljjlee@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/5563@{chromium#181}
Cr-Branched-From: 3ac59a6-refs/heads/main@{#1097615}
aarongable pushed a commit that referenced this pull request Feb 27, 2024
DriveFS expects this struct to be non-null, so for now, always give it
a value. The value itself doesn't matter as it is not used on error.

(cherry picked from commit 7bc3124)

Bug: b:325351184
Change-Id: I9cfbfd15029ba73185a1b5f47717a261e7fa6302
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5316796
Commit-Queue: Austin Tankiang <austinct@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1263803}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5320118
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Austin Tankiang <austinct@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6312@{#181}
Cr-Branched-From: 6711dcd-refs/heads/main@{#1262506}
aarongable pushed a commit that referenced this pull request Mar 25, 2024
I unintentionally enabled BackgroundResourceFetch feature in
https://crrev.com/c/4956763.
This CL disables this feature by default.

(cherry picked from commit 4d85ec3)

Bug: 40244488
Change-Id: Icfa3bb879134d8aa7d5e15419ecc7e4c573d5851
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5379631
Commit-Queue: Tsuyoshi Horo <horo@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1274731}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5386709
Commit-Queue: Kouhei Ueno <kouhei@chromium.org>
Auto-Submit: Tsuyoshi Horo <horo@chromium.org>
Cr-Commit-Position: refs/branch-heads/6367@{#181}
Cr-Branched-From: d158c6d-refs/heads/main@{#1274542}
aarongable pushed a commit that referenced this pull request Apr 21, 2024
…125.0.6422.8-r1 to 125-6367.24-1713181437-benchmark-125.0.6422.9-r1

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/cros-afdo-arm-chromium-beta
Please CC c-compiler-chrome@google.com,mobiletc-prebuild@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Chromium Beta Branch: https://bugs.chromium.org/p/chromium/issues/entry

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Tbr: mobiletc-prebuild@google.com
Change-Id: If748272d30c74a46af42a7e4fdfc47c400602488
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5470464
Bot-Commit: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Chrome Release Autoroll <chromium-release-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6422@{#181}
Cr-Branched-From: 9012208-refs/heads/main@{#1287751}
aarongable pushed a commit that referenced this pull request May 17, 2024
The IPH row left inset is +8px compared to other suggestions, so the text indentation needs to be reduced by 8px to keep it aligned with the text of the other suggestions.  The icon should not be aligned with the other icons since doing so would put it too close to the container's edge.

Screenshots:
Before: https://screenshot.googleplex.com/4EbDrNMwth2e8rA.png
After: https://screenshot.googleplex.com/8YGDjvAxGPvxETE.png

(cherry picked from commit 105ea02)

Bug: 341049604
Change-Id: I6622c4ceefac115cd645a9813bd6a52b0c336909
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5544587
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Moe Ahmadi <mahmadi@chromium.org>
Commit-Queue: Angela Yoeurng <yoangela@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1302254}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5548960
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Angela Yoeurng <yoangela@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6478@{#181}
Cr-Branched-From: e6143ac-refs/heads/main@{#1300313}
consp1racy pushed a commit to signageos/chromium-chromium that referenced this pull request May 18, 2024
This effectively stops captures for the 3 seconds following any
navigation or tab switch. This cuts down on unnecessary captures during
page loads when the favicon is still being figured out.

The approach is very similar to what was taken in
https://crrev.com/c/3837113, except there is no carve out needed for
native pages.

(cherry picked from commit e0ed9b8)

Bug: 1351477
Change-Id: Ifb73085fe09228b3a9c00657b26c33298ee53366
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3849764
Reviewed-by: Theresa Sullivan <twellington@chromium.org>
Reviewed-by: Patrick Noland <pnoland@chromium.org>
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Commit-Queue: Sky Malice <skym@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1038472}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3861296
Reviewed-by: David Trainor <dtrainor@chromium.org>
Commit-Queue: David Trainor <dtrainor@chromium.org>
Auto-Submit: Sky Malice <skym@chromium.org>
Cr-Commit-Position: refs/branch-heads/5249@{chromium#181}
Cr-Branched-From: 4f7bea5-refs/heads/main@{#1036826}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant