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,6 +59,11 @@ AVFPSRange qt_connection_framerates(AVCaptureConnection *videoConnection)
} }
} }
#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)
#endif
{
if (videoConnection.supportsVideoMaxFrameDuration) { if (videoConnection.supportsVideoMaxFrameDuration) {
const CMTime cmMax = videoConnection.videoMaxFrameDuration; const CMTime cmMax = videoConnection.videoMaxFrameDuration;
if (CMTimeCompare(cmMax, kCMTimeInvalid)) { if (CMTimeCompare(cmMax, kCMTimeInvalid)) {
@@ -66,6 +71,8 @@ AVFPSRange qt_connection_framerates(AVCaptureConnection *videoConnection)
newRange.first = 1. / maxSeconds; newRange.first = 1. / maxSeconds;
} }
} }
}
#endif
return newRange; return newRange;
} }

View File

@@ -76,32 +76,41 @@ 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 (maxFPS) {
if (!videoConnection.supportsVideoMinFrameDuration) if (!videoConnection.supportsVideoMinFrameDuration)
qDebugCamera() << Q_FUNC_INFO << "maximum framerate is not supported"; qDebugCamera() << Q_FUNC_INFO << "maximum framerate is not supported";
else else
minDuration = CMTimeMake(1, maxFPS); 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.supportsVideoMinFrameDuration)
videoConnection.videoMinFrameDuration = minDuration;
if (videoConnection.supportsVideoMaxFrameDuration) if (videoConnection.supportsVideoMaxFrameDuration)
videoConnection.videoMaxFrameDuration = maxDuration; videoConnection.videoMaxFrameDuration = maxDuration;
} }
#else
if (minFPS > 0.)
qDebugCamera() << Q_FUNC_INFO << "minimum framerate is not supported";
#endif
}
#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)