QTMovieCurrentSizeAttribute и QTMovieSizeDidChangeNotification замен - PullRequest
5 голосов
/ 31 мая 2011

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

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

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

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

1 Ответ

0 голосов
/ 30 декабря 2011

Это полезно?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());
}
...