Esempio n. 1
0
        // Skip to a given time (in s)
        private void _Skip()
        {
            float skipTime = RequestTime; //Copy to variable to have consistent checks

            if (skipTime < 0 || skipTime >= Length)
            {
                skipTime = 0;
            }

            try
            {
                CAcinerella.AcSeek(_Videodecoder, -1, (Int64)(skipTime * 1000f));
            }
            catch (Exception e)
            {
                CLog.LogError("Error seeking video file \"" + _FileName + "\": " + e.Message);
            }
            _LastDecodedTime = skipTime;

            _FrameAvailable = false;
        }
Esempio n. 2
0
        private bool _DropWithSeek(float videoTime, int frameDropCount)
        {
            bool hasFrameDecoded = false;

            try
            {
                hasFrameDecoded = CAcinerella.AcSeek(_Videodecoder, 0, (long)videoTime * 1000L);
            }
            catch (Exception)
            {
                CLog.LogError("Error AcSeek " + _FileName);
            }

            if (!hasFrameDecoded)
            {
                // Fallback to frame skipping
                _DropSeekEnabled = false;
                hasFrameDecoded  = _DropWithSkip(frameDropCount);
            }

            return(hasFrameDecoded);
        }