Пример #1
0
        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);
        }
Пример #2
0
        // the pointers in cinData_t will remain valid until the next UpdateForTime() call
        public virtual CinData ImageForTime(int milliseconds)
        {
            CinData c = default;

            return(c);
        }