void CameraBinSession::setupCaptureResolution() { if (m_captureMode == QCamera::CaptureStillImage) { QSize resolution = m_imageEncodeControl->imageSettings().resolution(); //by default select the maximum supported resolution if (resolution.isEmpty()) { updateVideoSourceCaps(); bool continuous = false; QList<QSize> resolutions = supportedResolutions(qMakePair<int,int>(0,0), &continuous, QCamera::CaptureStillImage); if (!resolutions.isEmpty()) resolution = resolutions.last(); } QString previewCapsString = PREVIEW_CAPS_4_3; QSize viewfinderResolution = VIEWFINDER_RESOLUTION_4x3; if (!resolution.isEmpty()) { #if CAMERABIN_DEBUG qDebug() << Q_FUNC_INFO << "set image resolution" << resolution; #endif g_signal_emit_by_name(G_OBJECT(m_pipeline), SET_IMAGE_RESOLUTION, resolution.width(), resolution.height(), NULL); previewCapsString = QString("video/x-raw-rgb, width = (int) %1, height = (int) 480") .arg(resolution.width()*480/resolution.height()); if (!resolution.isEmpty()) { qreal aspectRatio = qreal(resolution.width()) / resolution.height(); if (aspectRatio < 1.4) viewfinderResolution = VIEWFINDER_RESOLUTION_4x3; else if (aspectRatio > 1.7) viewfinderResolution = VIEWFINDER_RESOLUTION_16x9; else viewfinderResolution = VIEWFINDER_RESOLUTION_3x2; } } GstCaps *previewCaps = gst_caps_from_string(previewCapsString.toLatin1()); g_object_set(G_OBJECT(m_pipeline), PREVIEW_CAPS_PROPERTY, previewCaps, NULL); gst_caps_unref(previewCaps); //on low res cameras the viewfinder resolution should not be bigger //then capture resolution if (viewfinderResolution.width() > resolution.width()) viewfinderResolution = resolution; #if CAMERABIN_DEBUG qDebug() << Q_FUNC_INFO << "set viewfinder resolution" << viewfinderResolution; #endif g_signal_emit_by_name(G_OBJECT(m_pipeline), SET_VIDEO_RESOLUTION_FPS, viewfinderResolution.width(), viewfinderResolution.height(), 0, // maximum framerate 1, // framerate denom NULL); } if (m_captureMode == QCamera::CaptureVideo) { QSize resolution = m_videoEncodeControl->videoSettings().resolution(); qreal framerate = m_videoEncodeControl->videoSettings().frameRate(); if (resolution.isEmpty()) { //select the hightest supported resolution updateVideoSourceCaps(); bool continuous = false; QList<QSize> resolutions = supportedResolutions(qMakePair<int,int>(0,0), &continuous, QCamera::CaptureVideo); if (!resolutions.isEmpty()) resolution = resolutions.last(); } if (!resolution.isEmpty() || framerate > 0) { #if CAMERABIN_DEBUG qDebug() << Q_FUNC_INFO << "set video resolution" << resolution; #endif g_signal_emit_by_name(G_OBJECT(m_pipeline), SET_VIDEO_RESOLUTION_FPS, resolution.width(), resolution.height(), 0, //framerate nom == max rate 1, // framerate denom == max rate NULL); } } }
void QMacPrintEnginePrivate::initialize() { Q_ASSERT(!session); Q_Q(QMacPrintEngine); if (!paintEngine) paintEngine = new QCoreGraphicsPaintEngine(); q->gccaps = paintEngine->gccaps; fullPage = false; if (PMCreateSession(&session) != noErr) session = 0; PMPrinter printer; if (session && PMSessionGetCurrentPrinter(session, &printer) == noErr) { QList<QVariant> resolutions = supportedResolutions(); if (!resolutions.isEmpty() && mode != QPrinter::ScreenResolution) { if (resolutions.count() > 1 && mode == QPrinter::HighResolution) { int max = 0; for (int i = 0; i < resolutions.count(); ++i) { int value = resolutions.at(i).toInt(); if (value > max) max = value; } resolution.hRes = resolution.vRes = max; } else { resolution.hRes = resolution.vRes = resolutions.at(0).toInt(); } if(resolution.hRes == 0) resolution.hRes = resolution.vRes = 600; } else { resolution.hRes = resolution.vRes = qt_defaultDpi(); } } bool settingsInitialized = (settings != 0); bool settingsOK = !settingsInitialized ? PMCreatePrintSettings(&settings) == noErr : true; if (settingsOK && !settingsInitialized) settingsOK = PMSessionDefaultPrintSettings(session, settings) == noErr; bool formatInitialized = (format != 0); bool formatOK = !formatInitialized ? PMCreatePageFormat(&format) == noErr : true; if (formatOK) { if (!formatInitialized) { formatOK = PMSessionDefaultPageFormat(session, format) == noErr; } formatOK = PMSessionValidatePageFormat(session, format, kPMDontWantBoolean) == noErr; } #ifndef Q_OS_MAC64 # if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4) if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_4) # endif { if(paintEngine->type() == QPaintEngine::CoreGraphics) { CFStringRef strings[1] = { kPMGraphicsContextCoreGraphics }; QCFType<CFArrayRef> contextArray = CFArrayCreate(kCFAllocatorDefault, reinterpret_cast<const void **>(strings), 1, &kCFTypeArrayCallBacks); OSStatus err = PMSessionSetDocumentFormatGeneration(session, kPMDocumentFormatPDF, contextArray, 0); if(err != noErr) { qWarning("QMacPrintEngine::initialize: Cannot set format generation to PDF: %ld", err); state = QPrinter::Error; } } } #endif if (!settingsOK || !formatOK) { qWarning("QMacPrintEngine::initialize: Unable to initialize QPainter"); state = QPrinter::Error; } QHash<QMacPrintEngine::PrintEnginePropertyKey, QVariant>::const_iterator propC; for (propC = valueCache.constBegin(); propC != valueCache.constEnd(); propC++) { q->setProperty(propC.key(), propC.value()); } }