是否有人知道替换旧的QTMovieCurrentSizeAttribute
和QTMovieSizeDidChangeNotification
任务的正确方法?我正在尝试清除旧的弃用代码。
我发现QTMovieNaturalSizeDidChangeNotification
不能替代QTMovieSizeDidChangeNotification
。同样,QTMovieNaturalSizeAttribute
不是QTMovieCurrentSizeAttribute
的替代品。 Natural Size
指的是QTMovie
的原始分辨率,而Current Size
指的是显示QTMovie
的分辨率(这也可能是电影的分辨率)正在解码,可以从本机调整大小)。例如,如果源是变形的或具有非方形像素,则Natural
和Current Size
s将不相同。在QuickTime 7 Player的Movie Inspector窗口中很容易看到差异。
尽管我可以说,QuickTime X允许多个视图进入同一个QTMovie
,因此Current Size
的概念需要被新的东西取代。 (也许Current Size
功能已移至QTMovieView
?或解码器查询?)任何人都可以向我推荐新方法的文档或示例代码吗?
已更新为显示Natural
和Current ('Actual') Sizes
的电影检查器窗口的任何示例代码都是理想的,而不使用已弃用的代码。到目前为止,这一直非常令人困惑。
答案 0 :(得分:0)
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());
}