public MetadataProvider[] Metadatas { get; set; }\r
public Target OctopusTarget { get; set; }\r
public Target TrafficTarget { get; set; }\r
+ public Target FreeTarget { get; set; }\r
}\r
}\r
"PAUSE": "Pause",\r
"PLAY": "Play",\r
"RECORD": "Record",\r
- "STOP": "Stop"\r
+ "STOP": "Stop",\r
+ "SUCCESSMESSAGE": "Successfull transfer to path: '{0}', file name: '{1}'",\r
+ "ERRORCONFIGURATION": "Found incomplete 'audiorecorder.json' configuration file, 'target' section is missing.",\r
+ "ERROREMPTYID": "Selected ID cna not be empty."\r
}\r
"workingDirectory": "file://C:\\temp",\r
"peekMeterStep": 200,\r
"octopusTarget": {\r
- "label": "Octopus mappába küldés",\r
- "processor": "FTPTargetProcessor",\r
- "tag": "Betöltés",\r
+ "processor": "UNCTargetProcessor",\r
"outputFormat": "%ID%",\r
- "subFolderFormat": "%IDROOT%-%TEXT%",\r
- "killDateDays": 7,\r
"remote": {\r
- "address": "ftp://localhost",\r
- "userName": "dani",\r
- "password": "pSCkmnEXm7xhrWh/AzxrnklEcGeJU4SVFkuag3B5H+rTcNVEELDgsF6uTiDISSdnnJyDn/kKwoxg521neTJXV6FIs/p2QmpHKaexiCmm47R1tsZeCFmmpTv4MHuiGjwL",\r
- "timeout": 1000\r
+ "address": "file://C:\\temp"\r
+ }\r
+ },\r
+ "freeTarget": {\r
+ "processor": "UNCTargetProcessor",\r
+ "outputFormat": "%ID%",\r
+ "remote": {\r
+ "address": "file://C:\\temp1"\r
}\r
},\r
"metadatas": [\r
"timeout": 3000\r
},\r
"uiFileName": "audiorecorder.en"\r
+ },\r
+ {\r
+ "$type": "FreeMetadata",\r
+ "useAlternateTarget": true,\r
+ "uiFileName": "audiorecorder.en"\r
}\r
]\r
}
\ No newline at end of file
this.groupBox3 = new System.Windows.Forms.GroupBox();\r
this.txtRecordFilePath = new System.Windows.Forms.TextBox();\r
this.panel1 = new System.Windows.Forms.Panel();\r
+ this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();\r
this.pmVolume = new Ernzo.WinForms.Controls.PeakMeterCtrl();\r
this.groupBox1.SuspendLayout();\r
this.groupBox2.SuspendLayout();\r
this.panel1.Size = new System.Drawing.Size(399, 55);\r
this.panel1.TabIndex = 11;\r
// \r
+ // saveFileDialog\r
+ // \r
+ this.saveFileDialog.DefaultExt = "wav";\r
+ this.saveFileDialog.Filter = "WAV files (*.wav)|*.wav";\r
+ this.saveFileDialog.RestoreDirectory = true;\r
+ // \r
// pmVolume\r
// \r
this.pmVolume.BandsCount = 1;\r
private System.Windows.Forms.TrackBar tbVolume;\r
private System.Windows.Forms.TextBox txtRecordFilePath;\r
private System.Windows.Forms.Panel panel1;\r
+ private System.Windows.Forms.SaveFileDialog saveFileDialog;\r
}\r
}\r
\r
using static AudioRecorder.MetadataSelectorForm;\r
using MaestroShared.Metadata;\r
using AudioRecorder.Properties;\r
+using System.Threading;\r
\r
namespace AudioRecorder {\r
public delegate void RefreshPanelDelegate();\r
private AudioRecorderSettings parameters;\r
private ITimeCodeWorker timeCodeWorker;\r
private bool recording;\r
- private Timer countDownTimer;\r
+ private System.Windows.Forms.Timer countDownTimer;\r
private int countDown = 3;\r
private MMDevice currentDevice;\r
private bool pausing;\r
\r
private void OnMainShown(object sender, EventArgs e) {\r
try {\r
- Type[] knownTypes = { typeof(OctopusMetadata), typeof(NativeOctopusMetadata), typeof(TrafficMetadata), typeof(MediaCubeMetadata) };\r
+ Type[] knownTypes = { typeof(FreeMetadata), typeof(OctopusMetadata), typeof(NativeOctopusMetadata), typeof(TrafficMetadata), typeof(MediaCubeMetadata) };\r
parameters = ConfigurationSerializer.Load<AudioRecorderSettings>(CONFIG_FILE, knownTypes);\r
InitializeControlTexts();\r
\r
UpdateGUI();\r
timeCodeWorker = new TimeCodeWorker(timecodeLabel);\r
- countDownTimer = new Timer();\r
+ countDownTimer = new System.Windows.Forms.Timer();\r
countDownTimer.Interval = 1000;\r
countDownTimer.Tick += new EventHandler(OnCountDownTick);\r
devicesDetector = new AudioDevicesDetector();\r
}\r
}\r
\r
+\r
+ public DialogResult ShowMTAFileSaveDialog(SaveFileDialog sd) {\r
+ DialogResult dlgRes = DialogResult.Cancel;\r
+ Thread theThread = new Thread((ThreadStart)delegate\r
+ {\r
+ //Create a layout dialog instance on the current thread to align the file dialog Form \r
+ Form frmLayout = new Form();\r
+ frmLayout.StartPosition = FormStartPosition.Manual;\r
+ frmLayout.Location = this.Location;\r
+ frmLayout.DesktopLocation = this.DesktopLocation;\r
+\r
+ //the layout form is not visible \r
+ frmLayout.Width = 0;\r
+ frmLayout.Height = 0;\r
+ dlgRes = sd.ShowDialog(frmLayout);\r
+ });\r
+\r
+ try {\r
+ //set STA as the Open file dialog needs it to work \r
+ theThread.TrySetApartmentState(ApartmentState.STA);\r
+\r
+ //start the thread \r
+ theThread.Start();\r
+\r
+ // Wait for thread to get started \r
+ while (!theThread.IsAlive) { Thread.Sleep(1); }\r
+\r
+ // Wait a tick more (@see: http://scn.sap.com/thread/45710) \r
+ Thread.Sleep(1);\r
+\r
+ //wait for the dialog thread to finish \r
+ theThread.Join();\r
+\r
+ } catch (Exception e) {\r
+ MsgBox.Error(e.Message);\r
+ }\r
+\r
+ return (dlgRes);\r
+ }\r
+\r
private void OnRecordClick(object sender, EventArgs e) {\r
- MetadataSelectorForm idSelectorForm = new MetadataSelectorForm(parameters);\r
- if (idSelectorForm.ShowDialog() == DialogResult.Cancel)\r
- return;\r
- currentMetadata = idSelectorForm.SelectedMetadata;\r
- currentRecordingPath = CreateCurrenRecordingPath(parameters.WorkingDirectory.LocalPath, currentMetadata.ID);\r
+ if (parameters.Metadatas == null || parameters.Metadatas.Length == 0) {\r
+ saveFileDialog.InitialDirectory = parameters.WorkingDirectory.LocalPath;\r
+ saveFileDialog.RestoreDirectory = true;\r
+ if (ShowMTAFileSaveDialog(saveFileDialog) == DialogResult.Cancel)\r
+ return;\r
+ FileInfo fi = new FileInfo(saveFileDialog.FileName);\r
+ currentMetadata = new Metadata() { ID = Path.GetFileNameWithoutExtension(fi.Name) };\r
+ currentRecordingPath = saveFileDialog.FileName;\r
+ } else {\r
+ MetadataSelectorForm idSelectorForm = new MetadataSelectorForm(parameters);\r
+ if (idSelectorForm.ShowDialog() == DialogResult.Cancel)\r
+ return;\r
+ currentMetadata = idSelectorForm.SelectedMetadata;\r
+ currentRecordingPath = CreateCurrenRecordingPath(parameters.WorkingDirectory.LocalPath, currentMetadata.ID);\r
+ }\r
+\r
txtRecordFilePath.Text = currentRecordingPath;\r
if (String.IsNullOrEmpty(currentRecordingPath))\r
return;\r
private void OnPlayClick(object sender, EventArgs e) {\r
if (String.IsNullOrEmpty(currentRecordingPath) || !File.Exists(currentRecordingPath))\r
return;\r
- Process process = new Process();\r
- process.StartInfo = new ProcessStartInfo() {\r
- FileName = currentRecordingPath\r
+ Process process = new Process {\r
+ StartInfo = new ProcessStartInfo() {\r
+ FileName = currentRecordingPath\r
+ }\r
};\r
process.Start();\r
}\r
\r
private void Export() {\r
if (String.IsNullOrEmpty(currentMetadata.ID)) {\r
- MsgBox.Error("A kiválasztott metaadat azonosító nem lehet üres.");\r
+ MsgBox.Error(parameters.Resource("ERROREMPTYID", Resources.ERROREMPTYID));\r
return;\r
}\r
\r
MetadataType metadataType = MetadataTypeUtil.Guess(currentMetadata.ID);\r
\r
- Target target = parameters.OctopusTarget;\r
+ Target target = null;\r
\r
- switch (metadataType) {\r
- case MetadataType.TrafficAD:\r
- case MetadataType.TrafficPromo:\r
- case MetadataType.TrafficMaterial:\r
+ switch (currentMetadata.TargetType) {\r
+\r
+ case TargetType.Octopus:\r
+ target = parameters.OctopusTarget;\r
+ break;\r
+ case TargetType.TrafficAD:\r
+ case TargetType.TrafficPromo:\r
+ case TargetType.TrafficMaterial:\r
target = parameters.TrafficTarget;\r
break;\r
+ case TargetType.Free:\r
+ target = parameters.FreeTarget;\r
+ break;\r
}\r
if (target == null) {\r
- MsgBox.Error("Hiányos az 'audiorecorder.json' konfigurációs állomány, nem található 'target' beállítás.");\r
+ MsgBox.Error(parameters.Resource("ERRORCONFIGURATION", Resources.ERRORCONFIGURATION));\r
return;\r
}\r
\r
if (TargetProcessor.READY.Equals(processor.Status)) {\r
string path = Path.GetDirectoryName(processor.Output);\r
string name = Path.GetFileName(processor.Output);\r
- MsgBox.Info(String.Format($"Sikeres betöltés a '{path}' mappába, '{name}' néven."));\r
+ MsgBox.Info(String.Format(parameters.Resource("SUCCESSMESSAGE", Resources.SUCCESSMESSAGE), path, name));\r
}\r
else\r
MsgBox.Error(processor.Message);\r
2zYMwxC7J/J4J8uyfsunrxvJQkThRl7Jn1zIPz8uSV/nWE9kicDiSwAAAABJRU5ErkJggg==\r
</value>\r
</data>\r
+ <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+ <value>17, 17</value>\r
+ </metadata>\r
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r
<value>162</value>\r
</metadata>\r
using AudioRecorder.Properties;\r
-using MaestroShared.Configuration;\r
+using MaestroShared.Metadata;\r
using System;\r
using System.Windows.Forms;\r
\r
public partial class MetadataSelectorForm : Form {\r
private Metadata selectedMetadata;\r
\r
+ public enum TargetType {\r
+ Free, Octopus, TrafficPromo, TrafficAD, TrafficMaterial \r
+ }\r
+\r
public class Metadata {\r
public string ID { get; set; }\r
public string Text { get; set; }\r
+ public TargetType TargetType { get; set; }\r
}\r
\r
public Metadata SelectedMetadata {\r
metadataIDSelector.NativeOctopusIDSelector.IDChangedEvent += NativeOctopusIDChangedEvent;\r
metadataIDSelector.TrafficIDSelector.IDChangedEvent += TrafficIDChangedEvent;\r
metadataIDSelector.MetadataIDText.TextChanged += OnMetadataIDChanged;\r
+ metadataIDSelector.FreeIDText.TextChanged += OnFreeIDChanged;\r
buttonCancel.Text = settings.Resource("CANCEL", Resources.CANCEL);\r
buttonOK.Text = settings.Resource("DONE", Resources.DONE);\r
Text = settings.Resource("SELECTORTITLE", Resources.SELECTORTITLE);\r
SelectedMetadata = null;\r
}\r
\r
+ private void OnFreeIDChanged(object sender, EventArgs e) {\r
+ string text = metadataIDSelector.FreeIDText == null ? null : metadataIDSelector.FreeIDText.Text.Trim();\r
+ if (text == null || text.Length == 0)\r
+ SelectedMetadata = null;\r
+ else\r
+ SelectedMetadata = new Metadata() {\r
+ ID = text,\r
+ TargetType = TargetType.Free\r
+ };\r
+ }\r
+\r
private void UpdateOkButtonEnabled() {\r
buttonOK.Enabled = !String.IsNullOrEmpty(SelectedMetadata?.ID);\r
}\r
else\r
SelectedMetadata = new Metadata() {\r
ID = name,\r
- Text = text\r
+ Text = text,\r
+ TargetType = TargetType.Octopus\r
};\r
}\r
\r
else\r
SelectedMetadata = new Metadata() {\r
ID = name,\r
- Text = text\r
+ Text = text,\r
+ TargetType = TargetType.Octopus\r
};\r
}\r
\r
private void TrafficIDChangedEvent(string id, int variantID, string text) {\r
if (id == null)\r
SelectedMetadata = null;\r
- else\r
- SelectedMetadata = new Metadata() {\r
+ else {\r
+ var metadata = new Metadata() {\r
ID = id,\r
Text = text\r
};\r
+ MetadataType metadataType = MetadataTypeUtil.Guess(id);\r
+ switch (metadataType) {\r
+ case MetadataType.TrafficAD:\r
+ metadata.TargetType = TargetType.TrafficAD;\r
+ break;\r
+ case MetadataType.TrafficPromo:\r
+ metadata.TargetType = TargetType.TrafficPromo;\r
+ break;\r
+ case MetadataType.TrafficMaterial:\r
+ metadata.TargetType = TargetType.TrafficMaterial;\r
+ break;\r
+ }\r
+ SelectedMetadata = metadata;\r
+ }\r
}\r
\r
private void OnCancelClick(object sender, EventArgs e) {\r
/// <summary>\r
/// The main entry point for the application.\r
/// </summary>\r
+ //[STAThread]\r
[MTAThread]\r
static void Main() {\r
Application.EnableVisualStyles();\r
// You can specify all the values or you can default the Build and Revision Numbers \r
// by using the '*' as shown below:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.7.0")]\r
-[assembly: AssemblyFileVersion("2.0.7.0")]\r
+[assembly: AssemblyVersion("2.0.7.2")]\r
+[assembly: AssemblyFileVersion("2.0.7.2")]\r
}\r
}\r
\r
+ /// <summary>\r
+ /// Looks up a localized string similar to Hiányos az 'audiorecorder.json' konfigurációs állomány, nem található 'target' beállítás..\r
+ /// </summary>\r
+ internal static string ERRORCONFIGURATION {\r
+ get {\r
+ return ResourceManager.GetString("ERRORCONFIGURATION", resourceCulture);\r
+ }\r
+ }\r
+ \r
+ /// <summary>\r
+ /// Looks up a localized string similar to A kiválasztott metaadat azonosító nem lehet üres..\r
+ /// </summary>\r
+ internal static string ERROREMPTYID {\r
+ get {\r
+ return ResourceManager.GetString("ERROREMPTYID", resourceCulture);\r
+ }\r
+ }\r
+ \r
/// <summary>\r
/// Looks up a localized string similar to Szunet.\r
/// </summary>\r
return ResourceManager.GetString("STOP", resourceCulture);\r
}\r
}\r
+ \r
+ /// <summary>\r
+ /// Looks up a localized string similar to Sikeres betöltés a '{0}' mappába, '{1}' néven..\r
+ /// </summary>\r
+ internal static string SUCCESSMESSAGE {\r
+ get {\r
+ return ResourceManager.GetString("SUCCESSMESSAGE", resourceCulture);\r
+ }\r
+ }\r
}\r
}\r
<data name="bs-user-logo" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
<value>..\Resources\bs-user-logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
</data>\r
+ <data name="ERRORCONFIGURATION" xml:space="preserve">\r
+ <value>Hiányos az 'audiorecorder.json' konfigurációs állomány, nem található 'target' beállítás.</value>\r
+ </data>\r
+ <data name="ERROREMPTYID" xml:space="preserve">\r
+ <value>A kiválasztott metaadat azonosító nem lehet üres.</value>\r
+ </data>\r
+ <data name="SUCCESSMESSAGE" xml:space="preserve">\r
+ <value>Sikeres betöltés a '{0}' mappába, '{1}' néven.</value>\r
+ </data>\r
</root>
\ No newline at end of file
"NOINPUT": "NO INPUT",\r
"OPEN": "Open",\r
"OPTIONAL": "Optional",\r
- "PAUSE": "Pause (Esc)",\r
- "FORWARD": "Forward (->)",\r
- "REWIND": "Rewind (<-)",\r
+ "PAUSE": "Pause (Space)",\r
+ "FORWARD": "Forward (Ctrl + >)",\r
+ "REWIND": "Rewind (Ctrl + <)",\r
"PAUSED": "PAUSED",\r
- "PLAY": "Play (Esc)",\r
+ "PLAY": "Play (Space)",\r
"PLAYING": "PLAYING",\r
+ "STEPBACK": "Step back (<)",\r
+ "STEPFORWARD": "Step forward (>)",\r
"POSITIONASTCIN": "Current position as TC in",\r
"POSITIONASTCOUT": "Current position as TC out",\r
"SEGMENTS": "Segments",\r
this.lbStatus = new System.Windows.Forms.Label();\r
this.lbDuration = new System.Windows.Forms.Label();\r
this.lbEndTC = new System.Windows.Forms.Label();\r
+ this.controlsPanel = new System.Windows.Forms.TableLayoutPanel();\r
this.buttonsPanel = new System.Windows.Forms.FlowLayoutPanel();\r
this.btnPlay = new MaestroShared.Controls.NoFocusCueButton();\r
this.btnRewind = new MaestroShared.Controls.NoFocusCueButton();\r
+ this.btnStepBack = new MaestroShared.Controls.NoFocusCueButton();\r
this.btnStop = new MaestroShared.Controls.NoFocusCueButton();\r
+ this.btnStepForward = new MaestroShared.Controls.NoFocusCueButton();\r
this.btnForward = new MaestroShared.Controls.NoFocusCueButton();\r
+ this.logoPanel = new System.Windows.Forms.Panel();\r
this.mainPanel.SuspendLayout();\r
this.timecodePanel.SuspendLayout();\r
+ this.controlsPanel.SuspendLayout();\r
this.buttonsPanel.SuspendLayout();\r
this.SuspendLayout();\r
// \r
this.mainPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
this.mainPanel.Controls.Add(this.trackBar, 0, 1);\r
this.mainPanel.Controls.Add(this.timecodePanel, 0, 0);\r
- this.mainPanel.Controls.Add(this.buttonsPanel, 0, 2);\r
+ this.mainPanel.Controls.Add(this.controlsPanel, 0, 2);\r
this.mainPanel.Dock = System.Windows.Forms.DockStyle.Top;\r
this.mainPanel.Location = new System.Drawing.Point(0, 0);\r
this.mainPanel.Margin = new System.Windows.Forms.Padding(0);\r
this.mainPanel.RowCount = 3;\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());\r
- this.mainPanel.Size = new System.Drawing.Size(835, 116);\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, 121);\r
this.mainPanel.TabIndex = 0;\r
// \r
// trackBar\r
// \r
// lbCurrentTC\r
// \r
+ this.lbCurrentTC.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \r
+ | System.Windows.Forms.AnchorStyles.Left) \r
+ | System.Windows.Forms.AnchorStyles.Right)));\r
this.lbCurrentTC.BackColor = System.Drawing.Color.Transparent;\r
- this.lbCurrentTC.Dock = System.Windows.Forms.DockStyle.Top;\r
this.lbCurrentTC.Font = new System.Drawing.Font("Calibri", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
this.lbCurrentTC.Location = new System.Drawing.Point(170, 13);\r
this.lbCurrentTC.Name = "lbCurrentTC";\r
this.lbEndTC.Text = "00:00:00.00";\r
this.lbEndTC.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
// \r
+ // controlsPanel\r
+ // \r
+ this.controlsPanel.AutoSize = true;\r
+ this.controlsPanel.ColumnCount = 2;\r
+ this.controlsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 75F));\r
+ this.controlsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));\r
+ this.controlsPanel.Controls.Add(this.buttonsPanel, 0, 0);\r
+ this.controlsPanel.Controls.Add(this.logoPanel, 1, 0);\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 = 1;\r
+ this.controlsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
+ this.controlsPanel.Size = new System.Drawing.Size(829, 59);\r
+ this.controlsPanel.TabIndex = 21;\r
+ // \r
// buttonsPanel\r
// \r
this.buttonsPanel.AutoSize = true;\r
- this.buttonsPanel.BackgroundImage = global::DxPlay.Properties.Resources.bs_user_logo;\r
this.buttonsPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;\r
this.buttonsPanel.Controls.Add(this.btnPlay);\r
this.buttonsPanel.Controls.Add(this.btnRewind);\r
+ this.buttonsPanel.Controls.Add(this.btnStepBack);\r
this.buttonsPanel.Controls.Add(this.btnStop);\r
+ this.buttonsPanel.Controls.Add(this.btnStepForward);\r
this.buttonsPanel.Controls.Add(this.btnForward);\r
- this.buttonsPanel.Dock = System.Windows.Forms.DockStyle.Fill;\r
- this.buttonsPanel.Location = new System.Drawing.Point(0, 56);\r
+ this.buttonsPanel.Dock = System.Windows.Forms.DockStyle.Left;\r
+ this.buttonsPanel.Location = new System.Drawing.Point(0, 0);\r
this.buttonsPanel.Margin = new System.Windows.Forms.Padding(0);\r
this.buttonsPanel.Name = "buttonsPanel";\r
- this.buttonsPanel.Size = new System.Drawing.Size(835, 60);\r
+ this.buttonsPanel.Size = new System.Drawing.Size(360, 60);\r
this.buttonsPanel.TabIndex = 20;\r
// \r
// btnPlay\r
this.btnRewind.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;\r
this.btnRewind.UseVisualStyleBackColor = false;\r
// \r
+ // btnStepBack\r
+ // \r
+ this.btnStepBack.AutoSize = true;\r
+ this.btnStepBack.BackColor = System.Drawing.Color.Transparent;\r
+ this.btnStepBack.Cursor = System.Windows.Forms.Cursors.Hand;\r
+ this.btnStepBack.FlatAppearance.BorderSize = 0;\r
+ this.btnStepBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;\r
+ this.btnStepBack.Image = global::DxPlay.Properties.Resources.baseline_skip_previous_black_24dp;\r
+ this.btnStepBack.Location = new System.Drawing.Point(123, 3);\r
+ this.btnStepBack.Name = "btnStepBack";\r
+ this.btnStepBack.Size = new System.Drawing.Size(54, 54);\r
+ this.btnStepBack.TabIndex = 21;\r
+ this.btnStepBack.TabStop = false;\r
+ this.btnStepBack.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;\r
+ this.btnStepBack.UseVisualStyleBackColor = false;\r
+ // \r
// btnStop\r
// \r
this.btnStop.AutoSize = true;\r
this.btnStop.FlatAppearance.BorderSize = 0;\r
this.btnStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;\r
this.btnStop.Image = global::DxPlay.Properties.Resources.ic_stop_black_24dp_2x;\r
- this.btnStop.Location = new System.Drawing.Point(123, 3);\r
+ this.btnStop.Location = new System.Drawing.Point(183, 3);\r
this.btnStop.Name = "btnStop";\r
this.btnStop.Size = new System.Drawing.Size(54, 54);\r
this.btnStop.TabIndex = 19;\r
this.btnStop.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;\r
this.btnStop.UseVisualStyleBackColor = false;\r
// \r
+ // btnStepForward\r
+ // \r
+ this.btnStepForward.AutoSize = true;\r
+ this.btnStepForward.BackColor = System.Drawing.Color.Transparent;\r
+ this.btnStepForward.Cursor = System.Windows.Forms.Cursors.Hand;\r
+ this.btnStepForward.FlatAppearance.BorderSize = 0;\r
+ this.btnStepForward.FlatStyle = System.Windows.Forms.FlatStyle.Flat;\r
+ this.btnStepForward.Image = global::DxPlay.Properties.Resources.baseline_skip_next_black_24dp;\r
+ this.btnStepForward.Location = new System.Drawing.Point(243, 3);\r
+ this.btnStepForward.Name = "btnStepForward";\r
+ this.btnStepForward.Size = new System.Drawing.Size(54, 54);\r
+ this.btnStepForward.TabIndex = 22;\r
+ this.btnStepForward.TabStop = false;\r
+ this.btnStepForward.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;\r
+ this.btnStepForward.UseVisualStyleBackColor = false;\r
+ // \r
// btnForward\r
// \r
this.btnForward.AutoSize = true;\r
this.btnForward.FlatAppearance.BorderSize = 0;\r
this.btnForward.FlatStyle = System.Windows.Forms.FlatStyle.Flat;\r
this.btnForward.Image = global::DxPlay.Properties.Resources.baseline_fast_forward_black_24dp;\r
- this.btnForward.Location = new System.Drawing.Point(183, 3);\r
+ this.btnForward.Location = new System.Drawing.Point(303, 3);\r
this.btnForward.Name = "btnForward";\r
this.btnForward.Size = new System.Drawing.Size(54, 54);\r
this.btnForward.TabIndex = 20;\r
this.btnForward.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;\r
this.btnForward.UseVisualStyleBackColor = false;\r
// \r
+ // logoPanel\r
+ // \r
+ this.logoPanel.AutoSize = true;\r
+ this.logoPanel.BackgroundImage = global::DxPlay.Properties.Resources.bs_user_logo;\r
+ this.logoPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;\r
+ this.logoPanel.Dock = System.Windows.Forms.DockStyle.Fill;\r
+ this.logoPanel.Location = new System.Drawing.Point(621, 0);\r
+ this.logoPanel.Margin = new System.Windows.Forms.Padding(0);\r
+ this.logoPanel.Name = "logoPanel";\r
+ this.logoPanel.Size = new System.Drawing.Size(208, 60);\r
+ this.logoPanel.TabIndex = 21;\r
+ // \r
// PlayerControls\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\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, 116);\r
+ this.Size = new System.Drawing.Size(835, 126);\r
this.mainPanel.ResumeLayout(false);\r
this.mainPanel.PerformLayout();\r
this.timecodePanel.ResumeLayout(false);\r
+ this.controlsPanel.ResumeLayout(false);\r
+ this.controlsPanel.PerformLayout();\r
this.buttonsPanel.ResumeLayout(false);\r
this.buttonsPanel.PerformLayout();\r
this.ResumeLayout(false);\r
private MaestroShared.Controls.NoFocusCueButton btnStop;\r
private MaestroShared.Controls.NoFocusCueButton btnRewind;\r
private MaestroShared.Controls.NoFocusCueButton btnForward;\r
+ private System.Windows.Forms.TableLayoutPanel controlsPanel;\r
+ private System.Windows.Forms.Panel logoPanel;\r
+ private MaestroShared.Controls.NoFocusCueButton btnStepBack;\r
+ private MaestroShared.Controls.NoFocusCueButton btnStepForward;\r
}\r
}\r
public NoFocusCueButton Stop { get => btnStop; }\r
public NoFocusCueButton Rewind { get => btnRewind; }\r
public NoFocusCueButton Forward { get => btnForward; }\r
+ public NoFocusCueButton StepBack { get => btnStepBack; }\r
+ public NoFocusCueButton StepForward { get => btnStepForward; }\r
\r
}\r
}\r
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
<data name="btnRewind.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
<value>\r
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAEqSURBVGhD7dgtTgNRFMXxCUlFDaZJDboSgWUFaFS3wArYQbsD1oCpZgVYBBJdRWqqmkAInMfk\r
- JS/Nnem7d46Z5vySf1LMuYaPGRoRERERobpEz+3HQVg7Lrdoi37/v4pj7VSboBX6Qelo9DBrx2WB3lA+\r
- GD3M2nF5QAd0fNR7mLVTbYZekHUwV4O143KHPpF1rOwU1k61KXpC1hGrLqwdl2v0gawDXVlYO9Uu0CP6\r
- QtZ4XyXWjssVekXWaE0Za8flHu2RNVhbwtpxWyLGYdZOyKi/hbL8w/eNrPG+SqydsBvE+PXH2gkZ9R+y\r
- UnoE2CHrWNkprJ2QOWI8hLF2wkb7OF1KLyLvaOhh1k5IehVcI8YrJWMnbLQv9aX075BN+3EQ1o6IiIjI\r
- mWqaP9Jxlnyjr5KKAAAAAElFTkSuQmCC\r
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAASpJREFUaEPt\r
+ 2C1OA1EUxfEJSUUNpkkNuhKBZQVoVLfACthBuwPWgKlmBVgEEl1FaqqaQAicx+QlL82d6bt3jpnm/JJ/\r
+ Usy5ho8ZGhERERGhukTP7cdBWDsut2iLfv+/imPtVJugFfpB6Wj0MGvHZYHeUD4YPczacXlAB3R81HuY\r
+ tVNthl6QdTBXg7Xjcoc+kXWs7BTWTrUpekLWEasurB2Xa/SBrANdWVg71S7QI/pC1nhfJdaOyxV6RdZo\r
+ TRlrx+Ue7ZE1WFvC2nFbIsZh1k7IqL+FsvzD942s8b5KrJ2wG8T49cfaCRn1H7JSegTYIetY2SmsnZA5\r
+ YjyEsXbCRvs4XUovIu9o6GHWTkh6FVwjxislYydstC/1pfTvkE37cRDWjoiIiMiZapo/0nGWfKOvkooA\r
+ AAAASUVORK5CYII=\r
</value>\r
</data>\r
</root>
\ No newline at end of file
using Myriadbits.MXF;\r
using MaestroShared.Metadata;\r
using NLog;\r
-using MaestroShared.Configuration;\r
using DxPlay.Properties;\r
\r
namespace DxPlay {\r
private object tcLock = new object();\r
Bitmap m_Bitmap = null;\r
public bool IsError { get; set; }\r
+\r
+ private object SeekToLock = new object();\r
+ private int seekTo;\r
+ public int SeekTo {\r
+ get {\r
+ lock (SeekToLock) {\r
+ return seekTo;\r
+ }\r
+ }\r
+ set {\r
+ lock (SeekToLock) {\r
+ seekTo = value;\r
+ }\r
+ }\r
+ }\r
+\r
private int m_stride;\r
\r
\r
Control playerWindow;\r
private PlayerGraph graph;\r
+ private readonly DxPlaySettings settings;\r
\r
// Play an avi file into a window. Allow for snapshots.\r
// (Control to show video in, Avi file to play\r
- public DxPlayer(Control hWin, ref MediaDescription mediaDesc, UISettings properties) {\r
- stringValues.Add(GraphState.Exiting, properties.Resource("EXITING", Resources.EXITING));\r
- stringValues.Add(GraphState.Paused, properties.Resource("PAUSED", Resources.PAUSED));\r
- stringValues.Add(GraphState.Playing, properties.Resource("PLAYING", Resources.PLAYING));\r
- stringValues.Add(GraphState.Stopped, properties.Resource("STOPPED", Resources.STOPPED));\r
- stringValues.Add(GraphState.Completed, properties.Resource("COMPLETED", Resources.COMPLETED));\r
+ public DxPlayer(Control hWin, ref MediaDescription mediaDesc, DxPlaySettings settings) {\r
+ this.settings = settings;\r
+\r
+ stringValues.Add(GraphState.Exiting, settings.Resource("EXITING", Resources.EXITING));\r
+ stringValues.Add(GraphState.Paused, settings.Resource("PAUSED", Resources.PAUSED));\r
+ stringValues.Add(GraphState.Playing, settings.Resource("PLAYING", Resources.PLAYING));\r
+ stringValues.Add(GraphState.Stopped, settings.Resource("STOPPED", Resources.STOPPED));\r
+ stringValues.Add(GraphState.Completed, settings.Resource("COMPLETED", Resources.COMPLETED));\r
State = GraphState.Stopped;\r
try {\r
int hr;\r
MediaDescription = mediaDesc;\r
// Set up the graph\r
playerWindow = hWin;\r
- //playerWindow.Invalidate();\r
SetupGraph();\r
\r
- hWin.Hide();\r
- hWin.Show();\r
+ //hWin.Hide();\r
+ //hWin.Show();\r
\r
// Get the event handle the graph will use to signal\r
// when events occur\r
m_eventThread.Name = "Media Event Thread";\r
m_eventThread.Start();\r
\r
- m_Bitmap = Properties.Resources.lgs;\r
+ m_Bitmap = Resources.lgs;\r
\r
tcWorker = new BackgroundWorker();\r
tcWorker.DoWork += TcWorker_DoWork;\r
tcWorker.WorkerSupportsCancellation = true;\r
tcWorker.RunWorkerAsync(tcLock);\r
\r
- } catch {\r
+ } catch (Exception e) {\r
+ logger.Error(e);\r
Dispose();\r
throw;\r
}\r
+\r
}\r
\r
private void SetupGraph() {\r
graph = new PlayerGraph(MediaDescription.FileName, playerWindow.Handle);\r
\r
+ //TODO hogy lesz igy framrate?\r
+ //if (graph.SampleGrabber == null)\r
+ // return;\r
+\r
+ if (graph.SampleGrabber == null)\r
+ throw new Exception("Audio only file is not supported.");\r
+\r
AMMediaType media = new AMMediaType();\r
graph.SampleGrabber.GetConnectedMediaType(media);\r
logger.Debug("SaveSizeInfo");\r
SaveSizeInfo(media);\r
DsUtils.FreeAMMediaType(media);\r
\r
- logger.Debug("ConfigureSampleGrabber");\r
- ConfigureSampleGrabber(graph.SampleGrabber);\r
logger.Debug("SetTimeCodes");\r
SetTimeCodes();\r
- logger.Debug("ConfigureVideoWindow");\r
+\r
+ logger.Debug("ConfigureSampleGrabber");\r
+ ConfigureSampleGrabber(graph.SampleGrabber);\r
+ logger.Debug("UpdateVideoWindow");\r
UpdateVideoWindow();\r
RenderFirstFrame();\r
}\r
graph.MediaControl.Run();\r
graph.MediaSeeking.SetPositions(1, AMSeekingSeekingFlags.AbsolutePositioning, null, AMSeekingSeekingFlags.NoPositioning);\r
graph.MediaControl.Pause();\r
+ //ForceRepaintFrame();\r
}\r
\r
private void TcWorker_DoWork(object sender, DoWorkEventArgs e) {\r
while (!e.Cancel) {\r
UpdateTC();\r
Thread.Sleep(10);\r
+\r
+ if (SeekTo != 0) {\r
+ RealSeek(SeekTo);\r
+ Thread.Sleep(100);\r
+ SeekTo = 0;\r
+ }\r
+\r
}\r
}\r
\r
Seek(CurrentTC.ZeroBasedFrames + step);\r
}\r
}\r
-\r
public void Seek(int value) {\r
+ SeekTo = value;\r
+ }\r
+\r
+ public void RealSeek(int value) {\r
if (graph == null || graph.MediaSeeking == null)\r
return;\r
double frameLength = (double)MEDIATIME_REFERENCE / MediaDescription.FrameRate;\r
DsError.ThrowExceptionForHR(hr);\r
corrected = true;\r
}\r
+ //ForceRepaintFrame();\r
logger.Debug("Seeking requested frame {0} got frame {1}, media position {2}, frame length {3}, corrected {4}", value, reachedFrames, requestedPosition, avgTimePerFrame, corrected);\r
}\r
\r
MediaDescription.duration = new Timecode();\r
MediaDescription.Duration.Set(ReferenceTimeToFrames(duration));\r
if (MediaDescription.FirstFrame == null) {\r
- try {\r
- MXFFile mxf = new MXFFile(MediaDescription.FileName);\r
- mxf.Inspect();\r
- //MediaDescription.firstFrame = new Timecode(mxf.FirstSystemItem?.UserDateFullFrameNb, MediaDescription.FrameRate);\r
- MediaDescription.firstFrame = new Timecode((int)mxf.TimecodeComponent.StartTimecode, (float)mxf.TimecodeComponent.RoundedTimecodeBase);\r
- } catch (Exception ex) {\r
+ if (settings.IsStandalone) {\r
+ // BSH Kenya playout nem kezel start TC-t, minden 0 alapu\r
MediaDescription.firstFrame = new Timecode();\r
+ } else {\r
+ try {\r
+ MXFFile mxf = new MXFFile(MediaDescription.FileName);\r
+ mxf.Inspect();\r
+ MediaDescription.firstFrame = new Timecode((int)mxf.TimecodeComponent.StartTimecode, (float)mxf.TimecodeComponent.RoundedTimecodeBase);\r
+ } catch {\r
+ MediaDescription.firstFrame = new Timecode();\r
+ }\r
}\r
}\r
- //MediaDescription.firstFrame = new Timecode();\r
CurrentTC = new Timecode(MediaDescription.FirstFrame);\r
}\r
\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ struct PAINTSTRUCT {\r
+ public IntPtr hdc;\r
+ public bool fErase;\r
+ public RECT rcPaint;\r
+ public bool fRestore;\r
+ public bool fIncUpdate;\r
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public byte[] rgbReserved;\r
+ }\r
\r
+ [DllImport("user32.dll")]\r
+ static extern IntPtr BeginPaint(IntPtr hwnd, out PAINTSTRUCT lpPaint);\r
+\r
+ [DllImport("user32.dll")]\r
+ static extern bool EndPaint(IntPtr hWnd, [In] ref PAINTSTRUCT lpPaint);\r
\r
public void UpdateVideoWindow() {\r
- if (graph.WindowlessControl != null) {\r
- graph.WindowlessControl.GetNativeVideoSize(out int w, out int h, out int aw, out int ah);\r
- DsRect src = new DsRect(0, 0, w, h);\r
- DsRect dst = new DsRect(playerWindow.ClientRectangle);\r
- graph.WindowlessControl.SetVideoPosition(src, dst);\r
- return;\r
- }\r
+ //if (graph.WindowlessControl != null) {\r
+ // graph.WindowlessControl.GetNativeVideoSize(out int w, out int h, out int aw, out int ah);\r
+ // DsRect src = new DsRect(0, 0, w, h);\r
+ // DsRect dst = new DsRect(playerWindow.ClientRectangle);\r
+ // graph.WindowlessControl.SetVideoPosition(src, dst);\r
+ // ForceRepaintFrame();\r
+ // return;\r
+ //}\r
\r
Size resolution = MediaDescription.Resolution;\r
if (resolution.Width == 0 || resolution.Height == 0)\r
}\r
}\r
\r
+ //private void ForceRepaintFrame() {\r
+ // if (graph.WindowlessControl == null)\r
+ // return;\r
+ // using (Graphics g = playerWindow.CreateGraphics()) {\r
+ // IntPtr hdc = BeginPaint(playerWindow.Handle, out PAINTSTRUCT lpPaint);\r
+ // graph.WindowlessControl.RepaintVideo(playerWindow.Handle, hdc);\r
+ // EndPaint(playerWindow.Handle, ref lpPaint);\r
+ // }\r
+ //}\r
+\r
public void ToggleFullscreen() {\r
- if (graph == null)\r
+ if (graph == null || graph.VideoWindow == null)\r
return;\r
graph.VideoWindow.put_FullScreenMode(IsFullscreen() ? OABool.False : OABool.True);\r
}\r
\r
public bool IsFullscreen() {\r
-\r
- //if (graph == null)\r
+ if (graph == null || graph.VideoWindow == null)\r
return false;\r
-\r
- if (graph.VideoWindow != null) {\r
- int hr = graph.VideoWindow.get_FullScreenMode(out OABool isFullscreen);\r
- DsError.ThrowExceptionForHR(hr);\r
- return isFullscreen == OABool.True ? true : false;\r
- }\r
-\r
- return false;\r
+ int hr = graph.VideoWindow.get_FullScreenMode(out OABool isFullscreen);\r
+ DsError.ThrowExceptionForHR(hr);\r
+ return isFullscreen == OABool.True ? true : false;\r
}\r
\r
// Set the options on the sa_ve grabber\r
//hr = sampGrabber.GetConnectedMediaType(media);\r
//DsError.ThrowExceptionForHR(hr);\r
\r
- if ((media.formatType != FormatType.VideoInfo) || (media.formatPtr == IntPtr.Zero)) {\r
- throw new NotSupportedException("Unknown Grabber Media Format");\r
+ if (media.formatType == FormatType.VideoInfo) {\r
+ VideoInfoHeader videoInfoHeader = (VideoInfoHeader)Marshal.PtrToStructure(media.formatPtr, typeof(VideoInfoHeader));\r
+ MediaDescription.resolution = new Size(videoInfoHeader.BmiHeader.Width, videoInfoHeader.BmiHeader.Height);\r
+ MediaDescription.frameRate = MEDIATIME_REFERENCE / videoInfoHeader.AvgTimePerFrame;\r
+\r
+ m_stride = videoInfoHeader.BmiHeader.Width * (videoInfoHeader.BmiHeader.BitCount / 8);\r
+ return;\r
}\r
\r
- // Grab the size info\r
- VideoInfoHeader videoInfoHeader = (VideoInfoHeader)Marshal.PtrToStructure(media.formatPtr, typeof(VideoInfoHeader));\r
- MediaDescription.resolution = new Size(videoInfoHeader.BmiHeader.Width, videoInfoHeader.BmiHeader.Height);\r
- MediaDescription.frameRate = MEDIATIME_REFERENCE / videoInfoHeader.AvgTimePerFrame;\r
+ if (media.formatType == FormatType.WaveEx) {\r
+ VideoInfoHeader videoInfoHeader = (VideoInfoHeader)Marshal.PtrToStructure(media.formatPtr, typeof(VideoInfoHeader));\r
+ MediaDescription.resolution = new Size(videoInfoHeader.BmiHeader.Width, videoInfoHeader.BmiHeader.Height);\r
+ MediaDescription.frameRate = MEDIATIME_REFERENCE / videoInfoHeader.AvgTimePerFrame;\r
+ return;\r
+ }\r
\r
- m_stride = videoInfoHeader.BmiHeader.Width * (videoInfoHeader.BmiHeader.BitCount / 8);\r
+ throw new NotSupportedException("Unknown Grabber Media Format");\r
}\r
\r
// Shut down capture\r
private void EventWait() {\r
// Returned when GetEvent is called but there are no events\r
const int E_ABORT = unchecked((int)0x80004004);\r
-\r
int hr;\r
- IntPtr p1, p2;\r
- EventCode ec;\r
-\r
do {\r
// Wait for an event\r
m_mre.WaitOne(-1, true);\r
if (State != GraphState.Exiting) {\r
// Read the event\r
for (\r
- hr = graph.MediaEvent.GetEvent(out ec, out p1, out p2, 0);\r
+ hr = graph.MediaEvent.GetEvent(out EventCode ec, out IntPtr p1, out IntPtr p2, 0);\r
hr >= 0;\r
hr = graph.MediaEvent.GetEvent(out ec, out p1, out p2, 0)\r
) {\r
m_mediaCtrl = m_FilterGraph as IMediaControl;\r
m_videoWindow = m_FilterGraph as IVideoWindow;\r
\r
+ logger.Debug("SetTimeCodes");\r
+ SetTimeCodes();\r
+\r
#if DEBUG\r
m_DsRot = new DsROTEntry(m_FilterGraph);\r
#endif\r
\r
//logger.Debug("SaveSizeInfo");\r
//SaveSizeInfo(sampGrabber as ISampleGrabber);\r
- logger.Debug("SetTimeCodes");\r
- SetTimeCodes();\r
logger.Debug("ConfigureVideoWindow");\r
ConfigureVideoWindow();\r
\r
this.pVideo.Dock = System.Windows.Forms.DockStyle.Fill;\r
this.pVideo.Location = new System.Drawing.Point(0, 0);\r
this.pVideo.Name = "pVideo";\r
- this.pVideo.Size = new System.Drawing.Size(741, 487);\r
+ this.pVideo.Size = new System.Drawing.Size(478, 419);\r
this.pVideo.TabIndex = 0;\r
this.pVideo.TabStop = true;\r
this.pVideo.SizeChanged += new System.EventHandler(this.panel1_SizeChanged);\r
this.mainSplit.Panel2.Controls.Add(this.tableLayoutPanel1);\r
this.mainSplit.Panel2.Controls.Add(this.pMetadataDisplay);\r
this.mainSplit.Panel2MinSize = 300;\r
- this.mainSplit.Size = new System.Drawing.Size(1068, 489);\r
- this.mainSplit.SplitterDistance = 743;\r
+ this.mainSplit.Size = new System.Drawing.Size(784, 421);\r
+ this.mainSplit.SplitterDistance = 480;\r
this.mainSplit.TabIndex = 20;\r
// \r
// panelPlayer\r
this.panelPlayer.Dock = System.Windows.Forms.DockStyle.Fill;\r
this.panelPlayer.Location = new System.Drawing.Point(0, 0);\r
this.panelPlayer.Name = "panelPlayer";\r
- this.panelPlayer.Size = new System.Drawing.Size(741, 487);\r
+ this.panelPlayer.Size = new System.Drawing.Size(478, 419);\r
this.panelPlayer.TabIndex = 0;\r
// \r
// tableLayoutPanel1\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(319, 424);\r
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(298, 356);\r
this.tableLayoutPanel1.TabIndex = 4;\r
// \r
// tabEditor\r
this.tabEditor.Name = "tabEditor";\r
this.tabEditor.Padding = new System.Drawing.Point(10, 5);\r
this.tabEditor.SelectedIndex = 0;\r
- this.tabEditor.Size = new System.Drawing.Size(292, 416);\r
+ this.tabEditor.Size = new System.Drawing.Size(271, 348);\r
this.tabEditor.TabIndex = 2;\r
// \r
// tpMetadata\r
this.tpMetadata.Location = new System.Drawing.Point(4, 4);\r
this.tpMetadata.Name = "tpMetadata";\r
this.tpMetadata.Padding = new System.Windows.Forms.Padding(3);\r
- this.tpMetadata.Size = new System.Drawing.Size(284, 377);\r
+ this.tpMetadata.Size = new System.Drawing.Size(263, 309);\r
this.tpMetadata.TabIndex = 0;\r
this.tpMetadata.Text = "Metadata";\r
// \r
this.trafficBrowser.Location = new System.Drawing.Point(3, 3);\r
this.trafficBrowser.Margin = new System.Windows.Forms.Padding(0);\r
this.trafficBrowser.Name = "trafficBrowser";\r
- this.trafficBrowser.Size = new System.Drawing.Size(278, 371);\r
+ this.trafficBrowser.Size = new System.Drawing.Size(257, 303);\r
this.trafficBrowser.TabIndex = 0;\r
// \r
// tpSegments\r
this.pMetadataDisplay.Controls.Add(this.labelSelectedMetadata, 0, 0);\r
this.pMetadataDisplay.Controls.Add(this.txtSelectedID, 0, 1);\r
this.pMetadataDisplay.Dock = System.Windows.Forms.DockStyle.Bottom;\r
- this.pMetadataDisplay.Location = new System.Drawing.Point(0, 424);\r
+ this.pMetadataDisplay.Location = new System.Drawing.Point(0, 356);\r
this.pMetadataDisplay.Margin = new System.Windows.Forms.Padding(0);\r
this.pMetadataDisplay.Name = "pMetadataDisplay";\r
this.pMetadataDisplay.RowCount = 2;\r
this.pMetadataDisplay.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
this.pMetadataDisplay.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
- this.pMetadataDisplay.Size = new System.Drawing.Size(319, 63);\r
+ this.pMetadataDisplay.Size = new System.Drawing.Size(298, 63);\r
this.pMetadataDisplay.TabIndex = 5;\r
// \r
// btnApprove\r
this.btnApprove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;\r
this.btnApprove.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
this.btnApprove.Image = ((System.Drawing.Image)(resources.GetObject("btnApprove.Image")));\r
- this.btnApprove.Location = new System.Drawing.Point(217, 29);\r
+ this.btnApprove.Location = new System.Drawing.Point(196, 29);\r
this.btnApprove.Margin = new System.Windows.Forms.Padding(0, 4, 0, 0);\r
this.btnApprove.Name = "btnApprove";\r
this.btnApprove.Size = new System.Drawing.Size(102, 30);\r
this.labelSelectedMetadata.Location = new System.Drawing.Point(3, 0);\r
this.labelSelectedMetadata.Name = "labelSelectedMetadata";\r
this.labelSelectedMetadata.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5);\r
- this.labelSelectedMetadata.Size = new System.Drawing.Size(211, 25);\r
+ this.labelSelectedMetadata.Size = new System.Drawing.Size(190, 25);\r
this.labelSelectedMetadata.TabIndex = 13;\r
this.labelSelectedMetadata.Text = "Selected metadata";\r
// \r
this.txtSelectedID.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
this.txtSelectedID.Location = new System.Drawing.Point(3, 28);\r
this.txtSelectedID.Name = "txtSelectedID";\r
- this.txtSelectedID.Size = new System.Drawing.Size(211, 32);\r
+ this.txtSelectedID.Size = new System.Drawing.Size(190, 32);\r
this.txtSelectedID.TabIndex = 12;\r
// \r
// mainMenu\r
this.fileToolStripMenuItem});\r
this.mainMenu.Location = new System.Drawing.Point(0, 0);\r
this.mainMenu.Name = "mainMenu";\r
- this.mainMenu.Size = new System.Drawing.Size(1068, 24);\r
+ this.mainMenu.Size = new System.Drawing.Size(784, 24);\r
this.mainMenu.TabIndex = 21;\r
this.mainMenu.Text = "menuStrip1";\r
// \r
this.playerControls.BackColor = System.Drawing.Color.Transparent;\r
this.playerControls.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;\r
this.playerControls.Dock = System.Windows.Forms.DockStyle.Bottom;\r
- this.playerControls.Location = new System.Drawing.Point(0, 513);\r
+ this.playerControls.Location = new System.Drawing.Point(0, 445);\r
this.playerControls.Margin = new System.Windows.Forms.Padding(0);\r
this.playerControls.Name = "playerControls";\r
- this.playerControls.Size = new System.Drawing.Size(1068, 116);\r
+ this.playerControls.Size = new System.Drawing.Size(784, 116);\r
this.playerControls.TabIndex = 22;\r
// \r
// PlayerForm\r
this.AllowDrop = true;\r
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);\r
this.BackColor = System.Drawing.Color.White;\r
- this.ClientSize = new System.Drawing.Size(1068, 629);\r
+ this.ClientSize = new System.Drawing.Size(784, 561);\r
this.Controls.Add(this.mainSplit);\r
this.Controls.Add(this.mainMenu);\r
this.Controls.Add(this.playerControls);\r
/// <summary>\r
/// User control cimkejenek rendszeres frissitese villogast eredmenyez e nelkul \r
/// </summary>\r
- protected override CreateParams CreateParams {\r
- get {\r
- CreateParams cp = base.CreateParams;\r
- cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED\r
- return cp;\r
- }\r
- }\r
+ //protected override CreateParams CreateParams {\r
+ // get {\r
+ // CreateParams cp = base.CreateParams;\r
+ // cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED\r
+ // return cp;\r
+ // }\r
+ //}\r
\r
public bool openFileDialogOpened;\r
\r
public PlayerForm() {\r
InitializeComponent();\r
\r
- playerControls.Play.Click += btnPlay_Click;\r
- playerControls.Stop.Click += btnStop_Click;\r
- playerControls.Rewind.MouseDown += btnRewind_MouseDown;\r
- playerControls.Rewind.MouseUp += btnRewind_MouseUp;\r
- playerControls.Forward.MouseUp += btnForward_MouseUp;\r
- playerControls.Forward.MouseDown += btnForward_MouseDown;\r
+ playerControls.Play.Click += OnPlayClick;\r
+ playerControls.Stop.Click += OnStopClick;\r
+ playerControls.Rewind.MouseDown += OnRewindMouseDown;\r
+ playerControls.Rewind.MouseUp += OnRewindMouseUp;\r
+ playerControls.Forward.MouseUp += OnForwardMouseUp;\r
+ playerControls.Forward.MouseDown += OnForwardMouseDown;\r
+ playerControls.StepBack.MouseDown += OnStepBackMouseDown;\r
+ playerControls.StepBack.MouseUp += OnStepBackMouseUp;\r
+ playerControls.StepForward.MouseUp += OnStepForwardMouseUp;\r
+ playerControls.StepForward.MouseDown += OnStepForwardMouseDown;\r
\r
- playerControls.TrackBar.MouseDown += trackBar1_MouseDown;\r
- playerControls.TrackBar.MouseUp += trackBar1_MouseUp;\r
+ playerControls.TrackBar.MouseDown += OnTrackBarMouseDown;\r
+ playerControls.TrackBar.MouseUp += OnTrackBarMouseUp;\r
+ playerControls.TrackBar.Scroll += OnTrackBarScroll;\r
}\r
\r
private void InitializeTexts() {\r
tooltips = new ToolTip();\r
tooltips.SetToolTip(playerControls.Rewind, Settings.Resource("REWIND", Resources.REWIND));\r
tooltips.SetToolTip(playerControls.Forward, Settings.Resource("FORWARD", Resources.FORWARD));\r
+ tooltips.SetToolTip(playerControls.StepBack, Settings.Resource("STEPBACK", Resources.STEPBACK));\r
+ tooltips.SetToolTip(playerControls.StepForward, Settings.Resource("STEPFORWARD", Resources.STEPFORWARD));\r
tooltips.SetToolTip(playerControls.Play, Settings.Resource("PLAY", Resources.PLAY));\r
tooltips.SetToolTip(playerControls.Stop, Settings.Resource("STOP", Resources.STOP));\r
playerControls.Status.Text = Settings.Resource("NOINPUT", Resources.NOINPUT);\r
logger.Error(e);\r
}\r
}\r
+\r
+\r
+ //for (int i = 0; i < 100; i++) {\r
+ // m_play.Seek(i);\r
+ // Application.DoEvents();\r
+ // Thread.Sleep(100);\r
+ //}\r
}\r
\r
\r
m_play.UpdateVideoWindow();\r
}\r
\r
- private void trackBar1_MouseDown(object sender, MouseEventArgs e) {\r
+ private void OnTrackBarMouseDown(object sender, MouseEventArgs e) {\r
trackBarAtUser = true;\r
lastClick = DateTime.Now;\r
}\r
\r
- private void trackBar1_MouseUp(object sender, MouseEventArgs e) {\r
- if (trackBarAtUser) {\r
- trackBarAtUser = false;\r
- if (m_play != null)\r
- m_play.Seek(playerControls.TrackBar.Value);\r
- else\r
- playerControls.TrackBar.Value = 0;\r
- }\r
+ private void OnTrackBarMouseUp(object sender, MouseEventArgs e) {\r
+ trackBarAtUser = false;\r
+ }\r
+\r
+ private void OnTrackBarScroll(object sender, ScrollEventArgs e) {\r
+ if (m_play != null)\r
+ m_play.Seek(playerControls.TrackBar.Value);\r
}\r
\r
+\r
private void PlayOrPause() {\r
if (m_play == null)\r
return;\r
if (m_play.State == GraphState.Playing) {\r
- m_play.Pause();\r
- playerControls.Play.Image = Resources.ic_play_arrow_black_24dp_2x;\r
- tooltips.SetToolTip(playerControls.Play, Settings.Resource("PLAY", Resources.PLAY));\r
+ Pause();\r
return;\r
}\r
m_play.Play();\r
tooltips.SetToolTip(playerControls.Play, Settings.Resource("PAUSE", Resources.PAUSE));\r
}\r
\r
- private void btnPlay_Click(object sender, EventArgs e) {\r
+ private void Pause() {\r
+ m_play.Pause();\r
+ playerControls.Play.Image = Resources.ic_play_arrow_black_24dp_2x;\r
+ tooltips.SetToolTip(playerControls.Play, Settings.Resource("PLAY", Resources.PLAY));\r
+ }\r
+\r
+ private void OnPlayClick(object sender, EventArgs e) {\r
PlayOrPause();\r
}\r
\r
- private void btnStop_Click(object sender, EventArgs e) {\r
+ private void OnStopClick(object sender, EventArgs e) {\r
if (m_play != null && m_play.State != GraphState.Stopped) {\r
m_play.Stop();\r
}\r
\r
private bool buttonDown;\r
\r
- private void btnRewind_MouseUp(object sender, MouseEventArgs e) {\r
+ private void OnRewindMouseUp(object sender, MouseEventArgs e) {\r
buttonDown = false;\r
}\r
\r
- private void btnRewind_MouseDown(object sender, MouseEventArgs e) {\r
+ private void OnRewindMouseDown(object sender, MouseEventArgs e) {\r
buttonDown = true;\r
- int num = 0;\r
do {\r
- num++;\r
- Rewind();\r
+ m_play.Rewind(10);\r
Application.DoEvents();\r
} while (buttonDown);\r
}\r
\r
- private void btnForward_MouseUp(object sender, MouseEventArgs e) {\r
+ private void OnForwardMouseUp(object sender, MouseEventArgs e) {\r
buttonDown = false;\r
}\r
\r
- private void btnForward_MouseDown(object sender, EventArgs e) {\r
+ private void OnForwardMouseDown(object sender, EventArgs e) {\r
buttonDown = true;\r
int num = 0;\r
do {\r
- num++;\r
- Forward();\r
+ m_play.Forward(10);\r
+ Application.DoEvents();\r
+ } while (buttonDown);\r
+ }\r
+\r
+ private void OnStepBackMouseUp(object sender, MouseEventArgs e) {\r
+ buttonDown = false;\r
+ }\r
+\r
+ private void OnStepBackMouseDown(object sender, MouseEventArgs e) {\r
+ buttonDown = true;\r
+ do {\r
+ m_play.Rewind(1);\r
+ Application.DoEvents();\r
+ } while (buttonDown);\r
+ }\r
+\r
+ private void OnStepForwardMouseUp(object sender, MouseEventArgs e) {\r
+ buttonDown = false;\r
+ }\r
+\r
+ private void OnStepForwardMouseDown(object sender, EventArgs e) {\r
+ buttonDown = true;\r
+ do {\r
+ m_play.Forward(1);\r
Application.DoEvents();\r
} while (buttonDown);\r
}\r
private void Rewind() {\r
if (m_play == null)\r
return;\r
- int step = ModifierKeys.HasFlag(Keys.Control) ? 5 : 1;\r
+ int step = ModifierKeys.HasFlag(Keys.Control) ? 10 : 1;\r
m_play.Rewind(step);\r
}\r
\r
private void Forward() {\r
if (m_play == null)\r
return;\r
- int step = ModifierKeys.HasFlag(Keys.Control) ? 5 : 1;\r
+ int step = ModifierKeys.HasFlag(Keys.Control) ? 10 : 1;\r
m_play.Forward(step);\r
}\r
\r
}\r
\r
private void OnPlayEvent() {\r
- //if (!IsHandleCreated || Disposing || IsDisposed || m_play == null)\r
- // return;\r
- //if (Disposing || IsDisposed || m_play == null)\r
- // return;\r
- playerControls.Invoke((Action)(() => {\r
+ if (!IsHandleCreated || Disposing || IsDisposed || m_play == null)\r
+ return;\r
+\r
+ BeginInvoke((Action)(() => {\r
+ if (Disposing || IsDisposed || m_play == null)\r
+ return;\r
+ if (m_play.State == GraphState.Completed)\r
+ Pause();\r
if (!trackBarAtUser)\r
playerControls.TrackBar.Value = m_play.CurrentTC.ZeroBasedFrames;\r
playerControls.CurrentTC.Text = m_play.CurrentTC.ToString();\r
// m_play.Dispose();\r
}\r
\r
+ private void ProcessCommandLine() {\r
+ String[] arguments = Environment.GetCommandLineArgs();\r
+ if (arguments.Length > 1) {\r
+ FileInfo fi = new FileInfo(arguments[1]);\r
+ if (fi.Exists)\r
+ OpenFile(fi);\r
+ }\r
+ }\r
+\r
private void PlayerForm_Shown(object sender, EventArgs e) {\r
logger.Debug("PlayerForm_Shown");\r
InitializeTexts();\r
if (true.Equals(Settings?.Player?.SegmentEditor) && true.Equals(Settings?.IsStandalone)) {\r
mainMenu.Visible = true;\r
}\r
+\r
+ ProcessCommandLine();\r
+ \r
if (m_play != null && true.Equals(Settings?.Player?.AutoStart))\r
m_play.Play();\r
}\r
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo\r
- CAAAAk1TRnQBSQFMAgEBAgEAAXgBAQF4AQEBGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
+ CAAAAk1TRnQBSQFMAgEBAgEAAYgBAQGIAQEBGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
AwABYAMAARgDAAEBAQABCAYAAQkYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA\r
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5\r
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA\r
public IMediaSeeking MediaSeeking { get; private set; }\r
public IMediaControl MediaControl { get; private set; }\r
public IMediaEvent MediaEvent { get; private set; }\r
- public IVMRWindowlessControl9 WindowlessControl { get; private set; }\r
+ //public IVMRWindowlessControl9 WindowlessControl { get; private set; }\r
\r
private bool isDisposed;\r
\r
MediaSeeking = this as IMediaSeeking;\r
MediaControl = this as IMediaControl;\r
MediaEvent = this as IMediaEvent;\r
- //VideoWindow = this as IVideoWindow;\r
+ VideoWindow = this as IVideoWindow;\r
IGraphBuilder graphBuilder = this as IGraphBuilder;\r
#if DEBUG\r
m_DsRot = new DsROTEntry(graphBuilder);\r
DsError.ThrowExceptionForHR(graphBuilder.AddSourceFilter(fileName, fileName, out IBaseFilter sourceFilter));\r
\r
IBaseFilter splitter = AddSplitter(graphBuilder, sourceFilter);\r
- IBaseFilter videoDecoder = AddVideoDecoder(graphBuilder, splitter);\r
- IBaseFilter sampleGrabber = AddSampleGrabber(graphBuilder, videoDecoder);\r
- SampleGrabber = (ISampleGrabber)sampleGrabber;\r
- IBaseFilter videoRenderer = AddRenderer(graphBuilder, sampleGrabber, handle);\r
- FilterGraphTools.RenderPin(graphBuilder, sampleGrabber, "Output");\r
- //IBaseFilter videoRenderer = AddSimpleRenderer(graphBuilder, sampleGrabber);\r
+ bool audioOnly = true;\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
+ //IBaseFilter videoRenderer = AddRenderer(graphBuilder, sampleGrabber, handle);\r
+ IBaseFilter videoRenderer = AddSimpleRenderer(graphBuilder, sampleGrabber, handle);\r
+ FilterGraphTools.RenderPin(graphBuilder, sampleGrabber, "Output");\r
+ ConfigureSimpleRenderer(handle);\r
+\r
+ } else {\r
+ logger.Warn("Video pin not available");\r
+ }\r
if (DsFindPin.ByName(splitter, "Audio") != null) {\r
IBaseFilter audioDecoder = AddAudioDecoder(graphBuilder, splitter);\r
- FilterGraphTools.RenderPin(graphBuilder, audioDecoder, "Output");\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
+ } else\r
+ FilterGraphTools.RenderPin(graphBuilder, audioDecoder, "Output");\r
} else {\r
logger.Warn("Audio pin not available");\r
}\r
\r
SearchAudioTracks(splitter);\r
- EnableDeinterlace(videoDecoder);\r
\r
} catch (Exception e) {\r
logger.Error(e.Message);\r
logger.Debug("Connect SampleGrabber -> VideoMixingRenderer9");\r
\r
try {\r
- IVMRFilterConfig9 filterConfig = (IVMRFilterConfig9) videoRenderer;\r
- filterConfig.SetRenderingMode(VMR9Mode.Windowless);\r
- WindowlessControl = (IVMRWindowlessControl9) videoRenderer;\r
- WindowlessControl.SetVideoClippingWindow(handle);\r
- //VideoWindow = (IVideoWindow) filterConfig;\r
- //FilterGraphTools.ConnectFilters(graphBuilder, sampleGrabber, "Output", videoRenderer, "VMR Input0", true);\r
-\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
} catch (Exception e) {\r
logger.Error(e);\r
graphBuilder.RemoveFilter(videoRenderer);\r
logger.Info("Trying default VideoRenderer instead Video Mixing Renderer 9");\r
AddSimpleRenderer(graphBuilder, sampleGrabber, handle);\r
}\r
+\r
return videoRenderer;\r
}\r
\r
- private IBaseFilter AddSimpleRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber, IntPtr handle) {\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
- VideoWindow = (IVideoWindow)videoRenderer;\r
-\r
+ private void ConfigureSimpleRenderer(IntPtr handle) {\r
// Set the output window\r
int hr;\r
\r
// Make the window visible\r
hr = VideoWindow.put_Visible(OABool.True);\r
DsError.ThrowExceptionForHR(hr);\r
+ }\r
\r
+ private IBaseFilter AddSimpleRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber, IntPtr handle) {\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
\r
private void SearchAudioTracks(IBaseFilter splitter) {\r
IAMStreamSelect amStreamSelect = (IAMStreamSelect)splitter;\r
if (amStreamSelect != null) {\r
- int count = 0;\r
- amStreamSelect.Count(out count);\r
+ amStreamSelect.Count(out int count);\r
int audioCount = 0;\r
for (int i = 0; i < count; i++) {\r
amStreamSelect.Info(i, out AMMediaType ppmt, out AMStreamSelectInfoFlags pdwFlags, out int plcid, out int pdwGroup, out string ppszName, out object ppObject, out object ppUnk);\r
LoadSettings(playerForm);\r
if (playerForm.Settings == null)\r
playerForm.Settings = new DxPlaySettings();\r
- if (ProcessCommandLine(playerForm))\r
- return;\r
+ //if (ProcessCommandLine(playerForm))\r
+ // return;\r
Application.Run(playerForm);\r
}\r
\r
- private static bool ProcessCommandLine(PlayerForm playerForm) {\r
- String[] arguments = Environment.GetCommandLineArgs();\r
- if (arguments.Length > 1) {\r
- FileInfo fi = new FileInfo(arguments[1]);\r
- if (fi.Exists)\r
- playerForm.OpenFile(fi);\r
- }\r
- return playerForm.IsDisposed;\r
- }\r
-\r
private static void LoadSettings(PlayerForm playerForm) {\r
try {\r
FileInfo dxPlayConfig = new FileInfo(ConfigurationSerializer.Combine(DXPLAY_FILE));\r
// You can specify all the values or you can default the Revision and Build Numbers \r
// by using the '*' as shown below:\r
\r
-[assembly: AssemblyVersion("2.0.8.2")]\r
+[assembly: AssemblyVersion("2.0.8.4")]\r
\r
//\r
// In order to sign your assembly you must specify a key to use. Refer to the \r
[assembly: AssemblyDelaySign(false)]\r
[assembly: AssemblyKeyFile("")]\r
[assembly: AssemblyKeyName("")]\r
-[assembly: AssemblyFileVersion("2.0.8.2")]\r
+[assembly: AssemblyFileVersion("2.0.8.4")]\r
\r
}\r
\r
/// <summary>\r
- /// Looks up a localized string similar to Előre csévélés.\r
+ /// Looks up a localized string similar to Előre csévélés (Ctrl + >).\r
/// </summary>\r
internal static string FORWARD {\r
get {\r
}\r
\r
/// <summary>\r
- /// Looks up a localized string similar to Szünet.\r
+ /// Looks up a localized string similar to Szünet (Szóköz).\r
/// </summary>\r
internal static string PAUSE {\r
get {\r
}\r
\r
/// <summary>\r
- /// Looks up a localized string similar to Lejátszás.\r
+ /// Looks up a localized string similar to Lejátszás (Szóköz).\r
/// </summary>\r
internal static string PLAY {\r
get {\r
}\r
\r
/// <summary>\r
- /// Looks up a localized string similar to Hátra csévélés.\r
+ /// Looks up a localized string similar to Hátra csévélés (Ctrl + <).\r
/// </summary>\r
internal static string REWIND {\r
get {\r
}\r
}\r
\r
+ /// <summary>\r
+ /// Looks up a localized string similar to Vissza léptetés (<).\r
+ /// </summary>\r
+ internal static string STEPBACK {\r
+ get {\r
+ return ResourceManager.GetString("STEPBACK", resourceCulture);\r
+ }\r
+ }\r
+ \r
+ /// <summary>\r
+ /// Looks up a localized string similar to Előre léptetés (>).\r
+ /// </summary>\r
+ internal static string STEPFORWARD {\r
+ get {\r
+ return ResourceManager.GetString("STEPFORWARD", resourceCulture);\r
+ }\r
+ }\r
+ \r
/// <summary>\r
/// Looks up a localized string similar to Leállítás.\r
/// </summary>\r
<value>NINCS BEMENET</value>\r
</data>\r
<data name="PLAY" xml:space="preserve">\r
- <value>Lejátszás</value>\r
+ <value>Lejátszás (Szóköz)</value>\r
</data>\r
<data name="METADATA" xml:space="preserve">\r
<value>Metaadat</value>\r
<value>..\resources\lgs.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
</data>\r
<data name="PAUSE" xml:space="preserve">\r
- <value>Szünet</value>\r
+ <value>Szünet (Szóköz)</value>\r
</data>\r
<data name="POSITIONASTCIN" xml:space="preserve">\r
<value>Aktuális pozíció belépőként</value>\r
<value>..\Resources\baseline_fast_rewind_black_24dp1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
</data>\r
<data name="FORWARD" xml:space="preserve">\r
- <value>Előre csévélés</value>\r
+ <value>Előre csévélés (Ctrl + >)</value>\r
</data>\r
<data name="REWIND" xml:space="preserve">\r
- <value>Hátra csévélés</value>\r
+ <value>Hátra csévélés (Ctrl + <)</value>\r
+ </data>\r
+ <data name="STEPBACK" xml:space="preserve">\r
+ <value>Vissza léptetés (<)</value>\r
+ </data>\r
+ <data name="STEPFORWARD" xml:space="preserve">\r
+ <value>Előre léptetés (>)</value>\r
</data>\r
</root>
\ No newline at end of file
"outputFormat": "%ID%",\r
"tag": "Archiválás",\r
"saveArchiveMetadata": true,\r
+ "deleteAfterCopy": true,\r
+ "temporaryCopy": true,\r
"remote": {\r
- "address": "ftp://10.10.1.100/ARCHIVE",\r
+ "address": "ftp://10.10.1.100/ARCHIVE/ONE",\r
"userName": "mediacube",\r
"password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
"timeout": 1000\r
public class NativeOctopusMetadata : MetadataProvider {\r
}\r
\r
+ public class FreeMetadata : MetadataProvider {\r
+ }\r
+\r
public class TrafficMetadata : MetadataProvider {\r
public ProjectSettings ProjectSettings { get; set; }\r
public string FunctionName { get; set; }\r
// You can specify all the values or you can default the Build and Revision Numbers\r
// by using the '*' as shown below:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.8.5")]\r
-[assembly: AssemblyFileVersion("2.0.8.5")]\r
+[assembly: AssemblyVersion("2.0.8.6")]\r
+[assembly: AssemblyFileVersion("2.0.8.6")]\r
this.nativeOctopusIDSelector = new NativeOctopusClient.NativeOctopusIDSelector();\r
this.tpTraffic = new System.Windows.Forms.TabPage();\r
this.trafficIDSelector = new TrafficClient.TrafficIDSelector();\r
+ this.tpFree = new System.Windows.Forms.TabPage();\r
+ this.txtID = new System.Windows.Forms.TextBox();\r
+ this.lName = new System.Windows.Forms.Label();\r
this.pMetadataDisplay = new System.Windows.Forms.TableLayoutPanel();\r
this.btnLookupMetadata = new System.Windows.Forms.Button();\r
this.labelSelectedMetadata = new System.Windows.Forms.Label();\r
this.tpOctopus.SuspendLayout();\r
this.tpNativeOctopus.SuspendLayout();\r
this.tpTraffic.SuspendLayout();\r
+ this.tpFree.SuspendLayout();\r
this.pMetadataDisplay.SuspendLayout();\r
this.SuspendLayout();\r
// \r
this.tabMetadata.Controls.Add(this.tpOctopus);\r
this.tabMetadata.Controls.Add(this.tpNativeOctopus);\r
this.tabMetadata.Controls.Add(this.tpTraffic);\r
+ this.tabMetadata.Controls.Add(this.tpFree);\r
this.tabMetadata.Dock = System.Windows.Forms.DockStyle.Fill;\r
this.tabMetadata.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
this.tabMetadata.Location = new System.Drawing.Point(0, 0);\r
this.trafficIDSelector.Size = new System.Drawing.Size(359, 422);\r
this.trafficIDSelector.TabIndex = 0;\r
// \r
+ // tpFree\r
+ // \r
+ this.tpFree.Controls.Add(this.txtID);\r
+ this.tpFree.Controls.Add(this.lName);\r
+ this.tpFree.Location = new System.Drawing.Point(4, 24);\r
+ this.tpFree.Name = "tpFree";\r
+ this.tpFree.Padding = new System.Windows.Forms.Padding(3);\r
+ this.tpFree.Size = new System.Drawing.Size(365, 428);\r
+ this.tpFree.TabIndex = 3;\r
+ this.tpFree.Text = "Free";\r
+ this.tpFree.UseVisualStyleBackColor = true;\r
+ // \r
+ // txtID\r
+ // \r
+ this.txtID.Dock = System.Windows.Forms.DockStyle.Top;\r
+ this.txtID.Location = new System.Drawing.Point(3, 18);\r
+ this.txtID.Name = "txtID";\r
+ this.txtID.Size = new System.Drawing.Size(359, 21);\r
+ this.txtID.TabIndex = 1;\r
+ // \r
+ // lName\r
+ // \r
+ this.lName.AutoSize = true;\r
+ this.lName.Dock = System.Windows.Forms.DockStyle.Top;\r
+ this.lName.Location = new System.Drawing.Point(3, 3);\r
+ this.lName.Name = "lName";\r
+ this.lName.Size = new System.Drawing.Size(19, 15);\r
+ this.lName.TabIndex = 0;\r
+ this.lName.Text = "ID";\r
+ // \r
// pMetadataDisplay\r
// \r
this.pMetadataDisplay.AutoSize = true;\r
this.tpNativeOctopus.ResumeLayout(false);\r
this.tpTraffic.ResumeLayout(false);\r
this.tpTraffic.PerformLayout();\r
+ this.tpFree.ResumeLayout(false);\r
+ this.tpFree.PerformLayout();\r
this.pMetadataDisplay.ResumeLayout(false);\r
this.pMetadataDisplay.PerformLayout();\r
this.ResumeLayout(false);\r
private TrafficClient.TrafficIDSelector trafficIDSelector;\r
private System.Windows.Forms.TabPage tpNativeOctopus;\r
private NativeOctopusClient.NativeOctopusIDSelector nativeOctopusIDSelector;\r
+ private System.Windows.Forms.TabPage tpFree;\r
+ private System.Windows.Forms.TextBox txtID;\r
+ private System.Windows.Forms.Label lName;\r
}\r
}\r
private MetadataProvider[] providers;\r
\r
public TextBox MetadataIDText { get => textSelectedMetadata; }\r
+ public TextBox FreeIDText { get => txtID; }\r
public OctopusIDSelector OctopusIDSelector { get => octopusIDSelector; }\r
public NativeOctopusIDSelector NativeOctopusIDSelector { get => nativeOctopusIDSelector; }\r
public TrafficIDSelector TrafficIDSelector { get => trafficIDSelector; }\r
InitializeTrafficSelector();\r
InitializeOctopusSelector();\r
InitializeNativeOctopusSelector();\r
+ InitializeFreeSelector();\r
}\r
}\r
\r
trafficIDSelector.IDChangedEvent += TrafficIDChangedEvent;\r
}\r
\r
+ private void InitializeFreeSelector() {\r
+ FreeMetadata freeConfiguration = MetadataProvider.Get<FreeMetadata>(Providers);\r
+ if (freeConfiguration == null) {\r
+ tabMetadata.TabPages.Remove(tpFree);\r
+ return;\r
+ }\r
+\r
+ txtID.TextChanged += OnFreeMetadataChanged;\r
+ }\r
+\r
+ private void ClearFreeMetadata() {\r
+ txtID.Text = "";\r
+ }\r
+\r
+ private void OnFreeMetadataChanged(object sender, EventArgs e) {\r
+ octopusIDSelector.ClearSelection();\r
+ trafficIDSelector.ClearSelection();\r
+ nativeOctopusIDSelector.ClearSelection();\r
+\r
+ }\r
+\r
private void InitializeOctopusSelector() {\r
OctopusMetadata octopusConfiguration = MetadataProvider.Get<OctopusMetadata>(Providers);\r
if (octopusConfiguration == null) {\r
private void OctopusIDChangedEvent(string id, string name, string text) {\r
trafficIDSelector.ClearSelection();\r
nativeOctopusIDSelector.ClearSelection();\r
+ ClearFreeMetadata();\r
textSelectedMetadata.Text = name;\r
}\r
\r
private void NativeOctopusIDChangedEvent(string id, string name, string text) {\r
octopusIDSelector.ClearSelection();\r
trafficIDSelector.ClearSelection();\r
+ ClearFreeMetadata();\r
textSelectedMetadata.Text = name;\r
}\r
\r
private void TrafficIDChangedEvent(string id, int variantID, string text) {\r
octopusIDSelector.ClearSelection();\r
nativeOctopusIDSelector.ClearSelection();\r
+ ClearFreeMetadata();\r
textSelectedMetadata.Text = id;\r
}\r
\r
\r
logger.info("Checking {}", filePath);\r
List<Path> killDateFiles = getKillDateFiles(filePath);\r
- if (killDateFiles.size() == 0)\r
+ if (killDateFiles.size() == 0) {\r
+ logger.warn(marker, "A {} fájlhoz nem található 'killdate' állomány.", filePath);\r
return;\r
+ }\r
\r
if (killDateFiles.size() != 1)\r
logger.warn(marker, "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.", filePath);\r