Posts

Post not yet marked as solved
1 Replies
227 Views
My macOS app (targeting Catalina only) uses camera, mic and screen recording. While developing the app the system asks me permission every time I rebuild and run the app. This does not happen on iOS. Is there anyway to prevent this? Secondly when I distribute the app to other Macs, every build needs the consent re-affirmed. This doesn't seem like the way it should be. What could I be doing wrong?
Posted Last updated
.
Post not yet marked as solved
2 Replies
337 Views
I stumbled across this in the documentation - https://developer.apple.com/documentation/foundation/bundle/1411412-url. I can't seem to get it to return anything for me. In my Mac app Xcode project I added an executable to a copy files phase and set that phase Destination to "Executables". This seemed like the logical place to do it. This did not get a url when calling Bundle.main.url(forAuxiliaryExecutable) I want to pass this url to Process.executableURL I am able to generate the apropriate URL by calling Bundle.main.bundleURL then .appendPathComponent("Contents/MacOS/excutable") but am just curious about this forAuxiliaryExecutable Am I misunderstanding what this would be for?
Posted Last updated
.
Post not yet marked as solved
0 Replies
446 Views
CMVideoFormatDescriptionCopyAsBigEndianImageDescriptionBlockBufferandCMVideoFormatDescriptionCreateFromBigEndianImageDescriptionBlockBufferseem like some useful utilities, but... they are not acting the way I expected. In my mind I should be able to pass the first a CMVideoFormatDescription then pass the created CMBlockBuffer to the second and get out a CMVideoFormatDescription that matches the first CMVideoFormatDescription. I don't. Am I misunderstanding what these utilities are for? Here are printouts of the original CMVideoFormatDescription:<CMVideoFormatDescription 0x600000ca7330 [0x7fff8d24f7d0]> { mediaType:'vide' mediaSubType:'avc1' mediaSpecific: { codecType: 'avc1' dimensions: 1280 x 720 } extensions: {{ CVImageBufferColorPrimaries = "ITU_R_709_2"; CVImageBufferTransferFunction = "ITU_R_709_2"; CVImageBufferYCbCrMatrix = "ITU_R_709_2"; CVPixelAspectRatio = { HorizontalSpacing = 1; VerticalSpacing = 1; }; FormatName = "H.264"; SampleDescriptionExtensionAtoms = { avcC = {length = 42, bytes = 0x014d0020 ffe1001b 274d0020 898b6028 ... 40010004 28ee1f20 }; }; }} }and the copy via the utilities:<CMVideoFormatDescription 0x600000cb40c0 [0x7fff8d24f7d0]> { mediaType:'vide' mediaSubType:'avc1' mediaSpecific: { codecType: 'avc1' dimensions: 1280 x 720 } extensions: {{ CVFieldCount = 1; CVImageBufferChromaLocationBottomField = Left; CVImageBufferChromaLocationTopField = Left; CVImageBufferColorPrimaries = "ITU_R_709_2"; CVImageBufferTransferFunction = "ITU_R_709_2"; CVImageBufferYCbCrMatrix = "ITU_R_709_2"; CVPixelAspectRatio = { HorizontalSpacing = 1; VerticalSpacing = 1; }; Depth = 24; FormatName = "'avc1'"; FullRangeVideo = 0; RevisionLevel = 0; SampleDescriptionExtensionAtoms = { avcC = {length = 42, bytes = 0x014d0020 ffe1001b 274d0020 898b6028 ... 40010004 28ee1f20 }; }; SpatialQuality = 0; TemporalQuality = 0; VerbatimISOSampleEntry = {length = 171, bytes = 0x000000ab 61766331 00000000 0000ffff ... 00000001 00000001 }; Version = 0; }} }
Posted Last updated
.
Post not yet marked as solved
1 Replies
505 Views
import AVFoundation let eq = AVAudioUnitEQ(numberOfBands: 1) eq.bands[0].bandwidth / eq.bands[0].bypass / eq.bands[0].frequency / eq.bands[0].gain / let fullState = eq.auAudioUnit.fullState eq.bands[0].bandwidth = 1 eq.bands[0].bypass = false eq.bands[0].frequency = 20 eq.bands[0].gain = 1 eq.bands[0].bandwidth // 1 eq.bands[0].bypass // false eq.bands[0].frequency // 20 eq.bands[0].gain // 1 eq.auAudioUnit.fullState = fullState eq.bands[0].bandwidth //Should be 0.5 but is 1 eq.bands[0].bypass // Should be false but is true eq.bands[0].frequency // Should be 40 but is 20 eq.bands[0].gain // Should be 0 but is 1The above code can be put in a playground for quick verification. The thing is that the `fullState` does get applied, because the sound is effected when running this test in a working AudioEngine. What seems to be broken is that the band parameters are not updated.I think GarageBand is broken due to this same issue. To reproduce:Note that this is on iOS GB, MacOS GB does not seem to have this issue. Create a new song.Add a trackAdd one of the "Apple" "Audio Unit Extensions" such as "AUDelay" to the trackChange the settings on the effect, like max out all the fadersNow go back to "My Songs" (This will save the song. Which should save the effect settings)Upon opening the song and effect again you will see the settings did not save --- yet they didIf you listen to the effect it seems to accually apply the save, but the parameters look all wrong. This seems to be the same that is happening with me in the code above.If you download a AudioUnit extension app and plug it in the same way in GB it will work as expected.I think GB is just saving `AUAudioUnit.fullState` in its "Songs".Apple's own AUAudioUnits seem to not be updating their parameters.I guess I am going to file a bug, but I just like to discuss on a forum to confirm things. I would love to get anyones thoughts.
Posted Last updated
.
Post marked as solved
1 Replies
458 Views
AVAudioUnitComponentManager.shared().components(passingTest: { (components, _) -> Bool in print(components.name) return true })This code prints either only the system AUs or also the installed AUv3s depending on the combination of Xcode and iOS as follows:Xcode 8.3.3 and iOS 10.3.1 prints AUv3sXcode 9 and iOS 10.3.1 prints AUv3sXcode 8.3.3 and iOS 11 prints AUv3s (sim link device files into Xcode 8.3.3)Xcode 9 and iOS 11 does NOT print AUv3sDoes anyone have any ideas what is going on? I am out of ideas.Thanks in advance for any help,Lucas Goossen
Posted Last updated
.
Post not yet marked as solved
0 Replies
286 Views
I use popover view extensivly in my AUv3 app (Goose EQ). There seems to be a bug or oversight with popover when they are preseted inside a extension viewcontroller. When there is a popover on screen in the extension the UI of the host app does not work. If the user taps ouside the popover but inside the extension then the popover is dismissed as expected. If the user taps ouside the extesion while a popup is up nothing happens and it seems like the whole iPad is frozen. Is there any chance I have missed something? To me the host UI should continue to work like normal and should not be blocked like the extension's view is.
Posted Last updated
.