Search code examples
iosswiftswift2avfoundationavmutablecomposition

Swift 2 - Visualizing an AVMutableComposition for Debugging : Converting Apple's AVCompositionDebugViewer


I'm running into an issue with my swift 2 conversion of an Apple provided example for displaying an AVMutableComposition. This is a really useful project if you're trying to visualize your AVComposition to see what might be going on under the hood.


Update: I added print statements to each function to see the order they are being called, and who is calling them, in comparison to the Obj-C project.

Two Issues that I'm seeing that seem pretty important:

  1. synchronizePlayerWithEditor() is not getting called after buildTransitionComposition(_:andVideoComposition:andAudioMix:)

  2. observeValueForKeyPath(_:...) is NOT being called in the same order as the Obj-C project

Posting the snippet here to get the calling function as it's kind of useful

Obj-C

NSLog(@"%d %s %@", __LINE__, __PRETTY_FUNCTION__, [[NSThread callStackSymbols] objectAtIndex:1]);

Swift

func functionnYouWantToPrintCaller(yourNormalParameters..., function:String = __FUNCTION__){...}
print("\(__LINE__) \(__FUNCTION__) \(function)

Here is Apple's AVCompositionDebugViewer project I'm working from: https://developer.apple.com/library/mac/samplecode/AVCompositionDebugViewer

My github repo: https://github.com/justinlevi/iOSAVCompositionDebugViewerSwift

I think the issue might be stemming from something in the keyValueObservation code although I'm not entirely sure at this point.


Solution

  • The issue ended up being in SimpleEditor.swiftbuildCompositionObjectsForPlayback` method. There were some global variables that were being defined incorrectly.

    Everything seems to be working as expected now. https://github.com/justinlevi/iOSAVCompositionDebugViewerSwift