Unverified Commit bf597424 authored by Hampton Maxwell's avatar Hampton Maxwell Committed by GitHub
Browse files

Merge pull request #1162 from nfb-onf/master

Fix for #1150 and improvements for #1143
parents 352bad21 aa439470
Loading
Loading
Loading
Loading
+16 −3
Changes for ios/RCTVideo.m: 16 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -347,8 +347,12 @@ static int const RCTVideoUnset = -1;
}

- (NSURL*) urlFilePath:(NSString*) filepath {
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  if ([filepath containsString:@"file://"]) {
    return [NSURL URLWithString:filepath];
  }
  
  // code to support local caching
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString* relativeFilePath = [filepath lastPathComponent];
  // the file may be multiple levels below the documents directory
  NSArray* fileComponents = [filepath componentsSeparatedByString:@"Documents/"];
@@ -384,7 +388,7 @@ static int const RCTVideoUnset = -1;
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    [assetOptions setObject:cookies forKey:AVURLAssetHTTPCookiesKey];
    asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:uri] options:assetOptions];
  } else if (isAsset) { //  assets on iOS have to be in the Documents folder
  } else if (isAsset) { //  assets on iOS can be in the Bundle or Documents folder
    asset = [AVURLAsset URLAssetWithURL:[self urlFilePath:uri] options:nil];
  } else { // file passed in through JS, or an asset in the Xcode project
    asset = [AVURLAsset URLAssetWithURL:[[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:uri ofType:type]] options:nil];
@@ -411,6 +415,7 @@ static int const RCTVideoUnset = -1;
                           atTime:kCMTimeZero
                            error:nil];

  NSMutableArray* validTextTracks = [NSMutableArray array];
  for (int i = 0; i < _textTracks.count; ++i) {
    AVURLAsset *textURLAsset;
    NSString *textUri = [_textTracks objectAtIndex:i][@"uri"];
@@ -420,6 +425,8 @@ static int const RCTVideoUnset = -1;
      textURLAsset = [AVURLAsset URLAssetWithURL:[self urlFilePath:textUri] options:nil];
    }
    AVAssetTrack *textTrackAsset = [textURLAsset tracksWithMediaType:AVMediaTypeText].firstObject;
    if (!textTrackAsset) continue; // fix when there's no textTrackAsset
    [validTextTracks addObject:[_textTracks objectAtIndex:i]];
    AVMutableCompositionTrack *textCompTrack = [mixComposition
                                                addMutableTrackWithMediaType:AVMediaTypeText
                                                preferredTrackID:kCMPersistentTrackID_Invalid];
@@ -428,6 +435,9 @@ static int const RCTVideoUnset = -1;
                                atTime:kCMTimeZero
                                 error:nil];
  }
  if (validTextTracks.count != _textTracks.count) {
    [self setTextTracks:validTextTracks];
  }

  return [AVPlayerItem playerItemWithAsset:mixComposition];
}
@@ -848,7 +858,10 @@ static int const RCTVideoUnset = -1;
        selectedTrackIndex = index;
      }
    }
  } else { // type "system"
  }
  
  // in the situation that a selected text track is not available (eg. specifies a textTrack not available)
  if (![type isEqualToString:@"disabled"] && selectedTrackIndex == RCTVideoUnset) {
    CFArrayRef captioningMediaCharacteristics = MACaptionAppearanceCopyPreferredCaptioningMediaCharacteristics(kMACaptionAppearanceDomainUser);
    NSArray *captionSettings = (__bridge NSArray*)captioningMediaCharacteristics;
    if ([captionSettings containsObject:AVMediaCharacteristicTranscribesSpokenDialogForAccessibility]) {