Merge pull request #1162 from nfb-onf/master
Fix for #1150 and improvements for #1143
This commit is contained in:
		@@ -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]) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user