CMVideoFormatDescriptionGetCleanAperture () Быстрая ошибка

Я не могу заставить CMVideoFormatDescriptionGetCleanAperture() работать. С помощью

 var videoDescriptionRef = port.formatDescription as CMVideoFormatDescriptionRef var cleanAperture = CMVideoFormatDescriptionGetCleanAperture(videoDescriptionRef, true) 

или

 var cleanAperture = CMVideoFormatDescriptionGetCleanAperture(port.formatDescription, true) 

дает следующие ошибки:

 Cannot convert expression's type 'CMVideoFormatDescriptionRef' to type 'CMVideoFormatDescriptionRef' 

И второе

 Could not find an overlad for '__conversion' that accepts the supplied arguments 

Кто-нибудь знает, как исправить это, или может кто-нибудь указать какие-либо ошибки в получении описания формата для получения чистой апертуры?

Сама CMFormatDescription не имеет члена takeUnretainedValue . Он является членом Unmanaged<T> . Сначала вам нужно определить неуправляемую переменную, получить значение в ней, а затем сохранить ее.

Поскольку я не знаю, как вы создали port.formatDescription , вот пример, где formatDescription создается из PPS / SPS из видео AVC.

 // create the receiving unmanaged variable var formatDescription: Unmanaged<CMVideoFormatDescription>? // call the not annotated method, this method will fill in formatDescription which is Unmanaged<T> let result = CMVideoFormatDescriptionCreateFromH264ParameterSets(nil, UInt(parameterSets.count), parameterSets, parameterSetSizes, 4, &formatDescription) // check result, yada yada yada before continuing // now we can actually retain the value let formatDescriptionRef = formatDescription!.takeUnretainedValue() as CMVideoFormatDescriptionRef // and we can do what ever we want with it in Swift without caring anymore. var cleanAperture = CMVideoFormatDescriptionGetCleanAperture(formatDescriptionRef, 1) 
  1. Создать неуправляемый тип
  2. Используйте этот неуправляемый тип в не аннотированном методе
  3. Сохранить значение
  4. Работайте с ним, не задумываясь о том, как вы его создали.

Так что скорректируйте свой код, где вы создаете port.formatDescription как неуправляемый, и вы должны быть хорошими.

Попробуйте использовать .takeUnretainedValue () следующим образом:

 var videoDescription : CMVideoFormatDescription = port.formatDescription.takeUnretainedValue() var cleanAperture = CMVideoFormatDescriptionGetCleanAperture(videoDescription, true) 
  • Воспроизведение / Пауза Звуковая кнопка Swift
  • Когда dateByAddingComponents: toDate: options return nil?
  • AnyObject не работает в Xcode8 beta6?
  • Как использовать общий класс без аргумента типа в Swift?
  • Swift, как получить 12-часовой формат, если система 24-часовой формат
  • Как программно поставить UISwitch в SpriteKit / Skcene
  • cast from для несвязанного типа NSMutableDictionary всегда сбой Предупреждение
  • дополнение дела if
  • dispatch_group_leave при добавлении нового дочернего элемента
  • Не могу называть segue в коде (Swift)
  • Невозможно преобразовать значение типа «NSObject -> () -> PostFeed» в ожидаемый тип аргумента «AnyObject?»
  • Давайте будем гением компьютера.