Example #1
0
        GEMediaPlayer(MediaElement owner, Uri uri)
        {
            _stream = Noesis.GUI.LoadXamlResource(uri.OriginalString);
            if (_stream != null)
            {
                _state = CreateState();

                _streamHandle = GCHandle.Alloc(_stream);
                StreamReadDelegate readFn = new StreamReadDelegate(StreamRead);
                _readFnHandle = GCHandle.Alloc(readFn);
                StreamSeekDelegate seekFn = new StreamSeekDelegate(StreamSeek);
                _seekFnHandle = GCHandle.Alloc(seekFn);

                MediaOpenedDelegate mediaOpenedFn = new MediaOpenedDelegate(this.OnMediaOpened);
                _mediaOpenedFnHandle = GCHandle.Alloc(mediaOpenedFn);
                MediaEndedDelegate mediaEndedFn = new MediaEndedDelegate(this.OnMediaEnded);
                _mediaEndedFnHandle = GCHandle.Alloc(mediaEndedFn);
                MediaFailedDelegate mediaFailedFn = new MediaFailedDelegate(this.OnMediaFailed);
                _mediaFailedFnHandle = GCHandle.Alloc(mediaFailedFn);

                long streamSize = _stream.Length;
                OpenMedia(_state, GCHandle.ToIntPtr(_streamHandle), uri.GetPath(), streamSize, readFn, seekFn, mediaOpenedFn, mediaEndedFn, mediaFailedFn);
            }
            owner.View.Rendering += OnRendering;
        }
Example #2
0
 private static extern void OpenMedia(IntPtr state, IntPtr streamPtr, string streamName, long streamSize,
                                      StreamReadDelegate readFn, StreamSeekDelegate seekFn, MediaOpenedDelegate mediaOpenedFn, MediaEndedDelegate mediaEndedFn, MediaFailedDelegate mediaFailedFn);