Fix DSLR pause live view
This commit is contained in:
parent
967cf5329a
commit
28d3d5375a
1 changed files with 51 additions and 40 deletions
|
@ -442,7 +442,7 @@ void StopMotion::disconnectAllCameras() {
|
||||||
m_proxyImageDimensions = TDimension(0, 0);
|
m_proxyImageDimensions = TDimension(0, 0);
|
||||||
|
|
||||||
if (m_sessionOpen && getCameraCount() > 0) {
|
if (m_sessionOpen && getCameraCount() > 0) {
|
||||||
if (m_liveViewStatus > 0) {
|
if (m_liveViewStatus > LiveViewClosed) {
|
||||||
endCanonLiveView();
|
endCanonLiveView();
|
||||||
}
|
}
|
||||||
closeCameraSession();
|
closeCameraSession();
|
||||||
|
@ -464,7 +464,8 @@ void StopMotion::disconnectAllCameras() {
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
void StopMotion::onPlaybackChanged() {
|
void StopMotion::onPlaybackChanged() {
|
||||||
if (TApp::instance()->getCurrentFrame()->isPlaying() || m_liveViewStatus == 0)
|
if (TApp::instance()->getCurrentFrame()->isPlaying() ||
|
||||||
|
m_liveViewStatus == LiveViewClosed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int r0, r1, step;
|
int r0, r1, step;
|
||||||
|
@ -996,7 +997,8 @@ void StopMotion::setXSheetFrameNumber(int frameNumber) {
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
bool StopMotion::loadLineUpImage() {
|
bool StopMotion::loadLineUpImage() {
|
||||||
if (m_liveViewStatus < 1) return false;
|
if (m_liveViewStatus == LiveViewClosed || m_liveViewStatus == LiveViewPaused)
|
||||||
|
return false;
|
||||||
m_hasLineUpImage = false;
|
m_hasLineUpImage = false;
|
||||||
// first see if the level exists in the current level set
|
// first see if the level exists in the current level set
|
||||||
ToonzScene *currentScene = TApp::instance()->getCurrentScene()->getScene();
|
ToonzScene *currentScene = TApp::instance()->getCurrentScene()->getScene();
|
||||||
|
@ -1282,7 +1284,7 @@ void StopMotion::setSubsampling() {
|
||||||
void StopMotion::onTimeout() {
|
void StopMotion::onTimeout() {
|
||||||
int currentFrame = TApp::instance()->getCurrentFrame()->getFrame();
|
int currentFrame = TApp::instance()->getCurrentFrame()->getFrame();
|
||||||
// int destinationFrame = m_xSheetFrameNumber - 1;
|
// int destinationFrame = m_xSheetFrameNumber - 1;
|
||||||
if (m_liveViewStatus > 0 && m_liveViewStatus < 3 &&
|
if (m_liveViewStatus > LiveViewClosed && m_liveViewStatus < LiveViewPaused &&
|
||||||
!TApp::instance()->getCurrentFrame()->isPlaying()) {
|
!TApp::instance()->getCurrentFrame()->isPlaying()) {
|
||||||
if (getAlwaysLiveView() || (currentFrame == m_xSheetFrameNumber - 1)) {
|
if (getAlwaysLiveView() || (currentFrame == m_xSheetFrameNumber - 1)) {
|
||||||
if (!m_usingWebcam) {
|
if (!m_usingWebcam) {
|
||||||
|
@ -1298,11 +1300,11 @@ void StopMotion::onTimeout() {
|
||||||
} else {
|
} else {
|
||||||
m_showLineUpImage = true;
|
m_showLineUpImage = true;
|
||||||
}
|
}
|
||||||
} else if (m_liveViewStatus == 2) {
|
} else if (m_liveViewStatus == LiveViewOpen) {
|
||||||
m_liveViewStatus = 3;
|
m_liveViewStatus = LiveViewPaused;
|
||||||
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
TApp::instance()->getCurrentScene()->notifySceneChanged();
|
||||||
}
|
}
|
||||||
} else if (m_liveViewStatus == 3 && !m_userCalledPause) {
|
} else if (m_liveViewStatus == LiveViewPaused && !m_userCalledPause) {
|
||||||
if (getAlwaysLiveView() || (currentFrame == m_xSheetFrameNumber - 1)) {
|
if (getAlwaysLiveView() || (currentFrame == m_xSheetFrameNumber - 1)) {
|
||||||
if (!m_usingWebcam) {
|
if (!m_usingWebcam) {
|
||||||
#ifdef WITH_CANON
|
#ifdef WITH_CANON
|
||||||
|
@ -1317,8 +1319,8 @@ void StopMotion::onTimeout() {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void StopMotion::onReviewTimeout() {
|
void StopMotion::onReviewTimeout() {
|
||||||
if (m_liveViewStatus > 0) {
|
if (m_liveViewStatus > LiveViewClosed) {
|
||||||
m_liveViewStatus = 2;
|
m_liveViewStatus = LiveViewOpen;
|
||||||
m_timer->start(40);
|
m_timer->start(40);
|
||||||
}
|
}
|
||||||
TApp::instance()->getCurrentFrame()->setFrame(m_xSheetFrameNumber - 1);
|
TApp::instance()->getCurrentFrame()->setFrame(m_xSheetFrameNumber - 1);
|
||||||
|
@ -1649,7 +1651,7 @@ void StopMotion::captureImage() {
|
||||||
#ifdef WITH_CANON
|
#ifdef WITH_CANON
|
||||||
sessionOpen = m_sessionOpen;
|
sessionOpen = m_sessionOpen;
|
||||||
#endif
|
#endif
|
||||||
if (!m_usingWebcam && !sessionOpen) {
|
if ((!m_usingWebcam && !sessionOpen) || m_liveViewStatus == LiveViewPaused) {
|
||||||
DVGui::warning(tr("Please start live view before capturing an image."));
|
DVGui::warning(tr("Please start live view before capturing an image."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1661,8 +1663,8 @@ void StopMotion::captureImage() {
|
||||||
}
|
}
|
||||||
if (getReviewTime() > 0 && !m_isTimeLapse) {
|
if (getReviewTime() > 0 && !m_isTimeLapse) {
|
||||||
m_timer->stop();
|
m_timer->stop();
|
||||||
if (m_liveViewStatus > 0) {
|
if (m_liveViewStatus > LiveViewClosed) {
|
||||||
m_liveViewStatus = 3;
|
m_liveViewStatus = LiveViewPaused;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_lineUpImage = m_liveViewImage;
|
m_lineUpImage = m_liveViewImage;
|
||||||
|
@ -1692,8 +1694,8 @@ void StopMotion::captureImage() {
|
||||||
m_timer->stop();
|
m_timer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_liveViewStatus > 0 && !m_isTimeLapse) {
|
if (m_liveViewStatus > LiveViewClosed && !m_isTimeLapse) {
|
||||||
m_liveViewStatus = 3;
|
m_liveViewStatus = LiveViewPaused;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_hasLiveViewImage) {
|
if (m_hasLiveViewImage) {
|
||||||
|
@ -2189,7 +2191,7 @@ void StopMotion::refreshFrameInfo() {
|
||||||
sessionOpen = m_sessionOpen;
|
sessionOpen = m_sessionOpen;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((!sessionOpen && m_liveViewStatus < 2) && !m_usingWebcam) {
|
if ((!sessionOpen && m_liveViewStatus < LiveViewOpen) && !m_usingWebcam) {
|
||||||
m_frameInfoText = "";
|
m_frameInfoText = "";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2579,7 +2581,7 @@ void StopMotion::changeCameras(int index) {
|
||||||
|
|
||||||
#ifdef WITH_CANON
|
#ifdef WITH_CANON
|
||||||
if (m_sessionOpen && getCameraCount() > 0) {
|
if (m_sessionOpen && getCameraCount() > 0) {
|
||||||
if (m_liveViewStatus > 0) {
|
if (m_liveViewStatus > LiveViewClosed) {
|
||||||
endCanonLiveView();
|
endCanonLiveView();
|
||||||
closeCameraSession();
|
closeCameraSession();
|
||||||
}
|
}
|
||||||
|
@ -2767,7 +2769,7 @@ bool StopMotion::initWebcam(int index) {
|
||||||
|
|
||||||
void StopMotion::releaseWebcam() {
|
void StopMotion::releaseWebcam() {
|
||||||
m_cvWebcam.release();
|
m_cvWebcam.release();
|
||||||
m_liveViewStatus = 0;
|
m_liveViewStatus = LiveViewClosed;
|
||||||
emit(liveViewStopped());
|
emit(liveViewStopped());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2782,7 +2784,7 @@ void StopMotion::setWebcamResolution(QString resolution) {
|
||||||
// the split text must be "<width>" "x" and "<height>"
|
// the split text must be "<width>" "x" and "<height>"
|
||||||
if (texts.size() != 3) return;
|
if (texts.size() != 3) return;
|
||||||
int tempStatus = m_liveViewStatus;
|
int tempStatus = m_liveViewStatus;
|
||||||
m_liveViewStatus = 0;
|
m_liveViewStatus = LiveViewClosed;
|
||||||
bool startTimer = false;
|
bool startTimer = false;
|
||||||
if (m_timer->isActive()) {
|
if (m_timer->isActive()) {
|
||||||
m_timer->stop();
|
m_timer->stop();
|
||||||
|
@ -2854,7 +2856,7 @@ void StopMotion::getWebcamImage() {
|
||||||
memcpy(rawData, imgBuf, size);
|
memcpy(rawData, imgBuf, size);
|
||||||
m_liveViewImage->unlock();
|
m_liveViewImage->unlock();
|
||||||
m_hasLiveViewImage = true;
|
m_hasLiveViewImage = true;
|
||||||
m_liveViewStatus = 2;
|
m_liveViewStatus = LiveViewOpen;
|
||||||
if (m_hasLiveViewImage &&
|
if (m_hasLiveViewImage &&
|
||||||
(m_liveViewDpi.x == 0.0 || m_liveViewImageDimensions.lx == 0)) {
|
(m_liveViewDpi.x == 0.0 || m_liveViewImageDimensions.lx == 0)) {
|
||||||
TCamera *camera =
|
TCamera *camera =
|
||||||
|
@ -2895,7 +2897,7 @@ bool StopMotion::toggleLiveView() {
|
||||||
sessionOpen = m_sessionOpen;
|
sessionOpen = m_sessionOpen;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((sessionOpen || m_usingWebcam) && m_liveViewStatus == 0) {
|
if ((sessionOpen || m_usingWebcam) && m_liveViewStatus == LiveViewClosed) {
|
||||||
m_liveViewDpi = TPointD(0.0, 0.0);
|
m_liveViewDpi = TPointD(0.0, 0.0);
|
||||||
m_liveViewImageDimensions = TDimension(0, 0);
|
m_liveViewImageDimensions = TDimension(0, 0);
|
||||||
if (!m_usingWebcam) {
|
if (!m_usingWebcam) {
|
||||||
|
@ -2903,14 +2905,15 @@ bool StopMotion::toggleLiveView() {
|
||||||
startCanonLiveView();
|
startCanonLiveView();
|
||||||
#endif
|
#endif
|
||||||
} else
|
} else
|
||||||
m_liveViewStatus = 1;
|
m_liveViewStatus = LiveViewStarting;
|
||||||
loadLineUpImage();
|
loadLineUpImage();
|
||||||
m_timer->start(40);
|
m_timer->start(40);
|
||||||
emit(liveViewChanged(true));
|
emit(liveViewChanged(true));
|
||||||
Preferences::instance()->setValue(rewindAfterPlayback, false);
|
Preferences::instance()->setValue(rewindAfterPlayback, false);
|
||||||
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
|
||||||
return true;
|
return true;
|
||||||
} else if ((sessionOpen || m_usingWebcam) && m_liveViewStatus > 0) {
|
} else if ((sessionOpen || m_usingWebcam) &&
|
||||||
|
m_liveViewStatus > LiveViewClosed) {
|
||||||
if (!m_usingWebcam) {
|
if (!m_usingWebcam) {
|
||||||
#ifdef WITH_CANON
|
#ifdef WITH_CANON
|
||||||
endCanonLiveView();
|
endCanonLiveView();
|
||||||
|
@ -2934,14 +2937,14 @@ bool StopMotion::toggleLiveView() {
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
void StopMotion::pauseLiveView() {
|
void StopMotion::pauseLiveView() {
|
||||||
if (m_liveViewStatus == 2) {
|
if (m_liveViewStatus == LiveViewOpen) {
|
||||||
m_liveViewStatus = 3;
|
m_liveViewStatus = LiveViewPaused;
|
||||||
m_userCalledPause = true;
|
m_userCalledPause = true;
|
||||||
emit(liveViewStopped());
|
emit(liveViewStopped());
|
||||||
} else if (m_liveViewStatus == 3) {
|
} else if (m_liveViewStatus == LiveViewPaused) {
|
||||||
m_liveViewStatus = 2;
|
m_liveViewStatus = LiveViewOpen;
|
||||||
m_userCalledPause = false;
|
m_userCalledPause = false;
|
||||||
} else if (m_liveViewStatus == 0) {
|
} else if (m_liveViewStatus == LiveViewClosed) {
|
||||||
toggleLiveView();
|
toggleLiveView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2998,7 +3001,7 @@ int StopMotion::getCameraCount() {
|
||||||
if (m_count == 0) {
|
if (m_count == 0) {
|
||||||
m_error = EDS_ERR_DEVICE_NOT_FOUND;
|
m_error = EDS_ERR_DEVICE_NOT_FOUND;
|
||||||
m_sessionOpen = false;
|
m_sessionOpen = false;
|
||||||
m_liveViewStatus = 0;
|
m_liveViewStatus = LiveViewClosed;
|
||||||
}
|
}
|
||||||
return m_count;
|
return m_count;
|
||||||
} else
|
} else
|
||||||
|
@ -3794,7 +3797,8 @@ EdsError StopMotion::endCanonLiveView() {
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
EdsError StopMotion::zoomLiveView() {
|
EdsError StopMotion::zoomLiveView() {
|
||||||
if (!m_sessionOpen || !m_liveViewStatus > 0) return EDS_ERR_DEVICE_INVALID;
|
if (!m_sessionOpen || !m_liveViewStatus > LiveViewClosed)
|
||||||
|
return EDS_ERR_DEVICE_INVALID;
|
||||||
EdsError err = EDS_ERR_OK;
|
EdsError err = EDS_ERR_OK;
|
||||||
if (m_pickLiveViewZoom) toggleZoomPicking();
|
if (m_pickLiveViewZoom) toggleZoomPicking();
|
||||||
if (m_liveViewZoom == 1) {
|
if (m_liveViewZoom == 1) {
|
||||||
|
@ -3824,7 +3828,7 @@ void StopMotion::makeZoomPoint(TPointD pos) {
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
void StopMotion::toggleZoomPicking() {
|
void StopMotion::toggleZoomPicking() {
|
||||||
if (!m_sessionOpen || !m_liveViewStatus > 0) return;
|
if (!m_sessionOpen || !m_liveViewStatus > LiveViewClosed) return;
|
||||||
if (m_pickLiveViewZoom) {
|
if (m_pickLiveViewZoom) {
|
||||||
m_pickLiveViewZoom = false;
|
m_pickLiveViewZoom = false;
|
||||||
toggleNumpadForFocusCheck(false);
|
toggleNumpadForFocusCheck(false);
|
||||||
|
@ -4020,7 +4024,8 @@ EdsError StopMotion::downloadEVFData() {
|
||||||
if (!m_converterSucceeded) return EDS_ERR_UNEXPECTED_EXCEPTION;
|
if (!m_converterSucceeded) return EDS_ERR_UNEXPECTED_EXCEPTION;
|
||||||
|
|
||||||
// make sure not to set to LiveViewOpen if it has been turned off
|
// make sure not to set to LiveViewOpen if it has been turned off
|
||||||
if (m_liveViewStatus > 0) {
|
if (m_liveViewStatus > LiveViewClosed &&
|
||||||
|
m_liveViewStatus < LiveViewPaused) {
|
||||||
m_liveViewStatus = LiveViewOpen;
|
m_liveViewStatus = LiveViewOpen;
|
||||||
}
|
}
|
||||||
emit(newLiveViewImageReady());
|
emit(newLiveViewImageReady());
|
||||||
|
@ -4233,7 +4238,7 @@ EdsError StopMotion::handleStateEvent(EdsStateEvent event, EdsUInt32 parameter,
|
||||||
}
|
}
|
||||||
if (event == kEdsStateEvent_WillSoonShutDown) {
|
if (event == kEdsStateEvent_WillSoonShutDown) {
|
||||||
instance()->extendCameraOnTime();
|
instance()->extendCameraOnTime();
|
||||||
if (instance()->m_liveViewStatus > 1) {
|
if (instance()->m_liveViewStatus > LiveViewStarting) {
|
||||||
instance()->toggleLiveView();
|
instance()->toggleLiveView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4823,15 +4828,21 @@ void StopMotion::sendSerialData() {
|
||||||
std::string text = response.toStdString();
|
std::string text = response.toStdString();
|
||||||
}
|
}
|
||||||
|
|
||||||
// for not data sending is not implemented yet, just the frame number.
|
// for not data sending is not implemented yet, just the frame number.
|
||||||
// These lines are here to be a reference for using column data as movement.
|
// These lines are here to be a reference for using column data as movement.
|
||||||
//TDoubleParam *param = TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getParam(TStageObject::T_X);
|
// TDoubleParam *param =
|
||||||
//double value = TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getParam(TStageObject::T_X, m_xSheetFrameNumber - 1);
|
// TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getParam(TStageObject::T_X);
|
||||||
//QString isCam = TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getId().isCamera() ? "yep" : "nope";
|
// double value =
|
||||||
//std::string name = TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getName();
|
// TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getParam(TStageObject::T_X,
|
||||||
//TMeasure *measure =param->getMeasure();
|
// m_xSheetFrameNumber - 1);
|
||||||
//const TUnit *unit = measure->getCurrentUnit();
|
// QString isCam =
|
||||||
//double newValue = unit->convertTo(value);
|
// TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getId().isCamera()
|
||||||
|
// ? "yep" : "nope";
|
||||||
|
// std::string name =
|
||||||
|
// TApp::instance()->getCurrentScene()->getScene()->getXsheet()->getStageObjectTree()->getStageObject(0)->getName();
|
||||||
|
// TMeasure *measure =param->getMeasure();
|
||||||
|
// const TUnit *unit = measure->getCurrentUnit();
|
||||||
|
// double newValue = unit->convertTo(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in a new issue