Чтобы получить размерность AVAsset
, вы должны рассчитать объединение всех визуальных дорожек визуальных дорожек (после применения их соответствующего предпочтительного преобразования):
CGRect unionRect = CGRectZero;
for (AVAssetTrack *track in [asset tracksWithMediaCharacteristic:AVMediaCharacteristicVisual]) {
CGRect trackRect = CGRectApplyAffineTransform(CGRectMake(0.f,
0.f,
track.naturalSize.width,
track.naturalSize.height),
track.preferredTransform);
unionRect = CGRectUnion(unionRect, trackRect);
}
CGSize naturalSize = unionRect.size;
Методы, основанные на CGSizeApplyAffineTransform
, терпят неудачу когда ваш ресурс содержит треки с нетривиальным аффинным преобразованием (например, повороты на 45 градусов) или если ваш ресурс содержит треки с различным происхождением (например, два трека, воспроизводимые рядом с началом второго трека, увеличиваются по ширине первого дорожка).
См .: MediaPlayerPrivateAVFoundationCF::sizeChanged()
на https://opensource.apple.com/source/WebCore/WebCore-7536.30.2/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp
Я думаю, что Вы предназначаетесь для содержания ВСЕЙ ЛОГИКИ под Вашим if
оператор. В основном:
' PRINTS EVERYTHING EXCEPT 4
For i = 0 To 10
' you want to say
' If i = 4 CONTINUE but VBScript has no continue
If i <> 4 Then ' just invert the logic
WSH.Echo( i )
End If
Next
Это может сделать код немного дольше, но некоторым людям не нравится break
или continue
так или иначе.