void TestPreroll() { int hr; int s1, s2; // Read the value s1 = m_ims.IsPreroll(); // Change the value hr = m_ims.SetPreroll(s1 != 0); Marshal.ThrowExceptionForHR(hr); // Re-read the value s2 = m_ims.IsPreroll(); // Check to see if the change took Debug.Assert(s1 != s2, "Get/Set Preroll"); // put the original value back hr = m_ims.SetPreroll(s1 == 0); Marshal.ThrowExceptionForHR(hr); // Re-read the value s2 = m_ims.IsPreroll(); // Check to see if the change took Debug.Assert(s1 == s2, "Get/Set Preroll2"); }
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; var changed = src.GetMediaType(out mediaType) == 0; if (changed) { 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); }
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); }