The following code demonstrates how to copy a media sample's attributes and data to another media sample.
Function CopyMediaSampleAttributes(Dest As ltmmMediaSample, Source As ltmmMediaSample) As Boolean
Dim MediaType As ltmmMediaType
Dim TimeStartHi As Long
Dim TimeStartLo As Long
Dim TimeStopHi As Long
Dim TimeStopLo As Long
' if there is no room, then return False
If Source.ActualDataLength > Dest.BufferSize Then
CopyMediaSampleAttributes = False
Exit Function
End If
If Source.ActualDataLength > 0 Then
' copy data
Dest.SetData Source.ActualDataLength, Source.GetData (Source.ActualDataLength)
Else
' no data
Dest.ActualDataLength = 0
End If
' copy media type
Set MediaType = Source.GetMediaType
If Not IsNull(MediaType) Then
Dest.SetMediaType MediaType
End If
' other flags
Dest.Discontinuity = Source.Discontinuity
Dest.Preroll = Source.Preroll
Dest.SyncPoint = Source.SyncPoint
' copy sample time
On Error GoTo ResetTime
Source.GetTime TimeStartHi, TimeStartLo, TimeStopHi, TimeStopLo
Dest.SetTime TimeStartHi, TimeStartLo, TimeStopHi, TimeStopLo
GoTo NoResetTime
ResetTime:
Dest.ResetTime
NoResetTime:
' copy media time
On Error GoTo ResetMediaTime
Source.GetMediaTime TimeStartHi, TimeStartLo, TimeStopHi, TimeStopLo
Dest.SetMediaTime TimeStartHi, TimeStartLo, TimeStopHi, TimeStopLo
GoTo NoResetMediaTime
ResetMediaTime:
Dest.ResetMediaTime
NoResetMediaTime:
' all is well
CopyMediaSampleAttributes = True
End Function