public override CinData ImageForTime(int milliseconds) { CinData cinData = default; if (milliseconds < 0) { milliseconds = 0; } if (r_skipROQ.Bool || status == CinStatus.FMV_EOF || status == CinStatus.FMV_IDLE) { return(cinData); } if (buf == null || startTime == -1) { if (startTime == -1) { RoQReset(); } startTime = milliseconds; } tfps = (int)((milliseconds - startTime) * frameRate / 1000); if (tfps < 0) { tfps = 0; } if (tfps < numQuads) { RoQReset(); buf = null; status = CinStatus.FMV_PLAY; } if (buf == null) { while (buf == null) { RoQInterrupt(); } } else { while (tfps != numQuads && status == CinStatus.FMV_PLAY) { RoQInterrupt(); } } if (status == CinStatus.FMV_LOOPED) { status = CinStatus.FMV_PLAY; while (buf == null && status == CinStatus.FMV_PLAY) { RoQInterrupt(); } startTime = milliseconds; } if (status == CinStatus.FMV_EOF) { if (looping) { RoQReset(); buf = null; if (status == CinStatus.FMV_LOOPED) { status = CinStatus.FMV_PLAY; } while (buf == null && status == CinStatus.FMV_PLAY) { RoQInterrupt(); } startTime = milliseconds; } else { status = CinStatus.FMV_IDLE; RoQShutdown(); } } cinData.imageWidth = CIN_WIDTH; cinData.imageHeight = CIN_HEIGHT; cinData.status = (int)status; cinData.image = buf; return(cinData); }
// the pointers in cinData_t will remain valid until the next UpdateForTime() call public virtual CinData ImageForTime(int milliseconds) { CinData c = default; return(c); }