CameraBinSession::CameraBinSession(QObject *parent) :QObject(parent), m_state(QCamera::UnloadedState), m_pendingState(QCamera::UnloadedState), m_recordingActive(false), m_pendingResolutionUpdate(false), m_muted(false), m_busy(false), m_captureMode(QCamera::CaptureStillImage), m_audioInputFactory(0), m_videoInputFactory(0), m_viewfinder(0), m_viewfinderInterface(0), m_pipeline(0), m_videoSrc(0), m_viewfinderElement(0), m_viewfinderHasChanged(true), m_videoInputHasChanged(true), m_sourceCaps(0), m_audioSrc(0), m_audioConvert(0), m_capsFilter(0), m_fileSink(0), m_audioEncoder(0), m_muxer(0) { m_pipeline = gst_element_factory_make("camerabin", "camerabin"); g_signal_connect(G_OBJECT(m_pipeline), "notify::idle", G_CALLBACK(updateBusyStatus), this); gstRef(m_pipeline); m_bus = gst_element_get_bus(m_pipeline); m_busHelper = new QGstreamerBusHelper(m_bus, this); m_busHelper->installSyncEventFilter(this); connect(m_busHelper, SIGNAL(message(QGstreamerMessage)), SLOT(handleBusMessage(QGstreamerMessage))); m_audioEncodeControl = new CameraBinAudioEncoder(this); m_videoEncodeControl = new CameraBinVideoEncoder(this); m_imageEncodeControl = new CameraBinImageEncoder(this); m_recorderControl = new CameraBinRecorder(this); m_mediaContainerControl = new CameraBinContainer(this); m_cameraExposureControl = new CameraBinExposure(this); m_cameraFlashControl = new CameraBinFlash(this); m_cameraFocusControl = new CameraBinFocus(this); m_imageProcessingControl = new CameraBinImageProcessing(this); m_cameraLocksControl = new CameraBinLocks(this); m_captureDestinationControl = new CameraBinCaptureDestination(this); m_captureBufferFormatControl = new CameraBinCaptureBufferFormat(this); }
CameraBinImageCapture::CameraBinImageCapture(CameraBinSession *session) :QCameraImageCaptureControl(session) , m_session(session) , m_ready(false) , m_requestId(0) , m_jpegEncoderElement(0) , m_metadataMuxerElement(0) { connect(m_session, SIGNAL(stateChanged(QCamera::State)), SLOT(updateState())); connect(m_session, SIGNAL(imageExposed(int)), this, SIGNAL(imageExposed(int))); connect(m_session, SIGNAL(imageCaptured(int,QImage)), this, SIGNAL(imageCaptured(int,QImage))); connect(m_session, SIGNAL(busMessage(QGstreamerMessage)), SLOT(handleBusMessage(QGstreamerMessage))); g_signal_connect(G_OBJECT(m_session->cameraBin()), IMAGE_DONE_SIGNAL, G_CALLBACK(handleImageSaved), this); }