예제 #1
0
        private void Config2()
        {
            int hr;
            IAMMultiMediaStream mms     = (IAMMultiMediaStream) new AMMultiMediaStream();
            IMediaStream        pStream = null;

            hr = mms.Initialize(StreamType.Read, AMMMultiStream.None, null);
            MsError.ThrowExceptionForHR(hr);

            hr = mms.AddMediaStream(null, MSPID.PrimaryAudio, AMMStream.None, pStream);
            MsError.ThrowExceptionForHR(hr);

            hr = mms.EnumMediaStreams(0, out pStream);
            MsError.ThrowExceptionForHR(hr);

            m_ams = pStream as IAudioMediaStream;
        }
예제 #2
0
        private void Config()
        {
            int hr;

            IAMMultiMediaStream amms    = (IAMMultiMediaStream) new AMMultiMediaStream();
            IMultiMediaStream   mms     = (IMultiMediaStream)amms;
            IMediaStream        pStream = null;

            hr = amms.AddMediaStream(null, MSPID.PrimaryAudio, AMMStream.None, pStream);
            MsError.ThrowExceptionForHR(hr);

            hr = amms.OpenFile("foo.avi", AMOpenModes.RenderAllStreams);
            MsError.ThrowExceptionForHR(hr);

            hr = mms.EnumMediaStreams(0, out pStream);
            MsError.ThrowExceptionForHR(hr);

            m_ams = pStream as IAudioMediaStream;
        }
예제 #3
0
        public int SetMediaStream(IMediaStream pMediaStream)
        {
            if (pMediaStream == null)
            {
                throw new ArgumentNullException("pMediaStream");
            }
            if (IsValid)
            {
                throw new InvalidOperationException("Instance is already active.");
            }
            int hr = MSStatus.MS_E_HANDLE;
            _pAudioStream = pMediaStream as IAudioMediaStream;
            if (_pAudioStream != null)
            {
                hr = _pAudioStream.GetFormat(out _wfmt);
                if (MSStatus.Succeed(hr))
                {
                    AMAudioData amAudio = new AMAudioData();
                    _pAudioData = (IAudioData)amAudio;
                    hr = _pAudioData.SetFormat(ref _wfmt);
                }
                else
                {
                    _pAudioStream = null;
                }
            }

            return hr;
        }
예제 #4
0
 public int ReleaseMediaStream()
 {
     int hr = MSStatus.MS_S_FALSE;
     if (IsValid)
     {
         hr = CompletionStatus((int)COMPLETION_STATUS_FLAGS.COMPSTAT_ABORT, System.Threading.Timeout.Infinite);
         if ( MSStatus.Succeed(hr) )
         {
             _pAudioSample = null;
             Marshal.ReleaseComObject(_pAudioStream);
             _pAudioStream = null;
             Marshal.FinalReleaseComObject(_pAudioData);
             _pAudioData = null;
         }
     }
     return hr;
 }
예제 #5
0
 private void Config3()
 {
     m_ams = (IAudioMediaStream) new AMAudioStream();
 }