public RtspPlayer(EDecoderType decoderType, EVideoRendererType videoRendererType)
        {
            _decoderType       = decoderType;
            _videoRendererType = videoRendererType;
            _d3dImage.IsFrontBufferAvailableChanged += IsFrontBufferAvailableChanged;
            _image.Source = _d3dImage;

            Loaded += RtspPlayer_Loaded;
            Content = _image;
        }
        public RtspPlayer(EDecoderType decoderType, EVideoRendererType videoRendererType)
        {
            _decoderType = decoderType;
            _videoRendererType = videoRendererType;
            _d3dImage.IsFrontBufferAvailableChanged += IsFrontBufferAvailableChanged;
            _image.Source = _d3dImage;

            Loaded += RtspPlayer_Loaded;
            Content = _image;
        }
 public DirectShowSession(RtspPlayer player, String rtspUrl, IntPtr hwnd, 
     EDecoderType decoderType, EVideoRendererType videoRendererType)
 {
     _player = player;
     _rtspUrl = rtspUrl;
     _hwnd = hwnd;
     _decoderType = decoderType;
     _videoRendererType = videoRendererType;
     _workerThread = new Thread(WorkerThread);
     _workerThread.Start();
 }
 public DirectShowSession(RtspPlayer player, String rtspUrl, IntPtr hwnd,
                          EDecoderType decoderType, EVideoRendererType videoRendererType)
 {
     _player            = player;
     _rtspUrl           = rtspUrl;
     _hwnd              = hwnd;
     _decoderType       = decoderType;
     _videoRendererType = videoRendererType;
     _workerThread      = new Thread(WorkerThread);
     _workerThread.Start();
 }
        private IBaseFilter GetDecoderFilter(EDecoderType decoderType)
        {
            switch (decoderType)
            {
            case EDecoderType.LAVVideo:
                var videoDecoder = (IBaseFilter) new LAVVideo();

                var lavVideoSettings = videoDecoder as ILAVVideoSettings;
                if (lavVideoSettings != null)
                {
                    lavVideoSettings.SetRuntimeConfig(true);
                    lavVideoSettings.SetNumThreads(1);
                    // If Presenter doesnt support DXVA2 than it fallbacks to avcodec
                    lavVideoSettings.SetHWAccel(LAVHWAccel.HWAccel_DXVA2Native);
                }

                return(videoDecoder);

            case EDecoderType.MicrosoftVideoDecoder:
                return((IBaseFilter) new MicrosoftVideoDecoder());
            }

            return(null);
        }
        private IBaseFilter GetDecoderFilter(EDecoderType decoderType)
        {
            switch(decoderType)
            {
                case EDecoderType.LAVVideo:
                    var videoDecoder = (IBaseFilter)new LAVVideo();

                    var lavVideoSettings = videoDecoder as ILAVVideoSettings;
                    if (lavVideoSettings != null)
                    {
                        lavVideoSettings.SetRuntimeConfig(true);
                        lavVideoSettings.SetNumThreads(1);
                        // If Presenter doesnt support DXVA2 than it fallbacks to avcodec
                        lavVideoSettings.SetHWAccel(LAVHWAccel.HWAccel_DXVA2Native);
                    }

                    return videoDecoder;

                case EDecoderType.MicrosoftVideoDecoder:
                    return (IBaseFilter) new MicrosoftVideoDecoder();
            }

            return null;
        }