Exemplo n.º 1
0
        private VideoState?ReadVmdDecoder(IntPtr decoderAddr)
        {
            var coktelDecoderAddr = MemoryReader.ReadIntPtr(decoderAddr + vmdAdvancedDecoderDecoderOffset);

            var curFrame = MemoryReader.ReadInt32(coktelDecoderAddr + coktelDecoderCurFrameOffset);

            if (curFrame <= -1)
            {
                return(null);
            }

            var state = new VideoState();

            state.CurrentFrame = (uint)curFrame;
            state.FrameCount   = MemoryReader.ReadUInt32(coktelDecoderAddr + coktelDecoderFrameCountOffset);
            state.FrameRate    = ReadRational(coktelDecoderAddr + coktelDecoderFrameRateOffset);

            if (RttiReader.HasBaseClass(coktelDecoderAddr, ".?AVVMDDecoder@Video@@"))
            {
                var streamPtrVal = MemoryReader.ReadIntPtr(coktelDecoderAddr + vmdDecoderStreamOffset);
                state.FileName = ReadFileName(streamPtrVal);
            }

            return(state);
        }
Exemplo n.º 2
0
        public VideoState?ReadDecoder(IntPtr decoderAddr)
        {
            if (decoderAddr == IntPtr.Zero)
            {
                return(null);
            }

            if (RttiReader.HasBaseClass(decoderAddr, ".?AVSmackerDecoder@Video@@"))
            {
                return(ReadSmkDecoder(decoderAddr));
            }
            if (RttiReader.HasBaseClass(decoderAddr, ".?AVAVIDecoder@Video@@"))
            {
                return(ReadAviDecoder(decoderAddr));
            }
            if (RttiReader.HasBaseClass(decoderAddr, ".?AVAdvancedVMDDecoder@Video@@"))
            {
                return(ReadVmdDecoder(decoderAddr));
            }
            throw new NotSupportedException("No support for the decoder");
        }