⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediatypeeditor.pas

📁 企业安防管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    (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 + -