packages icon indicating copy to clipboard operation
packages copied to clipboard

[video_player_avfoundation] Fix playback speed doesn't get persisted on iOS after reinitializing with new VideoPlayerController

Open vmalyi opened this issue 1 year ago • 0 comments

This PR fixes the https://github.com/flutter/flutter/issues/100351 by using the playImmediately(atRate:) instead of play() because calling play() has an effect of setting back the rate to 1.0 which is unwanted in case of VideoPlayerController's reinitialization.

Using playImmediately(atRate:) is safe even with slower internet connections because AVPlayer automatically compensates eventual lack of media in the buffer by simply behaving as if it has encountered a stall during playback.

Considering that updatePlayingState() function which, in turn, invokes the playImmediately(atRate:), is only called when handling "pause" or "play" events or in AVPlayerItemStatusReadyToPlay state, it's safe for user experience to use the playImmediately(atRate:) instead of play().

Pre-launch Checklist

  • [x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • [x] I read the Tree Hygiene wiki page, which explains my responsibilities.
  • [x] I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use dart format.)
  • [x] I signed the CLA.
  • [x] The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • [x] I listed at least one issue that this PR fixes in the description above.
  • [x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
  • [x] I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
  • [ ] I updated/added relevant documentation (doc comments with ///).
  • [ ] I added new tests to check the change I am making, or this PR is test-exempt.
  • [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

vmalyi avatar Mar 22 '23 15:03 vmalyi