IC Imaging Control .NET

AviCompressor.CompressorData Property

AviCompressor.CompressorData Property

Returns or sets the data of an AviCompressor.
Syntax:
[VB.NET]
Public CompressorData As Byte()
[C#]
public byte[] CompressorData;
Remarks:

The returned data should only be used to store the state of the codecs. The data in the array is not to be modified. If inconsistent data is passed to the codec, an error is returned. Furthermore, the data of one codec will not match each other.

Sample:

The following example shows how to save and load codec data into and from a binary file. The codec which is currently used, must be declared globally. If it is declared locally in the sub procedure, it would loose its settings after exiting the sub procedure, because it would be removed from memory. The complete example can be found in the samples directory in Saving Codec Properties.

Save the data from a codec that was selected in a combo box.

[VB.NET]
Private Sub cmdSaveCodecData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSaveCodecData.Click If edtConfigFile.Text <> "" Then Try Dim Filestream As New System.IO.FileStream(edtConfigFile.Text, System.IO.FileMode.Create, System.IO.FileAccess.Write) ' Create the writer for data. Dim BinWriter As New System.IO.BinaryWriter(Filestream) ' Write data to Test.data. Dim aviComp As AviCompressor aviComp = CType(CodecBox.SelectedItem(), AviCompressor) BinWriter.Write(aviComp.ToString()) BinWriter.Write(aviComp.CompressorDataSize) BinWriter.Write(aviComp.CompressorData) BinWriter.Close() Filestream.Close() Catch Ex As System.Exception MsgBox(Ex.Message, MsgBoxStyle.Critical, "Write error") End Try End If End Sub
[C#]
private void cmdSaveCodecData_Click(object sender, System.EventArgs e) { if (edtConfigFile.Text != "") { try { System.IO.FileStream Filestream = new System.IO.FileStream(edtConfigFile.Text, System.IO.FileMode.Create, System.IO.FileAccess.Write); // Create the writer for data. System.IO.BinaryWriter BinWriter = new System.IO.BinaryWriter(Filestream); // Write data to Test.data. AviCompressor aviComp = null; aviComp = ((AviCompressor)(CodecBox.SelectedItem)); BinWriter.Write(aviComp.ToString()); BinWriter.Write(aviComp.CompressorDataSize); BinWriter.Write(aviComp.CompressorData); BinWriter.Close(); Filestream.Close(); } catch (Exception Ex) { MessageBox.Show(Ex.Message, "Write error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }

Load the previously saved data and assign it to a codec.

[VB.NET]
Private Sub cmdLoadCodecData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLoadCodecData.Click If edtConfigFile.Text <> "" Then Try ' Create the reader for data. Dim Filestrem As New System.IO.FileStream(edtConfigFile.Text, System.IO.FileMode.Open, System.IO.FileAccess.Read) Dim BinReader As New System.IO.BinaryReader(Filestrem) Dim CodecName As String Dim Codec As AviCompressor Dim CodecFound As Boolean ' Retrieve the name of the codec from the codec configuration file CodecName = BinReader.ReadString() ' Search this codec in the codec combo box CodecFound = False For Each item As AviCompressor In CodecBox.Items If item.ToString() = CodecName Then CodecBox.SelectedItem = item Codec = item CodecFound = True End If Next If CodecFound = True Then Dim codecDataLen As Integer = BinReader.ReadInt32() ' Assign the configuration data to the codec. Codec.CompressorData = BinReader.ReadBytes(codecDataLen) Else ' If the codec was not found, display an error message. MsgBox("The codec " + CodecName + " was not found!", MsgBoxStyle.Information, "Load codec configuration") End If BinReader.Close() Filestrem.Close() Catch Ex As System.Exception MsgBox(Ex.Message, MsgBoxStyle.Critical, "Read error") End Try End If End Sub
[C#]
private void cmdLoadCodecData_Click(object sender, System.EventArgs e) { if (edtConfigFile.Text != "") { try { // Create the reader for data. System.IO.FileStream Filestrem = new System.IO.FileStream(edtConfigFile.Text, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader BinReader = new System.IO.BinaryReader(Filestrem); string CodecName = ""; AviCompressor Codec = null; bool CodecFound = false; // Retrieve the name of the codec from the codec configuration file CodecName = BinReader.ReadString(); // Search this codec in the codec combo box CodecFound = false; foreach (AviCompressor item in CodecBox.Items) { if (item.ToString() == CodecName) { CodecBox.SelectedItem = item; Codec = item; CodecFound = true; } } if (CodecFound == true) { int codecDataLen = BinReader.ReadInt32(); // Assign the configuration data to the codec. Codec.CompressorData = BinReader.ReadBytes(codecDataLen); } else { // If the codec was not found, display an error message. MessageBox.Show("The codec " + CodecName + " was not found!", "Load codec configuration", MessageBoxButtons.OK, MessageBoxIcon.Information); } BinReader.Close(); Filestrem.Close(); } catch (Exception Ex) { MessageBox.Show(Ex.Message, "Read error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
See Also: AviCompressor, AviCompressor.CompressorDataSize

<< AviCompressor

Get in touch with us


About The Imaging Source

Established in 1990, The Imaging Source is one of the leading manufacturers of industrial cameras, frame grabbers and video converters for production automation, quality assurance, logistics, medicine, science and security.

Our comprehensive range of cameras with USB 3.1, USB 3.0, USB 2.0, GigE interfaces and other innovative machine vision products are renowned for their high quality and ability to meet the performance requirements of demanding applications.

Automated Imaging Association ISO 9001:2015 certified

Contact us