[video_player] Optimize caption retrieval with binary search in VideoPlayerController#8347
Conversation
|
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
…ollection`, sorting captions and caching start times for improved performance.
…package:collection` and streamline caption sorting
|
@stuartmorgan does this change need a test? It shouldn't be changing any behaviors, I'm not sure how a test would work honestly. |
The fact that it's a more efficient search doesn't inherently need a test; that's essentially just a refactoring. However, this seems like a good opportunity to make sure we have reasonably robust coverage of caption correctness. E.g., is there a unit test that would fail if the initial sort were commented out? |
I can add that , so in general more caption edge cases |
…ackages into binary-search-captions
|
I just checked the test for sorting, and it shows that the captions are not sorted. After rechecking the code, I realized that the captions are implemented as a getter, which means it’s a read-only operation. I have two solutions in mind: 1- Modify the public-facing controller by adding a getter to retrieve the sorted captions. However, based on my observations, it’s not recommended to change the interface, so this solution might not be valid. 2- Ensure that all ClosedCaptionFile classes return sorted captions. I will implement this solution for now, and if the public-facing approach turns out to be better, we can always revert to it. Edit: fix number 2 is not clean since it doesnt enforce the sorting so i am going with the first fix |
|
tests implemented and improved the logic for the binary search since it was incorrect in some cases for this test |
|
From triage: what's the status of this PR? Is it ready for re-review? |
Yes it's ready for a re-review |
tarrinneal
left a comment
There was a problem hiding this comment.
Changelog doesn't match our guidelines. And a tip with the failing tests.
Seems good to me besides.
|
I switched the logic to use the plan in my mind currently to add a flag so I know if the current file was sorted or not, but don't know if its good or not. |
This comment was marked as off-topic.
This comment was marked as off-topic.
|
@abdelaziz-mahdy Are you still planning on updating this PR to address the review comments above? |
Sadly I have been quite busy lately, and not easy to figure out, so I cant fix it yet |
|
Marking as a draft pending updates. |
|
Greetings from stale PR triage! 👋 |
…d clarity and performance
…y-search-captions
…in VideoPlayerController
|
Review comments addressed. Ready for re-review. Changes Made:
Added 5 new tests covering binary search edge cases:
The caching optimization ensures captions are only sorted when the file actually changes (initialization or explicit setClosedCaptionFile call), avoiding performance issues. |
…and improve clarity, and address comments
…inference for improved readability
stuartmorgan-g
left a comment
There was a problem hiding this comment.
LGTM, sorry for the delay in getting back to this.
@tarrinneal This just needs a final second review.
|
Sorry for the wait, this one slid through my process |
…h in VideoPlayerController (flutter/packages#8347)
…h in VideoPlayerController (flutter/packages#8347)
flutter/packages@ee460d6...ecace66 2026-03-11 [email protected] [pigeon] Produce a helpful error for bad method return type (flutter/packages#11204) 2026-03-11 [email protected] [pigeon] Use hasLength and isEmpty in tests for better failure messages (flutter/packages#11205) 2026-03-11 [email protected] [rfw] Opt out of icon tree shaking (flutter/packages#11216) 2026-03-11 [email protected] [pigeon] Tidy imports and "ignore" comments (flutter/packages#11149) 2026-03-11 49699333+dependabot[bot]@users.noreply.github.com [dependabot]: Bump org.jetbrains.kotlin:kotlin-bom from 2.2.21 to 2.3.10 in /packages/pigeon/platform_tests/test_plugin/android (flutter/packages#10984) 2026-03-11 [email protected] [pigeon] Improve casting and nullability-handling in generated code (flutter/packages#11163) 2026-03-10 [email protected] Roll Flutter from 2ec61af to 195ae7b (36 revisions) (flutter/packages#11222) 2026-03-10 [email protected] [vector_graphics] Respect BoxFit parameter with viewbox (flutter/packages#11012) 2026-03-10 [email protected] Add AI contribution guidelines to PR checklist (flutter/packages#11195) 2026-03-10 [email protected] [video_player] Optimize caption retrieval with binary search in VideoPlayerController (flutter/packages#8347) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose 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
Just found the todo in the code and it was from 3 years ago, so i wanted to implement it since it may help people using captions to have more optimized code
Pre-launch Checklist
dart format.)[shared_preferences]pubspec.yamlwith an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.CHANGELOG.mdto add a description of the change, following repository CHANGELOG style, or this PR is exempt from CHANGELOG changes.///).If you need help, consider asking for advice on the #hackers-new channel on Discord.