Exemple #1
0
        /// <summary> create the used COM components and get the interfaces. </summary>
        private bool GetInterfaces()
        {
            Logger.Instance.Debug("AirplayerAudioPlayer: Get interfaces");
            int    iStage = 1;
            string audioDevice;

            using (Settings xmlreader = new MPSettings())
                audioDevice = xmlreader.GetValueAsString("audioplayer", "sounddevice", "Default DirectSound Device");
            //If user has bass as default player the default device is named slightly differently
            if (audioDevice == "Default Sound Device")
            {
                audioDevice = "Default DirectSound Device";
            }

            Logger.Instance.Debug("AirplayerAudioPlayer: Using audio device '{0}'", audioDevice);

            int hr;

            try
            {
                graphBuilder = (IGraphBuilder) new FilterGraph();
                iStage       = 5;
                Utils.AddFilterByName(graphBuilder, DirectShow.FilterCategory.AudioRendererCategory, audioDevice);
                var sourceFilter = new GenericPushSourceFilter(settings.Source, settings.GetMediaType());
                hr = graphBuilder.AddFilter(sourceFilter, sourceFilter.Name);
                new HRESULT(hr).Throw();
                DSFilter source2 = new DSFilter(sourceFilter);
                hr = source2.OutputPin.Render();
                new HRESULT(hr).Throw();

                if (hr != 0)
                {
                    Error.SetError("Unable to play file", "Missing codecs to play this file");
                    return(false);
                }
                iStage     = 6;
                mediaCtrl  = (IMediaControl)graphBuilder;
                iStage     = 7;
                mediaEvt   = (IMediaEventEx)graphBuilder;
                iStage     = 8;
                mediaSeek  = (IMediaSeeking)graphBuilder;
                iStage     = 9;
                mediaPos   = (IMediaPosition)graphBuilder;
                iStage     = 10;
                basicAudio = graphBuilder as IBasicAudio;
                iStage     = 11;
                Logger.Instance.Debug("AirplayerAudioPlayer: Interfaces created");
                return(true);
            }
            catch (Exception ex)
            {
                Logger.Instance.Info("Can not start {0} stage:{1} err:{2} stack:{3}",
                                     m_strCurrentFile, iStage,
                                     ex.Message,
                                     ex.StackTrace);
                return(false);
            }
        }
        protected override void AddSourceFilter()
        {
            var sourceFilter = new GenericPushSourceFilter(settings.Source, settings.GetMediaType());
            int hr           = _graphBuilder.AddFilter(sourceFilter, sourceFilter.Name);

            new HRESULT(hr).Throw();
            DSFilter source2 = new DSFilter(sourceFilter);

            hr = source2.OutputPin.Render();
            new HRESULT(hr).Throw();
            return;
        }
        public void Start()
        {
            _graphBuilder = (IFilterGraph2) new FilterGraph();
            _rot          = new DsROTEntry(_graphBuilder);

            var sourceFilter = new GenericPushSourceFilter(source, GetMediaType());
            int hr           = _graphBuilder.AddFilter(sourceFilter, sourceFilter.Name);

            new HRESULT(hr).Throw();
            DSFilter source2 = new DSFilter(sourceFilter);

            hr = source2.OutputPin.Render();
            new HRESULT(hr).Throw();

            IMediaControl mc = (IMediaControl)_graphBuilder;

            hr = mc.Run();
            new HRESULT(hr).Throw();
        }