本文整理汇总了C#中IGraphBuilder.SetDefaultSyncSource方法的典型用法代码示例。如果您正苦于以下问题:C# IGraphBuilder.SetDefaultSyncSource方法的具体用法?C# IGraphBuilder.SetDefaultSyncSource怎么用?C# IGraphBuilder.SetDefaultSyncSource使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IGraphBuilder
的用法示例。
在下文中一共展示了IGraphBuilder.SetDefaultSyncSource方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetInterfaces
//.........这里部分代码省略.........
IFileSourceFilter fileSource = (IFileSourceFilter)_bufferSource;
hr = fileSource.Load(filename, null);
// add preferred video & audio codecs
string strVideoCodec = "";
string strAudioCodec = "";
string strAudiorenderer = "";
int intFilters = 0; // FlipGer: count custom filters
string strFilters = ""; // FlipGer: collect custom filters
using (Settings xmlreader = new MPSettings())
{
_CodecSupportsFastSeeking = xmlreader.GetValueAsBool("debug", "CodecSupportsFastSeeking", false);
Log.Debug("BaseStreamBufferPlayer: Codec supports fast seeking = {0}", _CodecSupportsFastSeeking);
// FlipGer: load infos for custom filters
int intCount = 0;
while (xmlreader.GetValueAsString("mytv", "filter" + intCount.ToString(), "undefined") != "undefined")
{
if (xmlreader.GetValueAsBool("mytv", "usefilter" + intCount.ToString(), false))
{
strFilters += xmlreader.GetValueAsString("mytv", "filter" + intCount.ToString(), "undefined") + ";";
intFilters++;
}
intCount++;
}
strVideoCodec = xmlreader.GetValueAsString("mytv", "videocodec", "");
strAudioCodec = xmlreader.GetValueAsString("mytv", "audiocodec", "");
strAudiorenderer = xmlreader.GetValueAsString("mytv", "audiorenderer", "Default DirectSound Device");
string strValue = xmlreader.GetValueAsString("mytv", "defaultar", "Normal");
GUIGraphicsContext.ARType = Util.Utils.GetAspectRatio(strValue);
}
if (strVideoCodec.Length > 0)
{
_videoCodecFilter = DirectShowUtil.AddFilterToGraph(_graphBuilder, strVideoCodec);
}
if (strAudioCodec.Length > 0)
{
_audioCodecFilter = DirectShowUtil.AddFilterToGraph(_graphBuilder, strAudioCodec);
}
if (strAudiorenderer.Length > 0)
{
_audioRendererFilter = DirectShowUtil.AddAudioRendererToGraph(_graphBuilder, strAudiorenderer, true);
}
// FlipGer: add custom filters to graph
customFilters = new IBaseFilter[intFilters];
string[] arrFilters = strFilters.Split(';');
for (int i = 0; i < intFilters; i++)
{
customFilters[i] = DirectShowUtil.AddFilterToGraph(_graphBuilder, arrFilters[i]);
}
//render outputpins of SBE
DirectShowUtil.RenderOutputPins(_graphBuilder, (IBaseFilter)fileSource);
_mediaCtrl = (IMediaControl)_graphBuilder;
_videoWin = _graphBuilder as IVideoWindow;
_mediaEvt = (IMediaEventEx)_graphBuilder;
_mediaSeeking = _bufferSource as IStreamBufferMediaSeeking;
_mediaSeeking2 = _bufferSource as IStreamBufferMediaSeeking2;
if (_mediaSeeking == null)
{
Log.Error("Unable to get IMediaSeeking interface#1");
}
if (_mediaSeeking2 == null)
{
Log.Error("Unable to get IMediaSeeking interface#2");
}
if (_audioRendererFilter != null)
{
IMediaFilter mp = _graphBuilder as IMediaFilter;
IReferenceClock clock = _audioRendererFilter as IReferenceClock;
hr = mp.SetSyncSource(clock);
}
_basicVideo = _graphBuilder as IBasicVideo2;
_basicAudio = _graphBuilder as IBasicAudio;
//Log.Info("StreamBufferPlayer:SetARMode");
DirectShowUtil.SetARMode(_graphBuilder, AspectRatioMode.Stretched);
_graphBuilder.SetDefaultSyncSource();
//Log.Info("StreamBufferPlayer: set Deinterlace");
//Log.Info("StreamBufferPlayer: done");
return true;
}
catch (Exception ex)
{
Log.Error("StreamBufferPlayer:exception while creating DShow graph {0} {1}", ex.Message, ex.StackTrace);
return false;
}
finally
{
if (comobj != null)
{
DirectShowUtil.ReleaseComObject(comobj);
}
comobj = null;
}
}
示例2: loadVideo
private void loadVideo(String videoPath)
{
videoFilepath = videoPath;
videoFileName.Text = getDisplayVideoName();
if (graph != null)
{
graph = null;
}
if (mediaControl != null)
{
// Stop media playback
this.mediaControl.Stop();
mediaControl = null;
}
if (videoWindow != null)
{
videoWindow.put_Owner(IntPtr.Zero);
videoWindow = null;
}
if (mediaSeeking != null)
{
mediaSeeking = null;
}
if (basicAudio != null)
{
basicAudio = null;
}
GC.Collect();
/* if (mediaPosition != null)
{
mediaPosition = null;
}*/
graph = (IGraphBuilder)new FilterGraph();
mediaControl = (IMediaControl)graph;
//mediaPosition = (IMediaPosition)graph;
videoWindow = (IVideoWindow)graph;
mediaSeeking = (IMediaSeeking)graph;
basicAudio = (IBasicAudio)graph;
AviSplitter spliter = new AviSplitter();
graph.AddFilter((IBaseFilter)spliter, null);
graph.RenderFile(videoPath, null);
graph.SetDefaultSyncSource();
/*
* AMSeekingSeekingCapabilities cap = AMSeekingSeekingCapabilities.CanGetCurrentPos;
if (mediaSeeking.CheckCapabilities(ref cap) > 0)
{
this.consoleErreur.AppendText("Impossible de recuperer la position de la frame");
}
* */
videoWindow.put_Owner(videoPanel.Handle);
videoWindow.put_MessageDrain(videoPanel.Handle);
videoWindow.put_WindowStyle(WindowStyle.Child);
videoWindow.put_WindowStyleEx(WindowStyleEx.ControlParent);
videoWindow.put_Left(0);
videoWindow.put_Top(0);
videoWindow.put_Width(videoPanel.Width);
videoWindow.put_Height(videoPanel.Height);
//positionTrackbar.Enabled = true;
speedTrackBar.Enabled = true;
mediaSeeking.SetTimeFormat(TimeFormat.Frame);
double rate;
mediaSeeking.GetRate(out rate);
rateText.Text = rate.ToString();
speedTrackBar.Value = (int)(speedTrackBar.Maximum * rate / 2);
trackBar1.Value = trackBar1.Maximum / 2;
this.basicAudio.put_Volume(-5000 + 5000 * trackBar1.Value / trackBar1.Maximum);
//mediaPosition.put_Rate(0.5);
running = false;
frameChanged = false;
}
示例3: GetInterfaces
//.........这里部分代码省略.........
string strAudioCodec = "";
string strAACAudioCodec = "";
string strDDPLUSAudioCodec = "";
string strAudiorenderer = "";
int intFilters = 0; // FlipGer: count custom filters
string strFilters = ""; // FlipGer: collect custom filters
using (Settings xmlreader = new MPSettings())
{
_CodecSupportsFastSeeking = xmlreader.GetValueAsBool("debug", "CodecSupportsFastSeeking", true);
Log.Debug("BaseTSReaderPlayer: Codec supports fast seeking = {0}", _CodecSupportsFastSeeking);
// FlipGer: load infos for custom filters
int intCount = 0;
while (xmlreader.GetValueAsString("mytv", "filter" + intCount.ToString(), "undefined") != "undefined")
{
if (xmlreader.GetValueAsBool("mytv", "usefilter" + intCount.ToString(), false))
{
strFilters += xmlreader.GetValueAsString("mytv", "filter" + intCount.ToString(), "undefined") + ";";
intFilters++;
}
intCount++;
}
strVideoCodec = xmlreader.GetValueAsString("mytv", "videocodec", "");
strH264VideoCodec = xmlreader.GetValueAsString("mytv", "h264videocodec", "");
strAudioCodec = xmlreader.GetValueAsString("mytv", "audiocodec", "");
strAACAudioCodec = xmlreader.GetValueAsString("mytv", "aacaudiocodec", "");
strDDPLUSAudioCodec = xmlreader.GetValueAsString("mytv", "ddplusaudiocodec", "");
strAudiorenderer = xmlreader.GetValueAsString("mytv", "audiorenderer", "Default DirectSound Device");
string strValue = xmlreader.GetValueAsString("mytv", "defaultar", "Normal");
GUIGraphicsContext.ARType = Util.Utils.GetAspectRatio(strValue);
}
if (strVideoCodec.Length > 0)
{
DirectShowUtil.AddFilterToGraph(_graphBuilder, strVideoCodec);
}
if (strH264VideoCodec.Length > 0)
{
DirectShowUtil.AddFilterToGraph(_graphBuilder, strH264VideoCodec);
}
if (strAudioCodec.Length > 0)
{
DirectShowUtil.AddFilterToGraph(_graphBuilder, strAudioCodec);
}
if (strAACAudioCodec.Length > 0)
{
DirectShowUtil.AddFilterToGraph(_graphBuilder, strAACAudioCodec);
}
if (strDDPLUSAudioCodec.Length > 0)
{
DirectShowUtil.AddFilterToGraph(_graphBuilder, strDDPLUSAudioCodec);
}
if (strAudiorenderer.Length > 0)
{
_audioRendererFilter = DirectShowUtil.AddAudioRendererToGraph(_graphBuilder, strAudiorenderer, false);
}
// FlipGer: add custom filters to graph
string[] arrFilters = strFilters.Split(';');
for (int i = 0; i < intFilters; i++)
{
DirectShowUtil.AddFilterToGraph(_graphBuilder, arrFilters[i]);
}
DirectShowUtil.RenderOutputPins(_graphBuilder, (IBaseFilter)_fileSource);
_mediaCtrl = (IMediaControl)_graphBuilder;
_videoWin = _graphBuilder as IVideoWindow;
_mediaEvt = (IMediaEventEx)_graphBuilder;
_mediaSeeking = _graphBuilder as IMediaSeeking;
if (_mediaSeeking == null)
{
Log.Error("Unable to get IMediaSeeking interface#1");
}
if (_audioRendererFilter != null)
{
IMediaFilter mp = _graphBuilder as IMediaFilter;
IReferenceClock clock = _audioRendererFilter as IReferenceClock;
hr = mp.SetSyncSource(clock);
}
_basicVideo = _graphBuilder as IBasicVideo2;
_basicAudio = _graphBuilder as IBasicAudio;
//Log.Info("TSReaderPlayer:SetARMode");
DirectShowUtil.SetARMode(_graphBuilder, AspectRatioMode.Stretched);
_graphBuilder.SetDefaultSyncSource();
//Log.Info("TSReaderPlayer: set Deinterlace");
//Log.Info("TSReaderPlayer: done");
return true;
}
catch (Exception ex)
{
Log.Error("TSReaderPlayer:exception while creating DShow graph {0} {1}", ex.Message, ex.StackTrace);
return false;
}
finally
{
if (comobj != null)
{
DirectShowUtil.ReleaseComObject(comobj);
}
comobj = null;
}
}