@nativescript/canvas-media 2.0.32 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,7 +23,7 @@ export class VideoFrame extends VideoFrameBase {
23
23
  return new VideoFrame(_INTERNAL, data);
24
24
  }
25
25
  catch (err) {
26
- if (__IOS__) {
26
+ if (__APPLE__) {
27
27
  console.error('[VideoFrame] fromVideo:', err?.message ?? err);
28
28
  }
29
29
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.ios.js","sourceRoot":"","sources":["../../../../packages/canvas-media/VideoFrame/index.ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.ios.js","sourceRoot":"","sources":["../../../../packages/canvas-media/VideoFrame/index.ios.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nativescript/canvas-media",
3
- "version": "2.0.32",
3
+ "version": "2.1.0",
4
4
  "description": "Canvas media",
5
5
  "main": "index",
6
6
  "typings": "index.d.ts",
@@ -8,6 +8,24 @@
8
8
  #endif
9
9
  #import "NSCAudioView.h"
10
10
 
11
+ // visionOS removed the synchronous -tracksWithMediaType:. Bridge to the async loader.
12
+ // Call sites here use already-loaded assets and are wrapped in @try/@catch; the async
13
+ // completion is delivered on a background queue, so the semaphore wait does not deadlock.
14
+ static NSArray<AVAssetTrack *> *NSCTracksWithMediaType(AVAsset *asset, AVMediaType mediaType) {
15
+ #if TARGET_OS_VISION
16
+ __block NSArray<AVAssetTrack *> *result = nil;
17
+ dispatch_semaphore_t sem = dispatch_semaphore_create(0);
18
+ [asset loadTracksWithMediaType:mediaType completionHandler:^(NSArray<AVAssetTrack *> * _Nullable tracks, NSError * _Nullable error) {
19
+ result = tracks;
20
+ dispatch_semaphore_signal(sem);
21
+ }];
22
+ dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
23
+ return result;
24
+ #else
25
+ return [asset tracksWithMediaType:mediaType];
26
+ #endif
27
+ }
28
+
11
29
  @implementation NSCAudioHelper {
12
30
  AVPlayer *_playerInternal;
13
31
  AVPlayerItem *_currentItemInternal;
@@ -311,7 +329,7 @@
311
329
  }
312
330
 
313
331
  @try {
314
- NSArray<AVAssetTrack *> *tracks = [asset tracksWithMediaType:AVMediaTypeAudio];
332
+ NSArray<AVAssetTrack *> *tracks = NSCTracksWithMediaType(asset, AVMediaTypeAudio);
315
333
  for (AVAssetTrack *track in tracks) {
316
334
  CMTimeRange tr = track.timeRange;
317
335
  CMTime td = tr.duration;
@@ -321,7 +339,7 @@
321
339
  return YES;
322
340
  }
323
341
  }
324
- tracks = [asset tracksWithMediaType:AVMediaTypeVideo];
342
+ tracks = NSCTracksWithMediaType(asset, AVMediaTypeVideo);
325
343
  for (AVAssetTrack *track in tracks) {
326
344
  CMTimeRange tr = track.timeRange;
327
345
  CMTime td = tr.duration;
@@ -382,7 +400,7 @@
382
400
 
383
401
  double bitrate = 0.0;
384
402
  @try {
385
- NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeAudio];
403
+ NSArray *tracks = NSCTracksWithMediaType(asset, AVMediaTypeAudio);
386
404
  if (tracks.count > 0) {
387
405
  AVAssetTrack *track = [tracks objectAtIndex:0];
388
406
  bitrate = track.estimatedDataRate;
@@ -10,6 +10,25 @@
10
10
  #endif
11
11
  #import "NSCVideoHelper+Internal.h"
12
12
 
13
+ // visionOS removed the synchronous -tracksWithMediaType:. Bridge to the async loader.
14
+ // Callers below have already run -loadValuesAsynchronouslyForKeys: including @"tracks",
15
+ // so the tracks are loaded and this returns immediately. The async completion is
16
+ // delivered on a background queue, so the semaphore wait is safe even on the main thread.
17
+ static NSArray<AVAssetTrack *> *NSCTracksWithMediaType(AVAsset *asset, AVMediaType mediaType) {
18
+ #if TARGET_OS_VISION
19
+ __block NSArray<AVAssetTrack *> *result = nil;
20
+ dispatch_semaphore_t sem = dispatch_semaphore_create(0);
21
+ [asset loadTracksWithMediaType:mediaType completionHandler:^(NSArray<AVAssetTrack *> * _Nullable tracks, NSError * _Nullable error) {
22
+ result = tracks;
23
+ dispatch_semaphore_signal(sem);
24
+ }];
25
+ dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
26
+ return result;
27
+ #else
28
+ return [asset tracksWithMediaType:mediaType];
29
+ #endif
30
+ }
31
+
13
32
  @implementation NSCVideoHelper {
14
33
  BOOL _canPlayFired;
15
34
  BOOL _canPlayThroughFired;
@@ -84,7 +103,7 @@
84
103
  __strong typeof(weakSelf) strongSelf = weakSelf;
85
104
  if (!strongSelf) return;
86
105
 
87
- AVAssetTrack *videoTrack = [[strongSelf.asset tracksWithMediaType:AVMediaTypeVideo] firstObject];
106
+ AVAssetTrack *videoTrack = [NSCTracksWithMediaType(strongSelf.asset, AVMediaTypeVideo) firstObject];
88
107
  strongSelf->_videoSize = videoTrack ? videoTrack.naturalSize : CGSizeZero;
89
108
 
90
109
  float fps = (videoTrack && videoTrack.nominalFrameRate > 0) ? videoTrack.nominalFrameRate : 30.0f;
@@ -160,7 +179,7 @@
160
179
 
161
180
  if ([keyPath isEqualToString:@"status"]) {
162
181
  if (self.player.currentItem.status == AVPlayerItemStatusReadyToPlay) {
163
- self->_videoSize = [[self.asset tracksWithMediaType:AVMediaTypeVideo] firstObject].naturalSize;
182
+ self->_videoSize = [NSCTracksWithMediaType(self.asset, AVMediaTypeVideo) firstObject].naturalSize;
164
183
  [self.player.currentItem addOutput:self.assetOutput];
165
184
  self.readyState = NSCPlayerReadyStateHaveCurrentData;
166
185
  }