Leadtools.Multimedia Namespace > MediaType Class : SetPortableType Method |
function Leadtools.Multimedia.MediaType.SetPortableType( Type )
public: void SetPortableType( array<byte>^ Type )
Public _result As Boolean = False Public _form As CaptureAndPlayCtrlForm = New CaptureAndPlayCtrlForm() Public _captureTarget As SampleTarget Public _playSource As SampleSource Public Sub GetPortableTypeExample() ' reference the convert control Dim capturectrl As CaptureCtrl = _form.CaptureCtrl Dim playctrl As PlayCtrl = _form.PlayCtrl ' This example demonstrates how to play a capture stream ' using a play control and portable media types. Try ' set the source device If capturectrl.VideoDevices("Analog") Is Nothing Then Throw New Exception("No Analog video devices available!") End If capturectrl.VideoDevices("Analog").Selected = True ' set the preview capturectrl.Preview = True ' create a sample target object for the capture control _captureTarget = New SampleTarget() ' set the capture target to our sample target created earlier capturectrl.TargetObject = _captureTarget ' create a new sample source object for the play control _playSource = New SampleSource() ' set the video compressor capturectrl.VideoCompressors.MCmpMJpeg.Selected = True '// for this example we will only capture 120 seconds of video capturectrl.UseTimeLimit = True capturectrl.TimeLimit = 120 ' start the capture capturectrl.StartCapture(CaptureMode.Video) ' we could just assign the media type from target to source ' however, let's use the portable type to simulate ' the needed steps for remote playback Dim portableMediaType As Byte() = _captureTarget.GetConnectedMediaType().GetPortableType() ' initialize a new media type object with the portable type Dim mt As MediaType = New MediaType() mt.SetPortableType(portableMediaType) ' set the sample source media type _playSource.SetMediaType(mt) ' set the play controls sample source object playctrl.SourceObject = _playSource ' create a timer to drive the sample delivery AddHandler _form.TestTimer.Tick, AddressOf SampleDeliver_Tick _form.TestTimer.Interval = 33 _form.TestTimer.Start() ' we'll loop on the state and pump messages for this example. ' but you should not need to if running from a Windows Forms application. Do While capturectrl.State = CaptureState.Running _ OrElse capturectrl.State = CaptureState.Paused OrElse capturectrl.State = CaptureState.Pending Application.DoEvents() Loop Catch e1 As Exception _result = False End Try End Sub Private Sub SampleDeliver_Tick(ByVal sender As Object, ByVal e As EventArgs) _form.TestTimer.Stop() Dim eos As Boolean = False Dim cs As MediaSample = Nothing Try cs = _captureTarget.GetSample(1000) Catch cex As COMException If cex.ErrorCode = CInt(ErrorCode.VFW_E_SAMPLE_REJECTED_EOS) Then eos = True Else Throw End If Catch ex As Exception Throw End Try If (Not eos) Then _playSource.DeliverSample(1000, cs) _form.TestTimer.Start() Else _playSource.DeliverEndOfStream(1000) _form.TestTimer.Stop() ' set the result _result = True End If End Sub
public bool _result = false; public CaptureAndPlayCtrlForm _form = new CaptureAndPlayCtrlForm(); public SampleTarget _captureTarget; public SampleSource _playSource; public void GetPortableTypeExample() { // reference the convert control CaptureCtrl capturectrl = _form.CaptureCtrl; PlayCtrl playctrl = _form.PlayCtrl; // This example demonstrates how to play a capture stream // using a play control and portable media types. try { // set the source device if (capturectrl.VideoDevices["Analog"] == null) throw new Exception("No Analog video devices available!"); capturectrl.VideoDevices["Analog"].Selected = true; // set the preview capturectrl.Preview = true; // create a sample target object for the capture control _captureTarget = new SampleTarget(); // set the capture target to our sample target created earlier capturectrl.TargetObject = _captureTarget; // create a new sample source object for the play control _playSource = new SampleSource(); // set the video compressor capturectrl.VideoCompressors.MCmpMJpeg.Selected = true; //// for this example we will only capture 120 seconds of video capturectrl.UseTimeLimit = true; capturectrl.TimeLimit = 120; // start the capture capturectrl.StartCapture(CaptureMode.Video); // we could just assign the media type from target to source // however, let's use the portable type to simulate // the needed steps for remote playback Byte[] portableMediaType = _captureTarget.GetConnectedMediaType().GetPortableType(); // initialize a new media type object with the portable type MediaType mt = new MediaType(); mt.SetPortableType(portableMediaType); // set the sample source media type _playSource.SetMediaType(mt); // set the play controls sample source object playctrl.SourceObject = _playSource; // create a timer to drive the sample delivery _form.TestTimer.Tick += new EventHandler(SampleDeliver_Tick); _form.TestTimer.Interval = 33; _form.TestTimer.Start(); // we'll loop on the state and pump messages for this example. // but you should not need to if running from a Windows Forms application. while (capturectrl.State == CaptureState.Running || capturectrl.State == CaptureState.Paused || capturectrl.State == CaptureState.Pending) Application.DoEvents(); } catch (Exception) { _result = false; } } void SampleDeliver_Tick(object sender, EventArgs e) { _form.TestTimer.Stop(); bool eos = false; MediaSample cs = null; try { cs = _captureTarget.GetSample(1000); } catch (COMException cex) { if (cex.ErrorCode == (int)ErrorCode.VFW_E_SAMPLE_REJECTED_EOS) eos = true; else throw; } catch (Exception ex) { throw new Exception(ex.Message); } if (!eos) { _playSource.DeliverSample(1000, cs); _form.TestTimer.Start(); } else { _playSource.DeliverEndOfStream(1000); _form.TestTimer.Stop(); // set the result _result = true; } }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2