From 53f80ce6c4c9d7659457aed41aa83d39ac6ea370 Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Sun, 3 Mar 2019 19:17:58 -0600 Subject: [PATCH 1/7] #17606 Fix: some videos were rendered black with the video_player plugin on iOS --- .../ios/Classes/VideoPlayerPlugin.m | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/video_player/ios/Classes/VideoPlayerPlugin.m b/packages/video_player/ios/Classes/VideoPlayerPlugin.m index 2d8b6ee1b950..1627c706d83d 100644 --- a/packages/video_player/ios/Classes/VideoPlayerPlugin.m +++ b/packages/video_player/ios/Classes/VideoPlayerPlugin.m @@ -149,21 +149,25 @@ - (CGAffineTransform)fixTransform:(AVAssetTrack*)videoTrack { CGAffineTransform transform = videoTrack.preferredTransform; // TODO(@recastrodiaz): why do we need to do this? Why is the preferredTransform incorrect? // At least 2 user videos show a black screen when in portrait mode if we directly use the - // videoTrack.preferredTransform Setting tx to the height of the video instead of 0, properly - // displays the video https://github.com/flutter/flutter/issues/17606#issuecomment-413473181 - if (transform.tx == 0 && transform.ty == 0) { - NSInteger rotationDegrees = (NSInteger)round(radiansToDegrees(atan2(transform.b, transform.a))); - NSLog(@"TX and TY are 0. Rotation: %ld. Natural width,height: %f, %f", (long)rotationDegrees, - videoTrack.naturalSize.width, videoTrack.naturalSize.height); - if (rotationDegrees == 90) { - NSLog(@"Setting transform tx"); - transform.tx = videoTrack.naturalSize.height; - transform.ty = 0; - } else if (rotationDegrees == 270) { - NSLog(@"Setting transform ty"); - transform.tx = 0; - transform.ty = videoTrack.naturalSize.width; - } + // videoTrack.preferredTransform. This is because the transform.tx and transform.ty values are + // incorrectly set to 0. + // Setting the transform.tx value to the height of the video instead of 0 when rotationDegrees == + // 90 and transform.ty to the video width when rotationDegrees == 270, properly displays the video + // https://github.com/flutter/flutter/issues/17606#issuecomment-413473181 In 1 other user video + // the transform.x and transform.y are set to 1080.0 and 0.0 respectively, whilst the width, + // height and rotation of the video are 848.0, 480.0 and 90 respectively. Replacing the value of + // transform.tx to the video height properly renders the video. + NSInteger rotationDegrees = (NSInteger)round(radiansToDegrees(atan2(transform.b, transform.a))); + NSLog(@"VIDEO__ %f, %f, %f, %f, %li", transform.tx, transform.ty, videoTrack.naturalSize.height, + videoTrack.naturalSize.width, (long)rotationDegrees); + if (rotationDegrees == 90) { + NSLog(@"Setting transform tx"); + transform.tx = videoTrack.naturalSize.height; + transform.ty = 0; + } else if (rotationDegrees == 270) { + NSLog(@"Setting transform ty"); + transform.tx = 0; + transform.ty = videoTrack.naturalSize.width; } return transform; } From 65254f11dc131e8600651bcc3bab5300daf56f3f Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Sun, 3 Mar 2019 19:24:36 -0600 Subject: [PATCH 2/7] Upgrade video_player version to 0.10.1 --- packages/video_player/CHANGELOG.md | 4 ++++ packages/video_player/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/video_player/CHANGELOG.md b/packages/video_player/CHANGELOG.md index 6280b9ce47ed..456521c9023e 100644 --- a/packages/video_player/CHANGELOG.md +++ b/packages/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.10.1 + +* iOS: fixed some videos being rendered black + ## 0.10.0+1 * Log a more detailed warning at build time about the previous AndroidX diff --git a/packages/video_player/pubspec.yaml b/packages/video_player/pubspec.yaml index 197430d53585..bb8edb5f8dfc 100644 --- a/packages/video_player/pubspec.yaml +++ b/packages/video_player/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android and iOS. author: Flutter Team -version: 0.10.0+2 +version: 0.10.1 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player flutter: From 3255964c2d82f60276ccf665c26070f2f61e0120 Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Fri, 12 Apr 2019 13:15:30 +0100 Subject: [PATCH 3/7] - Remove useless logging --- packages/video_player/ios/Classes/VideoPlayerPlugin.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/video_player/ios/Classes/VideoPlayerPlugin.m b/packages/video_player/ios/Classes/VideoPlayerPlugin.m index a53dfd491605..7ecf9e034a45 100644 --- a/packages/video_player/ios/Classes/VideoPlayerPlugin.m +++ b/packages/video_player/ios/Classes/VideoPlayerPlugin.m @@ -164,11 +164,9 @@ - (CGAffineTransform)fixTransform:(AVAssetTrack*)videoTrack { NSLog(@"VIDEO__ %f, %f, %f, %f, %li", transform.tx, transform.ty, videoTrack.naturalSize.height, videoTrack.naturalSize.width, (long)rotationDegrees); if (rotationDegrees == 90) { - NSLog(@"Setting transform tx"); transform.tx = videoTrack.naturalSize.height; transform.ty = 0; } else if (rotationDegrees == 270) { - NSLog(@"Setting transform ty"); transform.tx = 0; transform.ty = videoTrack.naturalSize.width; } From d31a68ccc8b716ca87ec034e74298460f1fa234c Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Fri, 26 Apr 2019 10:11:29 +0100 Subject: [PATCH 4/7] Increase plugin build version --- packages/video_player/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/video_player/pubspec.yaml b/packages/video_player/pubspec.yaml index 168a55448c9d..e469a120afa1 100644 --- a/packages/video_player/pubspec.yaml +++ b/packages/video_player/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android and iOS. author: Flutter Team -version: 0.10.0+7 +version: 0.10.0+8 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player flutter: From 10de1daffe06af1f1b64420a6c75122118a120ce Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Sat, 7 Sep 2019 13:17:09 +0100 Subject: [PATCH 5/7] Incrase video_player version --- packages/video_player/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/video_player/pubspec.yaml b/packages/video_player/pubspec.yaml index 96374a133405..ee47cd813add 100644 --- a/packages/video_player/pubspec.yaml +++ b/packages/video_player/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android and iOS. author: Flutter Team -version: 0.10.2+1 +version: 0.10.2+2 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player flutter: From d5f86ccff0c42109e7d3885d4aa79d4046a9ad19 Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Thu, 7 Jan 2021 20:42:29 +0000 Subject: [PATCH 6/7] Ensure videos are not black when rotationDegrees == 180 and transform.tx or transform.ty are incorrect https://github.com/flutter/flutter/issues/28831 --- .../video_player/ios/Classes/FLTVideoPlayerPlugin.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m index 59192b32cf45..e6618fad9a33 100644 --- a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m @@ -184,6 +184,9 @@ - (CGAffineTransform)fixTransform:(AVAssetTrack*)videoTrack { if (rotationDegrees == 90) { transform.tx = videoTrack.naturalSize.height; transform.ty = 0; + } else if (rotationDegrees == 180) { + transform.tx = videoTrack.naturalSize.width; + transform.ty = videoTrack.naturalSize.height; } else if (rotationDegrees == 270) { transform.tx = 0; transform.ty = videoTrack.naturalSize.width; From aa497bc4e44cf40ebea11fac143b42c9c924bb90 Mon Sep 17 00:00:00 2001 From: Mike Diarmid Date: Fri, 8 Jan 2021 09:30:39 +0000 Subject: [PATCH 7/7] Update version on pubspec --- packages/video_player/video_player/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index e4694195ebde..72fb54b125ea 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for displaying inline video with other Flutter # 0.10.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 2.0.0-nullsafety.7 +version: 2.0.0-nullsafety.8 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: