📄 mediatypeeditor.pas
字号:
(name: 'VPVideo'; GUID: '{5A9B6A40-1A22-11D1-BAD9-00609744111A}'),
(name: 'VPVBI'; GUID: '{5A9B6A41-1A22-11D1-BAD9-00609744111A}'),
(name: 'AnalogVideo_NTSC_M'; GUID: '{0482DDE2-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_B'; GUID: '{0482DDE5-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_D'; GUID: '{0482DDE6-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_G'; GUID: '{0482DDE7-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_H'; GUID: '{0482DDE8-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_I'; GUID: '{0482DDE9-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_M'; GUID: '{0482DDEA-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_N'; GUID: '{0482DDEB-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_PAL_N_COMBO'; GUID: '{0482DDEC-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_B'; GUID: '{0482DDF0-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_D'; GUID: '{0482DDF1-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_G'; GUID: '{0482DDF2-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_H'; GUID: '{0482DDF3-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_K'; GUID: '{0482DDF4-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_K1'; GUID: '{0482DDF5-7817-11CF-8A03-00AA006ECB65}'),
(name: 'AnalogVideo_SECAM_L'; GUID: '{0482DDF6-7817-11CF-8A03-00AA006ECB65}'),
(name: 'MPEG2_VIDEO'; GUID: '{E06D8026-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'MPEG2_PROGRAM'; GUID: '{E06D8022-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'MPEG2_TRANSPORT'; GUID: '{E06D8023-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'MPEG2_AUDIO'; GUID: '{E06D802B-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'DVD_SUBPICTURE'; GUID: '{E06D802D-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'DVD_LPCM_AUDIO'; GUID: '{E06D8032-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'SDDS'; GUID: '{E06D8034-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'DVD_NAVIGATION_PCI'; GUID: '{E06D802F-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'DVD_NAVIGATION_DSI'; GUID: '{E06D8030-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'DVD_NAVIGATION_PROVIDER'; GUID: '{E06D8031-DB46-11CF-B4D1-00805F6CBBEA}'),
(name: 'MP42'; GUID: '{3234504D-0000-0010-8000-00AA00389B71}'),
(name: 'DIVX'; GUID: '{58564944-0000-0010-8000-00AA00389B71}'),
(name: 'VOXWARE'; GUID: '{00000075-0000-0010-8000-00AA00389B71}'));
FormatTypes: array[0..4] of TGUIDDescription =
((name: '[Automatic]'; GUID: '{00000000-0000-0000-0000-000000000000}'),
(name: 'None'; GUID: '{0F6417D6-C318-11D0-A43F-00A0C9223196}'),
(name: 'VideoInfo'; GUID: '{05589F80-C356-11CE-BF01-00AA0055595A}'),
(name: 'VideoInfo2'; GUID: '{F72A76A0-EB0A-11D0-ACE4-0000C0CC16BA}'),
(name: 'WaveFormatEx'; GUID: '{05589F81-C356-11CE-BF01-00AA0055595A}'));
implementation
uses ActiveX;
{$R *.dfm}
constructor TFormMediaType.create(AOwner: TComponent);
var i: byte;
begin
inherited Create(AOwner);
MediaType:= TMediaType.Create;
for i := 0 to 15 do cbMajorTypes.Items.Add(MajorTypes[i].name);
for i := 0 to 97 do cbSubTypes.Items.Add(SubTypes[i].name);
for i := 0 to 4 do cbFormatType.Items.Add(FormatTypes[i].name);
end;
destructor TFormMediaType.Destroy;
begin
MediaType.Free;
inherited Destroy;
end;
// majortype : TGUID;
// subtype : TGUID;
// bFixedSizeSamples : BOOL;
// bTemporalCompression : BOOL;
// lSampleSize : ULONG;
// formattype : TGUID;
// pUnk : IUnknown;
// cbFormat : ULONG;
// pbFormat : Pointer;
procedure TFormMediaType.FormShow(Sender: TObject);
begin
RefreshMediaType;
end;
procedure TFormMediaType.RefreshMediaType;
var i: byte;
begin
for i := 0 to 15 do
if IsEqualGUID(MajorTypes[i].GUID, MediaType.MajorType) then
begin
cbMajorTypes.ItemIndex := i;
Break;
end;
for i := 0 to 97 do
if IsEqualGUID(SubTypes[i].GUID, MediaType.SubType) then
begin
cbSubTypes.ItemIndex := i;
Break;
end;
if cbMajorTypes.ItemIndex = -1 then cbMajorTypes.ItemIndex := 0;
if cbSubTypes.ItemIndex = -1 then cbSubTypes.ItemIndex := 0;
chkFixedSize.Checked := MediaType.IsFixedSize;
chkTempCompress.Checked := MediaType.IsTemporalCompressed;
edSampleSize.Text := inttostr(MediaType.GetSampleSize);
for i := 0 to 4 do
if IsEqualGUID(FormatTypes[i].GUID, MediaType.FormatType) then
begin
cbFormatType.ItemIndex := i;
Break;
end;
edFormatSize.Text := inttostr(MediaType.FormatLength);
memo1.Clear;
memo1.lines.Add(GetMediaTypeDescription(MediaType.AMMediaType));
end;
procedure TFormMediaType.btOKClick(Sender: TObject);
begin
try
MediaType.SetSampleSize(StrToInt(edSampleSize.Text));
except
MessageBox(Handle,PChar('Invalid Sample Size.'), PChar('Error'), mb_ok);
exit;
end;
ModalResult := mrOK;
end;
procedure TFormMediaType.cbMajorTypesChange(Sender: TObject);
begin
MediaType.MajorType := MajorTypes[cbMajorTypes.ItemIndex].GUID;
RefreshMediaType;
end;
procedure TFormMediaType.cbSubTypesChange(Sender: TObject);
begin
MediaType.SubType := SubTypes[cbSubTypes.ItemIndex].GUID;
RefreshMediaType;
end;
procedure TFormMediaType.chkFixedSizeClick(Sender: TObject);
begin
MediaType.AMMediaType.bFixedSizeSamples := chkFixedSize.Checked;
RefreshMediaType;
end;
procedure TFormMediaType.chkTempCompressClick(Sender: TObject);
begin
MediaType.AMMediaType.bTemporalCompression := chkTempCompress.Checked;
RefreshMediaType;
end;
procedure TFormMediaType.cbFormatTypeChange(Sender: TObject);
begin
MediaType.FormatType := FormatTypes[cbFormatType.ItemIndex].GUID;
RefreshMediaType;
end;
procedure TFormMediaType.edSampleSizeChange(Sender: TObject);
begin
try
if edSampleSize.Text = '' then MediaType.SetSampleSize(0) else
MediaType.SetSampleSize(StrToInt(edSampleSize.Text));
finally
RefreshMediaType;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -