Замена QTMovieCurrentSizeAttribute и QTMovieSizeDidChangeNotification

Кто-нибудь знает, как правильно заменить старые задачи QTMovieCurrentSizeAttribute и QTMovieSizeDidChangeNotification? Я пытаюсь очистить старый устаревший код.

Я обнаружил, что QTMovieNaturalSizeDidChangeNotification не заменяет QTMovieSizeDidChangeNotification. Точно так же QTMovieNaturalSizeAttribute не является заменой QTMovieCurrentSizeAttribute. Natural Size относится к собственному разрешению QTMovie, а Current Size относится к разрешению, с которым отображается QTMovie (это также может быть разрешение, в котором декодируется фильм, размер которого может изменяться по сравнению с исходным). Например, если исходник был анаморфотным или имел неквадратные пиксели, то Natural и Current Sizes не будут одинаковыми. Разницу легко увидеть в окне Movie Inspector проигрывателя QuickTime 7.

Насколько я могу судить, QuickTime X допускает несколько представлений в одном и том же QTMovie, поэтому понятие Current Size нужно было заменить чем-то новым. (Возможно, функциональность Current Size была перемещена в QTMovieView? Или запрос декодера?) Может ли кто-нибудь дать мне ссылку на документацию или пример кода для нового способа?

Любой пример кода окна Инспектора фильмов, который был обновлен для отображения Natural и Current ('Actual') Sizes без использования устаревшего кода, был бы идеальным. До сих пор это было очень запутанным.


person Brian    schedule 31.05.2011    source источник


Ответы (1)


Это полезно? http://opensource.apple.com/source/WebCore/WebCore-955.66/platform/graphics/mac/MediaPlayerPrivateQTKit.mm

IntSize MediaPlayerPrivate::naturalSize() const
{
    if (!metaDataAvailable())
        return IntSize();

    // In spite of the name of this method, return QTMovieNaturalSizeAttribute transformed by the 
    // initial movie scale because the spec says intrinsic size is:
    //
    //    ... the dimensions of the resource in CSS pixels after taking into account the resource's 
   //    dimensions, aspect ratio, clean aperture, resolution, and so forth, as defined for the 
   //    format used by the resource

    NSSize naturalSize = [[m_qtMovie.get() attributeForKey:QTMovieNaturalSizeAttribute] sizeValue];
    return IntSize(naturalSize.width * m_scaleFactor.width(), naturalSize.height * m_scaleFactor.height());
}
person Jeremy Harris    schedule 30.12.2011
comment
Вероятно, более подходящим является определение cacheMovieScale в том же файле, который получает недокументированный атрибут с ключом @"QTMoviePreferredTransformAttribute", значением которого является NSAffineTransform. - person Peter Hosey; 30.12.2011