本文整理汇总了C#中IMediaSample.SetTime方法的典型用法代码示例。如果您正苦于以下问题:C# IMediaSample.SetTime方法的具体用法?C# IMediaSample.SetTime怎么用?C# IMediaSample.SetTime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IMediaSample
的用法示例。
在下文中一共展示了IMediaSample.SetTime方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CopySample
public static void CopySample(IMediaSample src, IMediaSample dest, bool copySamples)
{
var sourceSize = src.GetActualDataLength();
if (copySamples)
{
IntPtr sourceBuffer;
src.GetPointer(out sourceBuffer);
IntPtr destBuffer;
dest.GetPointer(out destBuffer);
CopyMemory(destBuffer, sourceBuffer, sourceSize);
}
// Copy the sample times
long start, end;
if (src.GetTime(out start, out end) == S_OK)
{
dest.SetTime(start, end);
}
if (src.GetMediaTime(out start, out end) == S_OK)
{
dest.SetMediaTime(start, end);
}
// Copy the media type
AMMediaType mediaType;
src.GetMediaType(out mediaType);
dest.SetMediaType(mediaType);
DsUtils.FreeAMMediaType(mediaType);
dest.SetSyncPoint(src.IsSyncPoint() == S_OK);
dest.SetPreroll(src.IsPreroll() == S_OK);
dest.SetDiscontinuity(src.IsDiscontinuity() == S_OK);
// Copy the actual data length
dest.SetActualDataLength(sourceSize);
}
示例2: SetTimeStamps
/// <summary>
/// Calculate and populate the timestamps
/// </summary>
/// <param name="pSample">The IMediaSample to set the timestamps on</param>
/// <returns>HRESULT</returns>
public override int SetTimeStamps(IMediaSample pSample)
{
// Time per frame
int tpf = (UNIT / m_Fps);
DsLong rtStart = new DsLong(m_rtSampleTime);
m_rtSampleTime += tpf;
DsLong rtStop = new DsLong(m_rtSampleTime);
// Set the times into the sample
int hr = pSample.SetTime(rtStart, rtStop);
// Set TRUE on every sample for uncompressed frames
if (hr >= 0)
{
hr = pSample.SetSyncPoint(true);
}
return hr;
}
示例3: SetTimeStamps
// Set the timestamps
public override int SetTimeStamps(IMediaSample pSample)
{
int hr;
int iRead = pSample.GetActualDataLength();
long SampleTime = GetTimeFromBytes(iRead);
long TimeStart = m_FSampleTime;
m_FSampleTime = m_FSampleTime + SampleTime;
long TimeStop = m_FSampleTime;
hr = pSample.SetTime(TimeStart, TimeStop);
if (hr >= 0)
{
TimeStart = m_FMediaTime;
m_FMediaTime = m_FMediaTime + SampleTime;
TimeStop = m_FMediaTime;
hr = pSample.SetMediaTime(TimeStart, TimeStop);
DsError.ThrowExceptionForHR(hr);
}
return hr;
}
示例4: SetTimeStamps
/// <summary>
/// Calculate the timestamps based on the frame number and the frames per second.
/// </summary>
/// <param name="sample">The <see cref="IMediaSample"/> to be timed.</param>
/// <returns>0 = success, negative values for errors</returns>
public override int SetTimeStamps(IMediaSample sample)
{
// Calculate the start/end times based on the current frame number
// and frame rate
DsLong start = new DsLong(this.FrameNumber * this.framesPerSecond);
DsLong stop = new DsLong(start + this.framesPerSecond);
// Set the times into the sample
int hr = sample.SetTime(start, stop);
return hr;
}