AVFoundation: fix compilation on OSX < 10.9.

AVCaptureConnection.videoMaxFrameDuration is supported only since 10.9.

Task-number: QTBUG-46159
Change-Id: I8ea57b69e97ea3802b5c444c57ab090c4edf31e2
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
This commit is contained in:
Yoann Lopes
2015-05-19 13:43:14 +02:00
parent b0111ce5f5
commit 0df8d83932
2 changed files with 37 additions and 21 deletions

View File

@@ -59,13 +59,20 @@ AVFPSRange qt_connection_framerates(AVCaptureConnection *videoConnection)
} }
} }
if (videoConnection.supportsVideoMaxFrameDuration) { #if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_9, __IPHONE_5_0)
const CMTime cmMax = videoConnection.videoMaxFrameDuration; #if QT_OSX_DEPLOYMENT_TARGET_BELOW(__MAC_10_9)
if (CMTimeCompare(cmMax, kCMTimeInvalid)) { if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_9)
if (const Float64 maxSeconds = CMTimeGetSeconds(cmMax)) #endif
newRange.first = 1. / maxSeconds; {
if (videoConnection.supportsVideoMaxFrameDuration) {
const CMTime cmMax = videoConnection.videoMaxFrameDuration;
if (CMTimeCompare(cmMax, kCMTimeInvalid)) {
if (const Float64 maxSeconds = CMTimeGetSeconds(cmMax))
newRange.first = 1. / maxSeconds;
}
} }
} }
#endif
return newRange; return newRange;
} }

View File

@@ -76,31 +76,40 @@ void qt_set_framerate_limits(AVCaptureConnection *videoConnection,
return; return;
} }
const qreal minFPS = settings.minimumFrameRate();
const qreal maxFPS = settings.maximumFrameRate(); const qreal maxFPS = settings.maximumFrameRate();
CMTime minDuration = kCMTimeInvalid; CMTime minDuration = kCMTimeInvalid;
CMTime maxDuration = kCMTimeInvalid; if (maxFPS > 0.) {
if (minFPS > 0. || maxFPS > 0.) { if (!videoConnection.supportsVideoMinFrameDuration)
if (maxFPS) { qDebugCamera() << Q_FUNC_INFO << "maximum framerate is not supported";
if (!videoConnection.supportsVideoMinFrameDuration) else
qDebugCamera() << Q_FUNC_INFO << "maximum framerate is not supported"; minDuration = CMTimeMake(1, maxFPS);
else }
minDuration = CMTimeMake(1, maxFPS); if (videoConnection.supportsVideoMinFrameDuration)
} videoConnection.videoMinFrameDuration = minDuration;
if (minFPS) { const qreal minFPS = settings.minimumFrameRate();
#if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_9, __IPHONE_5_0)
#if QT_OSX_DEPLOYMENT_TARGET_BELOW(__MAC_10_9)
if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_9) {
if (minFPS > 0.)
qDebugCamera() << Q_FUNC_INFO << "minimum framerate is not supported";
} else
#endif
{
CMTime maxDuration = kCMTimeInvalid;
if (minFPS > 0.) {
if (!videoConnection.supportsVideoMaxFrameDuration) if (!videoConnection.supportsVideoMaxFrameDuration)
qDebugCamera() << Q_FUNC_INFO << "minimum framerate is not supported"; qDebugCamera() << Q_FUNC_INFO << "minimum framerate is not supported";
else else
maxDuration = CMTimeMake(1, minFPS); maxDuration = CMTimeMake(1, minFPS);
} }
if (videoConnection.supportsVideoMaxFrameDuration)
videoConnection.videoMaxFrameDuration = maxDuration;
} }
#else
if (videoConnection.supportsVideoMinFrameDuration) if (minFPS > 0.)
videoConnection.videoMinFrameDuration = minDuration; qDebugCamera() << Q_FUNC_INFO << "minimum framerate is not supported";
if (videoConnection.supportsVideoMaxFrameDuration) #endif
videoConnection.videoMaxFrameDuration = maxDuration;
} }
#if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_7, __IPHONE_7_0) #if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_7, __IPHONE_7_0)