static void StopRecording(void) { if(suppressMovieStop) return; resetDMCacc=movieSyncHackOn=0; DoEncode(0,0,1); /* Write a dummy timestamp value so that the movie will keep "playing" after user input has stopped. */ // finish header FlushHeader(); // FIXME: truncate movie to length // ftruncate(); fclose(slots[current - 1]); MovieStatus[current - 1] = 1; current=0; FCEU_DispMessage("Movie recording stopped."); }
tbool CExportDSPTask::DoEncode_InALoop(tbool bWrite) { tbool bDone = false; tbool bSuccess = true; tuint32 uiTimeMS0 = ITime::GetTimeMS(); tint32 iActionOrderSave = miActionOrder; do { if (!DoEncode(bWrite)) { bSuccess = false; } else { tuint32 uiDiff = ITime::GetTimeMS() - uiTimeMS0; if ((uiDiff >= kiStopAfterProcessingMS) || (miActionOrder != iActionOrderSave)) { bDone = true; } } } while ((bSuccess) && (!bDone)); return bSuccess; }
tbool CExportClipTask::DoWork() { tbool bSuccess = false; switch (miActionOrder) { case geExportClip_Before: { sOut = sDestFolder + sDestNameAndExt; if (bDoEncode) { mpEncoder = ac::IEncoder::Create(meCodecDst); if (meCodecDst == ac::geAudioCodecWave) msProgress = "Exporting"; else msProgress = "Compressing"; } if (bDoCopy) msProgress = "Copying"; if (IsSilence()) { msProgress += " silent bit"; } else { msProgress += std::string(" '") + sClipName + "'"; muiProgressIx = 0; muiProgressTarget = muiDuration - muiStartIx; } miActionOrder++; bSuccess = (mpEncoder != NULL); //true; } break; case geExportClip_Action: { if (bDoEncode) { bSuccess = DoEncode(); } else if (bDoCopy) { bSuccess = DoCopy(); } } break; case geExportClip_After: { msProgress = "Export done"; muiProgressIx = muiProgressTarget = 1; miActionOrder++; bSuccess = true; } break; default: // Why are we here? break; } if (!bSuccess) { miActionOrder = geExportClip_Done; } return bSuccess; } // DoWork