this.btnStop = new MaestroShared.Controls.NoFocusCueButton();\r
this.btnStepForward = new MaestroShared.Controls.NoFocusCueButton();\r
this.btnForward = new MaestroShared.Controls.NoFocusCueButton();\r
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();\r
- this.audioLabel = new System.Windows.Forms.Label();\r
this.audioTracks = new System.Windows.Forms.ComboBox();\r
this.mainPanel.SuspendLayout();\r
this.timecodePanel.SuspendLayout();\r
this.tableLayoutPanel2.SuspendLayout();\r
((System.ComponentModel.ISupportInitialize)(this.playSpeed)).BeginInit();\r
this.buttonsPanel.SuspendLayout();\r
- this.tableLayoutPanel1.SuspendLayout();\r
this.SuspendLayout();\r
// \r
// mainPanel\r
this.mainPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
this.mainPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
this.mainPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 65F));\r
- this.mainPanel.Size = new System.Drawing.Size(835, 165);\r
+ this.mainPanel.Size = new System.Drawing.Size(835, 156);\r
this.mainPanel.TabIndex = 0;\r
// \r
// trackBar\r
this.controlsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 400F));\r
this.controlsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
this.controlsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200F));\r
+ this.controlsPanel.Controls.Add(this.audioTracks, 0, 1);\r
this.controlsPanel.Controls.Add(this.tableLayoutPanel2, 0, 0);\r
this.controlsPanel.Controls.Add(this.logoPanel, 2, 0);\r
this.controlsPanel.Controls.Add(this.buttonsPanel, 0, 0);\r
- this.controlsPanel.Controls.Add(this.tableLayoutPanel1, 0, 1);\r
this.controlsPanel.Dock = System.Windows.Forms.DockStyle.Fill;\r
this.controlsPanel.Location = new System.Drawing.Point(3, 59);\r
this.controlsPanel.Name = "controlsPanel";\r
this.controlsPanel.RowCount = 2;\r
this.controlsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
this.controlsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));\r
- this.controlsPanel.Size = new System.Drawing.Size(829, 103);\r
+ this.controlsPanel.Size = new System.Drawing.Size(829, 94);\r
this.controlsPanel.TabIndex = 21;\r
// \r
// tableLayoutPanel2\r
this.btnForward.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;\r
this.btnForward.UseVisualStyleBackColor = false;\r
// \r
- // tableLayoutPanel1\r
- // \r
- this.tableLayoutPanel1.ColumnCount = 2;\r
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());\r
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));\r
- this.tableLayoutPanel1.Controls.Add(this.audioLabel, 0, 0);\r
- this.tableLayoutPanel1.Controls.Add(this.audioTracks, 1, 0);\r
- this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;\r
- this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 63);\r
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";\r
- this.tableLayoutPanel1.RowCount = 1;\r
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
- this.tableLayoutPanel1.Size = new System.Drawing.Size(394, 44);\r
- this.tableLayoutPanel1.TabIndex = 22;\r
- // \r
- // audioLabel\r
- // \r
- this.audioLabel.AutoSize = true;\r
- this.audioLabel.Location = new System.Drawing.Point(2, 5);\r
- this.audioLabel.Margin = new System.Windows.Forms.Padding(2, 5, 2, 0);\r
- this.audioLabel.Name = "audioLabel";\r
- this.audioLabel.Size = new System.Drawing.Size(34, 13);\r
- this.audioLabel.TabIndex = 28;\r
- this.audioLabel.Tag = "";\r
- this.audioLabel.Text = "Audio";\r
- this.audioLabel.Visible = false;\r
- // \r
// audioTracks\r
// \r
this.audioTracks.AllowDrop = true;\r
this.audioTracks.FormattingEnabled = true;\r
this.audioTracks.IntegralHeight = false;\r
this.audioTracks.ItemHeight = 13;\r
- this.audioTracks.Location = new System.Drawing.Point(40, 2);\r
+ this.audioTracks.Location = new System.Drawing.Point(2, 62);\r
this.audioTracks.Margin = new System.Windows.Forms.Padding(2);\r
this.audioTracks.Name = "audioTracks";\r
- this.audioTracks.Size = new System.Drawing.Size(352, 21);\r
- this.audioTracks.TabIndex = 29;\r
+ this.audioTracks.Size = new System.Drawing.Size(396, 21);\r
+ this.audioTracks.TabIndex = 30;\r
this.audioTracks.Visible = false;\r
// \r
// PlayerControls\r
this.Controls.Add(this.mainPanel);\r
this.Margin = new System.Windows.Forms.Padding(0);\r
this.Name = "PlayerControls";\r
- this.Size = new System.Drawing.Size(835, 165);\r
+ this.Size = new System.Drawing.Size(835, 156);\r
this.mainPanel.ResumeLayout(false);\r
this.mainPanel.PerformLayout();\r
this.timecodePanel.ResumeLayout(false);\r
((System.ComponentModel.ISupportInitialize)(this.playSpeed)).EndInit();\r
this.buttonsPanel.ResumeLayout(false);\r
this.buttonsPanel.PerformLayout();\r
- this.tableLayoutPanel1.ResumeLayout(false);\r
- this.tableLayoutPanel1.PerformLayout();\r
this.ResumeLayout(false);\r
\r
} \r
private VideoSpeedTrackbar playSpeed;\r
private System.Windows.Forms.Label lblPlaySpeed;\r
private TableLayoutPanel tableLayoutPanel2;\r
- private TableLayoutPanel tableLayoutPanel1;\r
- private Label audioLabel;\r
private ComboBox audioTracks;\r
}\r
}
\ No newline at end of file
public List<string> AvailableAudioTracks { get; set; }\r
public IBaseFilter Splitter { get; set; }\r
\r
- public PlayerGraph(string fileName, IntPtr handle, VideoRendererType rendererType)\r
- {\r
- try\r
- {\r
+ public PlayerGraph(string fileName, IntPtr handle, VideoRendererType rendererType) {\r
+ try {\r
MediaSeeking = this as IMediaSeeking;\r
MediaControl = this as IMediaControl;\r
MediaEvent = this as IMediaEvent;\r
\r
Splitter = AddSplitter(graphBuilder, sourceFilter);\r
bool audioOnly = true;\r
- if (DsFindPin.ByName(Splitter, "Video") != null)\r
- {\r
+ if (DsFindPin.ByName(Splitter, "Video") != null) {\r
audioOnly = false;\r
IBaseFilter videoDecoder = AddVideoDecoder(graphBuilder, Splitter);\r
EnableDeinterlace(videoDecoder);\r
IBaseFilter sampleGrabber = AddSampleGrabber(graphBuilder, videoDecoder);\r
SampleGrabber = (ISampleGrabber)sampleGrabber;\r
\r
- switch (rendererType)\r
- {\r
+ switch (rendererType) {\r
case VideoRendererType.VM7:\r
AddVM7Renderer(graphBuilder, sampleGrabber);\r
break;\r
break;\r
}\r
FilterGraphTools.RenderPin(graphBuilder, sampleGrabber, "Output");\r
- ConfigureSimpleRenderer(handle); \r
- }\r
- else\r
- {\r
+ ConfigureSimpleRenderer(handle);\r
+ } else {\r
logger.Warn("Video pin not available");\r
}\r
- if (DsFindPin.ByName(Splitter, "Audio") != null)\r
- {\r
+ if (DsFindPin.ByName(Splitter, "Audio") != null) {\r
IBaseFilter audioDecoder = AddAudioDecoder(graphBuilder, Splitter);\r
- if (audioOnly)\r
- {\r
+ if (audioOnly) {\r
throw new Exception("Audio only file is not supported.");\r
//IBaseFilter sampleGrabber = AddSampleGrabber(graphBuilder, audioDecoder);\r
//SampleGrabber = (ISampleGrabber)sampleGrabber;\r
//FilterGraphTools.RenderPin(graphBuilder, sampleGrabber, "Output");\r
- }\r
- else\r
+ } else\r
FilterGraphTools.RenderPin(graphBuilder, audioDecoder, "Output");\r
- }\r
- else\r
- {\r
+ } else {\r
logger.Warn("Audio pin not available");\r
}\r
\r
SearchAudioTracks(Splitter);\r
SetAudioTrack(0);\r
- }\r
- catch (Exception e)\r
- {\r
+ } catch (Exception e) {\r
logger.Error(e.Message);\r
logger.Error(e.StackTrace);\r
throw e;\r
}\r
}\r
\r
- private void EnableDeinterlace(IBaseFilter videoDecoder)\r
- {\r
+ private void EnableDeinterlace(IBaseFilter videoDecoder) {\r
logger.Debug("Enable YADIF deinterlace");\r
ILAVVideoSettings settings = (ILAVVideoSettings)videoDecoder;\r
settings.SetSWDeintMode(LAVSWDeintModes.SWDeintMode_YADIF);\r
settings.SetSWDeintOutput(LAVDeintOutput.DeintOutput_FramePer2Field);\r
}\r
\r
- private IBaseFilter AddAudioDecoder(IGraphBuilder graphBuilder, IBaseFilter splitter)\r
- {\r
+ private IBaseFilter AddAudioDecoder(IGraphBuilder graphBuilder, IBaseFilter splitter) {\r
logger.Debug("Add LAVAudio to graph");\r
IBaseFilter audioDecoder = null;\r
audioDecoder = LoadAudioDecoder(graphBuilder);\r
return audioDecoder;\r
}\r
\r
- private IBaseFilter AddVM9Renderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber)\r
- {\r
+ private IBaseFilter AddVM9Renderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber) {\r
logger.Debug("Add VideoMixingRenderer9 to graph");\r
IBaseFilter videoRenderer = (IBaseFilter)new VideoMixingRenderer9();\r
DsError.ThrowExceptionForHR(graphBuilder.AddFilter(videoRenderer, "Video Mixing Renderer 9"));\r
logger.Debug("Connect SampleGrabber -> VideoMixingRenderer9");\r
\r
- try\r
- {\r
+ try {\r
//IVMRFilterConfig9 filterConfig = (IVMRFilterConfig9) videoRenderer;\r
//filterConfig.SetRenderingMode(VMR9Mode.Windowless);\r
//WindowlessControl = (IVMRWindowlessControl9) videoRenderer;\r
//WindowlessControl.SetVideoClippingWindow(handle);\r
//WindowlessControl.SetAspectRatioMode(VMR9AspectRatioMode.LetterBox);\r
FilterGraphTools.ConnectFilters(graphBuilder, sampleGrabber, "Output", videoRenderer, "VMR Input0", true);\r
- }\r
- catch (Exception e)\r
- {\r
+ } catch (Exception e) {\r
logger.Error(e.StackTrace);\r
graphBuilder.RemoveFilter(videoRenderer);\r
logger.Info("Trying default VideoRenderer instead Video Mixing Renderer 9");\r
return videoRenderer;\r
}\r
\r
- private IBaseFilter AddVM7Renderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber)\r
- {\r
+ private IBaseFilter AddVM7Renderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber) {\r
logger.Debug("Add VideoMixingRenderer7 to graph");\r
IBaseFilter videoRenderer = (IBaseFilter)new VideoMixingRenderer();\r
DsError.ThrowExceptionForHR(graphBuilder.AddFilter(videoRenderer, "Video Mixing Renderer 7"));\r
logger.Debug("Connect SampleGrabber -> VideoMixingRenderer7");\r
\r
- try\r
- {\r
+ try {\r
//IVMRFilterConfig9 filterConfig = (IVMRFilterConfig9) videoRenderer;\r
//filterConfig.SetRenderingMode(VMR9Mode.Windowless);\r
//WindowlessControl = (IVMRWindowlessControl9) videoRenderer;\r
//WindowlessControl.SetVideoClippingWindow(handle);\r
//WindowlessControl.SetAspectRatioMode(VMR9AspectRatioMode.LetterBox);\r
FilterGraphTools.ConnectFilters(graphBuilder, sampleGrabber, "Output", videoRenderer, "VMR Input0", true);\r
- }\r
- catch (Exception e)\r
- {\r
+ } catch (Exception e) {\r
logger.Error(e.StackTrace);\r
graphBuilder.RemoveFilter(videoRenderer);\r
logger.Info("Trying default VideoRenderer instead Video Mixing Renderer 7");\r
return videoRenderer;\r
}\r
\r
- private void ConfigureSimpleRenderer(IntPtr handle)\r
- {\r
+ private void ConfigureSimpleRenderer(IntPtr handle) {\r
// Set the output window\r
int hr;\r
\r
DsError.ThrowExceptionForHR(hr);\r
}\r
\r
- private IBaseFilter AddDefaultRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber)\r
- {\r
+ private IBaseFilter AddDefaultRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber) {\r
logger.Debug("Add default VideoRenderer to graph");\r
IBaseFilter videoRenderer = (IBaseFilter)new VideoRendererDefault();\r
DsError.ThrowExceptionForHR(graphBuilder.AddFilter(videoRenderer, "VideoRendererDefault"));\r
//FilterGraphTools.ConnectFilters(graphBuilder, sampleGrabber, "Output", videoRenderer, "VMR Input0", true);\r
return videoRenderer;\r
}\r
- private IBaseFilter AddEVRRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber)\r
- {\r
+ private IBaseFilter AddEVRRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber) {\r
logger.Debug("Add EVR VideoRenderer to graph");\r
IBaseFilter videoRenderer = (IBaseFilter)new EnhancedVideoRenderer();\r
DsError.ThrowExceptionForHR(graphBuilder.AddFilter(videoRenderer, "EnhancedVideoRenderer"));\r
return videoRenderer;\r
}\r
\r
- private IBaseFilter AddSampleGrabber(IGraphBuilder graphBuilder, IBaseFilter videoDecoder)\r
- {\r
+ private IBaseFilter AddSampleGrabber(IGraphBuilder graphBuilder, IBaseFilter videoDecoder) {\r
logger.Debug("Add SampleGrabber to graph");\r
IBaseFilter grabber = (IBaseFilter)new SampleGrabber();\r
DsError.ThrowExceptionForHR(graphBuilder.AddFilter(grabber, "Sample Grabber"));\r
return grabber;\r
}\r
\r
- private IBaseFilter AddVideoDecoder(IGraphBuilder graphBuilder, IBaseFilter splitter)\r
- {\r
+ private IBaseFilter AddVideoDecoder(IGraphBuilder graphBuilder, IBaseFilter splitter) {\r
logger.Debug("Add LAVVideo to graph");\r
IBaseFilter videoDecoder = LoadVideoDecoder(graphBuilder);\r
\r
return videoDecoder;\r
}\r
\r
- private IBaseFilter AddSplitter(IGraphBuilder graphBuilder, IBaseFilter sourceFilter)\r
- {\r
+ private IBaseFilter AddSplitter(IGraphBuilder graphBuilder, IBaseFilter sourceFilter) {\r
logger.Debug("Add LAVSplitter to graph");\r
IBaseFilter splitter = LoadSplitter(graphBuilder);\r
logger.Debug("Connect SourceFilter -> LAVSplitter");\r
return splitter;\r
}\r
\r
- public void SearchAudioTracks(IBaseFilter splitter)\r
- {\r
+ public void SearchAudioTracks(IBaseFilter splitter) {\r
IAMStreamSelect amStreamSelect = (IAMStreamSelect)splitter;\r
- if (amStreamSelect != null)\r
- {\r
+ if (amStreamSelect != null) {\r
amStreamSelect.Count(out int count);\r
AudioCount = 0;\r
- for (int i = 0; i < count; i++)\r
- {\r
- amStreamSelect.Info(i, out AMMediaType ppmt, out AMStreamSelectInfoFlags pdwFlags, out int plcid, out int pdwGroup, \r
+ for (int i = 0; i < count; i++) {\r
+ amStreamSelect.Info(i, out AMMediaType ppmt, out AMStreamSelectInfoFlags pdwFlags, out int plcid, out int pdwGroup,\r
out string ppszName, out object ppObject, out object ppUnk);\r
- if (ppmt.majorType == MediaType.Audio)\r
- {\r
+ if (ppmt.majorType == MediaType.Audio) {\r
logger.Debug("Found audio channel");\r
AudioCount++;\r
- if (AvailableAudioTracks != null && ppszName != null) { \r
- AvailableAudioTracks.Add(i+". "+ppszName); \r
+ if (AvailableAudioTracks != null && ppszName != null) {\r
+ AvailableAudioTracks.Add(i + ". " + ppszName);\r
}\r
}\r
DsUtils.FreeAMMediaType(ppmt);\r
}\r
}\r
\r
- private IBaseFilter LoadVideoDecoder(IGraphBuilder graphBuilder)\r
- {\r
+ private IBaseFilter LoadVideoDecoder(IGraphBuilder graphBuilder) {\r
ILAVVideoSettings lavVideoSettings;\r
IBaseFilter videoDecoder = FilterProvider.GetVideoFilter(out lavVideoSettings);\r
- if (videoDecoder == null)\r
+ if (videoDecoder == null) {\r
videoDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Video Decoder");\r
- //if (videoDecoder != null)\r
- // graphBuilder.AddFilter(videoDecoder, "LAV Video Decoder");\r
+ } else {\r
+ graphBuilder.AddFilter(videoDecoder, "LAV Video Decoder");\r
+ }\r
return videoDecoder;\r
}\r
\r
- private IBaseFilter LoadAudioDecoder(IGraphBuilder graphBuilder)\r
- {\r
+ private IBaseFilter LoadAudioDecoder(IGraphBuilder graphBuilder) {\r
ILAVAudioSettings lavAudioSettings;\r
ILAVAudioStatus lavAudioStatus;\r
IBaseFilter audioDecoder = FilterProvider.GetAudioFilter(out lavAudioSettings, out lavAudioStatus);\r
- if (audioDecoder == null)\r
+ if (audioDecoder == null) {\r
audioDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Audio Decoder");\r
- //if (audioDecoder != null)\r
- // graphBuilder.AddFilter(audioDecoder, "LAV Audio Decoder");\r
-\r
- IBaseFilter audioSwitcher = FilterGraphTools.AddFilterFromClsid(graphBuilder, new Guid("{18C16B08-6497-420E-AD14-22D21C2CEAB7}"), "Audio Switcher");\r
+ } else {\r
+ graphBuilder.AddFilter(audioDecoder, "LAV Audio Decoder");\r
+ }\r
+ //IBaseFilter audioSwitcher = FilterGraphTools.AddFilterFromClsid(graphBuilder, new Guid("{18C16B08-6497-420E-AD14-22D21C2CEAB7}"), "Audio Switcher");\r
//graphBuilder.AddFilter(audioSwitcher, "Audio Switcher");\r
-\r
return audioDecoder;\r
}\r
\r
- private IBaseFilter LoadSplitter(IGraphBuilder graphBuilder)\r
- {\r
+ private IBaseFilter LoadSplitter(IGraphBuilder graphBuilder) {\r
ILAVSplitterSettings lavSplitterSettings;\r
IBaseFilter splitter = FilterProvider.GetSplitter(out lavSplitterSettings);\r
if (splitter == null) {\r
logger.Info("No splitter found in codecs dir, using installed");\r
splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Splitter");\r
+ } else {\r
+ graphBuilder.AddFilter(splitter, "LAV Splitter");\r
}\r
-\r
- if (splitter == null) {\r
- throw new Exception("A splitter betöltése sikertelen!");\r
- }\r
-\r
- //graphBuilder.AddFilter(splitter, "LAV Splitter");\r
return splitter;\r
}\r
\r
// Shut down capture\r
- public void Dispose()\r
- {\r
- lock (this)\r
- {\r
+ public void Dispose() {\r
+ lock (this) {\r
if (isDisposed)\r
return;\r
logger.Debug("Dispose");\r
m_DsRot.Dispose();\r
#endif\r
IMediaControl mediaCtrl = (IMediaControl)this;\r
- if (mediaCtrl != null)\r
- {\r
+ if (mediaCtrl != null) {\r
mediaCtrl.Stop();\r
IGraphBuilder graphBuilder = (IGraphBuilder)mediaCtrl;\r
FilterGraphTools.DisconnectAllPins(graphBuilder);\r
FilterGraphTools.RemoveAllFilters(graphBuilder);\r
}\r
\r
- if (this != null)\r
- { \r
- Marshal.ReleaseComObject(this); \r
+ if (this != null) {\r
+ Marshal.ReleaseComObject(this);\r
}\r
isDisposed = true;\r
}\r
}\r
\r
- public void SetAudioTrack(int selectedTrackIndex)\r
- {\r
+ public void SetAudioTrack(int selectedTrackIndex) {\r
IAMStreamSelect streamSelect = (IAMStreamSelect)Splitter;\r
- if (streamSelect != null)\r
- {\r
- streamSelect.Enable(selectedTrackIndex+1, AMStreamSelectEnableFlags.Enable);\r
+ if (streamSelect != null) {\r
+ streamSelect.Enable(selectedTrackIndex + 1, AMStreamSelectEnableFlags.Enable);\r
}\r
}\r
}\r