Beispiel #1
0
        protected void CreateMediaSource(string sURL)
        {
            TRACE("CPlayer::CreateMediaSource");

            IMFSourceResolver pSourceResolver;
            object            pSource;

            // Create the source resolver.
            MFExtern.MFCreateSourceResolver(out pSourceResolver);

            try
            {
                // Use the source resolver to create the media source.
                MFObjectType ObjectType = MFObjectType.Invalid;

                pSourceResolver.CreateObjectFromURL(
                    sURL,                           // URL of the source.
                    MFResolution.MediaSource,       // Create a source object.
                    null,                           // Optional property store.
                    out ObjectType,                 // Receives the created object type.
                    out pSource                     // Receives a pointer to the media source.
                    );

                // Get the IMFMediaSource interface from the media source.
                m_pSource = (IMFMediaSource)pSource;
            }
            finally
            {
                // Clean up
                Marshal.ReleaseComObject(pSourceResolver);
            }
        }
Beispiel #2
0
        protected void CreateMediaSource(string sURL)
        {
            IMFSourceResolver pSourceResolver;
            object            pSource;

            // Create the source resolver.
            int hr = MFExtern.MFCreateSourceResolver(out pSourceResolver);

            MFError.ThrowExceptionForHR(hr);

            try
            {
                // Use the source resolver to create the media source.
                MFObjectType ObjectType = MFObjectType.Invalid;

                hr = pSourceResolver.CreateObjectFromURL(
                    sURL,                           // URL of the source.
                    MFResolution.MediaSource,       // Create a source object.
                    null,                           // Optional property store.
                    out ObjectType,                 // Receives the created object type.
                    out pSource                     // Receives a pointer to the media source.
                    );
                MFError.ThrowExceptionForHR(hr);

                // Get the IMFMediaSource interface from the media source.
                m_pSource = pSource as IMFMediaSource;
            }
            finally
            {
                // Clean up
                Marshal.ReleaseComObject(pSourceResolver);
            }
        }
Beispiel #3
0
        ///////////////////////////////////////////////////////////////////////
        //  Name: CreateMediaSource
        //  Description:  Create a media source from a URL.
        //
        //  sURL: The URL to open.
        //  ppSource: Receives a pointer to the media source.
        ///////////////////////////////////////////////////////////////////////

        static void CreateMediaSource(string sURL, out IMFMediaSource ppSource)
        {
            HResult           hr;
            IMFSourceResolver pSourceResolver;
            object            pSourceUnk;

            // Create the source resolver.
            hr = MFExtern.MFCreateSourceResolver(out pSourceResolver);
            MFError.ThrowExceptionForHR(hr);

            try
            {
                // Use the source resolver to create the media source.
                MFObjectType ObjectType = MFObjectType.Invalid;
                hr = pSourceResolver.CreateObjectFromURL(
                    sURL,                     // URL of the source.
                    MFResolution.MediaSource, // Create a source object.
                    null,                     // Optional property store.
                    out ObjectType,           // Receives the object type.
                    out pSourceUnk            // Receives a pointer to the source.
                    );
                MFError.ThrowExceptionForHR(hr);

                // Get the IMFMediaSource interface from the media source.
                ppSource = (IMFMediaSource)pSourceUnk;
            }
            finally
            {
                // Clean up.
                if (pSourceResolver != null)
                {
                    Marshal.ReleaseComObject(pSourceResolver);
                }
            }
        }
Beispiel #4
0
    public HResult EndCreateObject(IMFAsyncResult pResult,
                                   out MFObjectType pObjectType,
                                   out object ppObject)
    {
        pObjectType = MFObjectType.ByteStream;

        HResult hr = pResult.GetObject(out ppObject);

        if (MFError.Succeeded(hr))
        {
            IcyScheme icy = (IcyScheme)ppObject;

            // Wait for the HttpWebRequest to finish connecting.  This
            // includes sending the request, and processing the response
            // headers and caching some data (see m_FirstBlock).
            hr = icy.WaitForConnect();
        }

        return(hr);
    }
Beispiel #5
0
        static IMFMediaSource GetMediaSource(string sourceFileName)
        {
            HResult hr;

            // Get an IMFMediaSource.
            IMFSourceResolver sourceResolver;

            hr = MFExtern.MFCreateSourceResolver(out sourceResolver);
            MFError.ThrowExceptionForHR(hr);
            MFObjectType objectType = MFObjectType.Invalid;
            object       source;

            hr = sourceResolver.CreateObjectFromURL(sourceFileName, MFResolution.MediaSource, null, out objectType, out source);
            MFError.ThrowExceptionForHR(hr);
            IMFMediaSource mediaSource = (IMFMediaSource)source;

            COMBase.SafeRelease(sourceResolver);
            sourceResolver = null;

            return(mediaSource);
        }
Beispiel #6
0
        ////////////////////////////////////////////////////////////////////////////////////////
        //  Name: CPlayer::CreateMediaSource (Private)
        //  Description:
        //      Creates a media source from URL
        //  Parameter:
        //      sURL: [in] File URL
        //      ppMediaSource: [out] Receives the media source
        /////////////////////////////////////////////////////////////////////////////////////////

        private void CreateMediaSource(
            string sURL,
            out IMFMediaSource ppMediaSource)
        {
            Debug.WriteLine("CPlayer::CreateMediaSource");

            if (sURL == null)
            {
                throw new COMException("null pointer", (int)HResult.E_POINTER);
            }

            HResult           hr;
            IMFSourceResolver pSourceResolver;
            object            pSourceUnk;

            hr = MFExtern.MFCreateSourceResolver(out pSourceResolver);
            MFError.ThrowExceptionForHR(hr);

            try
            {
                // Use the source resolver to create the media source.
                MFObjectType ObjectType = MFObjectType.Invalid;

                hr = pSourceResolver.CreateObjectFromURL(
                    sURL,                          // URL of the source.
                    MFResolution.MediaSource,      // Create a source object.
                    null,                          // Optional property store.
                    out ObjectType,                // Receives the created object type.
                    out pSourceUnk                 // Receives a pointer to the media source.
                    );
                MFError.ThrowExceptionForHR(hr);

                // Get the IMFMediaSource interface from the media source.
                ppMediaSource = (IMFMediaSource)pSourceUnk;
            }
            finally
            {
                SafeRelease(pSourceResolver);
            }
        }
Beispiel #7
0
        public HResult EndCreateObject(
            IMFAsyncResult pResult,
            out MFObjectType pObjectType,
            out object ppObject
            )
        {
            // Make sure we *never* leave this entry point with an exception
            try
            {
                HResult hr;

                pObjectType = MFObjectType.Invalid;
                ppObject    = null;

                m_Log.WriteLine("EndCreateObject");

                if (pResult == null)
                {
                    throw new COMException("invalid IMFAsyncResult", (int)HResult.E_INVALIDARG);
                }

                hr = pResult.GetObject(out ppObject);
                MFError.ThrowExceptionForHR(hr);

                // Minimal sanity check - is it really a media source?
                IMFMediaSource pSource = (IMFMediaSource)ppObject;

                pObjectType = MFObjectType.MediaSource;

                // unneeded SAFE_RELEASE(pSource);
                // unneeded SAFE_RELEASE(ppObject);
                return(HResult.S_OK);
            }
            catch (Exception e)
            {
                ppObject    = null;
                pObjectType = MFObjectType.Invalid;
                return((HResult)Marshal.GetHRForException(e));
            }
        }
        public int EndCreateObject(
            IMFAsyncResult pResult,
            out MFObjectType pObjectType,
            out object ppObject
        )
        {
            // Make sure we *never* leave this entry point with an exception
            try
            {
                int hr;

                pObjectType = MFObjectType.Invalid;
                ppObject = null;

                m_Log.WriteLine("EndCreateObject");

                if (pResult == null)
                {
                    throw new COMException("invalid IMFAsyncResult", E_InvalidArgument);
                }

                hr = pResult.GetObject(out ppObject);
                MFError.ThrowExceptionForHR(hr);

                // Minimal sanity check - is it really a media source?
                IMFMediaSource pSource = (IMFMediaSource)ppObject;

                pObjectType = MFObjectType.MediaSource;

                // unneeded SAFE_RELEASE(pSource);
                // unneeded SAFE_RELEASE(ppObject);
                return S_Ok;
            }
            catch (Exception e)
            {
                ppObject = null;
                pObjectType = MFObjectType.Invalid;
                return Marshal.GetHRForException(e);
            }
        }