Imports LTMMLib
Module Module1
Sub Main()
Dim xcca, xccb As ltmmConvertCtrl
Dim xtarget As ltmmMultiStreamTarget
Dim xsource As ltmmMultiStreamSource
Dim xmt As New ltmmMediaType
Dim xsamples, a, xstream As Long
Dim xsrc, xdst As New ltmmMediaSample
Dim xsps, xtimer As Long
On Error GoTo quit
xcca = New ltmmConvertCtrl
xcca.sourcefile = "c:\join_test\source.mpg"
xtarget = New ltmmMultiStreamTarget
xtarget.StreamCount = 2
xmt = New ltmmMediaType
xmt.Type = ltmmConstants.ltmmMEDIATYPE_Video
xtarget.SetAcceptedMediaType(0, xmt)
xmt.ResetMediaType()
xmt.Type = ltmmConstants.ltmmMEDIATYPE_Audio
xtarget.SetAcceptedMediaType(1, xmt)
xcca.TargetObject = xtarget
xcca.StartConvert()
xccb = New ltmmConvertCtrl
xsource = New ltmmMultiStreamSource
xsource.StreamCount = 2
xsource.SetMediaType(0, xtarget.GetConnectedMediaType(0))
xsource.SetMediaType(1, xtarget.GetConnectedMediaType(1))
xccb.TargetFile = "c:\join_test\dest.mpg"
xccb.TargetFormat = ltmmConvert_TargetFormat.ltmmConvert_TargetFormat_MPEG2_PROGRAM
xccb.SourceObject = xsource
xccb.StartConvert()
xtimer = Microsoft.VisualBasic.DateAndTime.Timer
xsps = 0
Do
xsamples = xsamples + 1
Console.SetCursorPosition(0, 0)
Console.Write("Samples " & xsamples)
xstream = xtarget.WaitForSample(10000)
xsrc = New ltmmMediaSample
xsrc = xtarget.GetSample(xstream, 10000)
xdst = New ltmmMediaSample
xdst = xsource.GetSampleBuffer(xstream, 10000)
xdst.SetData(xsrc.ActualDataLength, xsrc.GetData(xsrc.ActualDataLength))
xdst.Discontinuity = xsrc.Discontinuity
xdst.Preroll = xsrc.Preroll
xdst.SyncPoint = xsrc.SyncPoint
System.Runtime.InteropServices.Marshal.ReleaseComObject(xsrc)
xsource.DeliverSample(xstream, 10000, xdst)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xdst)
If Microsoft.VisualBasic.DateAndTime.Timer >= xtimer + 1 Then
Console.SetCursorPosition(0, 5)
Console.Write("Samples per second: " & xsamples - xsps)
xsps = xsamples
xtimer = Microsoft.VisualBasic.DateAndTime.Timer
End If
Loop
quit:
If Err.Number <> 0 Then
MsgBox(Err.Description & " " & Err.Number & " Line: " & Err.Erl)
End If
End Sub
End Module