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

📄 bassvideo.pas

📁 delphi2007写的播放器源码。效果类似于千千静听。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit BassVideo;

interface

uses Windows, Messages, Bass, ActiveX;

(* 2.4.1.2 *)
type
     TWMAudioFormat = record
      Bitrate : integer;
      Freq : integer;
      nChan : integer;
      wBitPerSample : integer;
     end;
     PWMAudioFormat = ^TWMAudioFormat;

    PASFConfig = ^TASFConfig;
    TASFConfig = record
       Version : integer;
       Has_Audio : BOOL;
       Has_Video : BOOL;
       VideoBitrate : integer;
       useVideoVBR : BOOL;
       VBRQuality : integer; // 0 -> 100
       VideoCodec : integer;
       SrcVideoFrameHeight, SrcVideoFrameWidth : integer;
       DestVideoFrameHeight, DestVideoFrameWidth : integer;
       VideoQuality : integer; // 0 -> 100
       AudioCodec : integer;
       AudioCodecFormat : integer;
       AudioBitrate : integer;
       // for auto config audio
       Audio_Frequency : integer;
       Audio_Channel : integer;
       Audio_Bits_Per_Sample : integer;
     end;

    HFilter = Pointer;
    HCapture = integer;
    TCallBackEnumEncoderFilter = function(Filter : HFilter; FilterName,
                                          FilterGuid : PChar;user : Pointer) : BOOL; stdcall;
    TAudioEncoderCallBack = procedure(chan : DWORD; NewDatasize : DWORD; user : Pointer); stdcall;
    TBassVideoFrameInfo = record
     AvgFrameRate    : integer;
     FrameDraw, FrameDrop : integer;
    end;
    TBassVideoInfo = record
     AvgTimePerFrame : Double;
     Height, Width : integer;
     FormatType : integer;
     VideoFormat : integer;
     VideoFormat_GUID : PGUID;
    end;

 TCallBackDraw = procedure(chan : DWORD; DC : HDC; user : Pointer); stdcall;
 TMsg = record
    msg : DWORD;
    param1,
    param2 : LongInt;
 end;

   TResizeType = (R43, R169, RSource, RFree, RCustom);
     VIDEOPROC  = function(Handle : DWORD; Action, param1, param2 : DWORD; user : Pointer): BOOL; stdcall;
     {
        Handle : the channels handle
        Action :
           BassVideo_OpenDone     = 1; // chan : DWORD = 0 if failed , <> 0 if success
           BassVideo_Buffering    = 2; // param1 : 0 if buffering done, <> 0 if buffering in progress , param2 = buffer % // this for used in future
           BassVideo_FoundVideo   = 3; // chan : DWORD tell the app must prepare the video windows & Handle
     }
     FILTERPROC = function(Handle : DWORD; FilterName : PChar; Filter : Pointer; User : Pointer): BOOL; stdcall;
     {
        callback when enum filter
        FilterName : name of the DirectShow Filter
        Filter : Pointer of IBaseFilter

     }
     QWORD = int64;
     HSTREAM = DWORD;
     OAHWND = Longint;

const // video display
      BassVideoDLL = 'bassvideo.dll';
      BassVideo_Config_Renderer           = $100; // for BassVideo_GetConfig/SetConfig
      BassVideo_Congfig_WMASF_READER      = $101; // 0 = use WM_ASFReader else use Windows Media Source Filter
      BassVideo_Config_Audio_Renderer     = $102; // 0 = use Bass, 1 = use Windows

      // video render option
      BassVideo_Default              = 0;
      BassVideo_VMR9                 = 1;
      BassVideo_VMR9_Windowless      = 2;
      BassVideo_EVR                  = 3;
      BassVideo_Overlay              = 4;
      BassVideo_NOVIdeo              = 5;

      // action
      BassVideo_OpenDone       = 1; // chan : DWORD = 0 if failed , <> 0 if success
      BassVideo_Buffering      = 2; // param1 : 0 if buffering done, <> 0 if buffering in progress , param2 = buffer %
      BassVideo_FoundVideo     = 3; // chan : DWORD tell the app must prepare the video windows & Handle
      BassVideo_EndStream      = 4;
      BassVideo_DShow_Event    = 5;
      BassVideo_WM_Move        = 6;
      BassVideo_WM_Size        = 7;
      BassVideo_WM_Paint       = 8;
      BassVideo_WM_Mouse_Click = 9;
      BassVideo_WM_Mouse_Move  = 10;
      BassVideo_PlayEvent      = 11;

      BassVideo_Is_Play        = 1;
      BassVideo_Is_Pause       = 2;
      BassVideo_Is_Stop        = 3;

      // flags :
      BASSVIDEO_AUTO_PAINT     = 2;
      BASSVIDEO_AUTO_RESIZE    = 4;
      BASSVIDEO_AUTO_MOVE      = 8;
      BASSVIDEO_FILTERNAME     = 16;
      BASSVIDEO_UNICODE        = 32;
      BASSVIDEO_VIDEOEFFECT    = 64;
      BASSVIDEO_DISABLE_VIDEO  = 128;
      {2.4.0.9 change :}
      // color set
      COLOR_Brightness         = 1;
      COLOR_Contrast           = 2;
      COLOR_Hue                = 3;
      COLOR_Saturation         = 4;

      BASSVIDEO_MEDIA_UNKNOWN    = 0;
      BASSVIDEO_MEDIA_AVI        = 2;

    Video_WMV            = 1;
    Video_AVI            = 0;
    EncoderType_Video    = 0;
    EncoderType_Audio    = 1;
    EncoderType_WMASF    = 2;
    Device_Video_Capture = 3;
    Device_Audio_Capture = 4;

// wmv encoding
    WM_PROFILE             = 0;
    WM_DONT_COMPRESS       = 1; // 0 = false , 1 = true
    WM_MULTI_PASS          = 2; // 0 = false , 1 = true
    WM_AUTOINDEX           = 3; // 0 = false , 1 = true

    WM_VIDEO_8             = 100;
    WM_VIDEO_9             = 101;
    WM_AUTO_SELECT         = -1; // for ASFConfig AudioCodec value

//  WMPofiles8
    wmp_V80_255VideoPDA    = 0;
    wmp_V80_150VideoPDA    = 1;
    wmp_V80_28856VideoMBR  = 2;
    wmp_V80_100768VideoMBR = 3;
    wmp_V80_288100VideoMBR = 4;
    wmp_V80_288Video       = 5;
    wmp_V80_56Video        = 6;
    wmp_V80_100Video       = 7;
    wmp_V80_256Video       = 8;
    wmp_V80_384Video       = 9;
    wmp_V80_768Video       = 10;
    wmp_V80_700NTSCVideo   = 11;
    wmp_V80_1400NTSCVideo  = 12;
    wmp_V80_384PALVideo    = 13;
    wmp_V80_700PALVideo    = 14;
    wmp_V80_288MonoAudio   = 15;
    wmp_V80_288StereoAudio = 16;
    wmp_V80_32StereoAudio  = 17;
    wmp_V80_48StereoAudio  = 18;
    wmp_V80_64StereoAudio  = 19;
    wmp_V80_96StereoAudio  = 20;
    wmp_V80_128StereoAudio = 21;
    wmp_V80_288VideoOnly   = 22;
    wmp_V80_56VideoOnly    = 23;
    wmp_V80_FAIRVBRVideo   = 24;
    wmp_V80_HIGHVBRVideo   = 25;
    wmp_V80_BESTVBRVideo   = 26;

    VIDEOTYPE_UNKNOW                                       = 00;
    //Uncompressed RGB Video Subtypes
    VIDEOTYPE_RGB1                                         = 01;
    VIDEOTYPE_RGB4                                         = 02;
    VIDEOTYPE_RGB8                                         = 03;
    VIDEOTYPE_RGB555                                       = 04;
    VIDEOTYPE_RGB565                                       = 05;
    VIDEOTYPE_RGB24                                        = 06;
    VIDEOTYPE_RGB32                                        = 07;
    VIDEOTYPE_ARGB1555                                     = 08;
    VIDEOTYPE_ARGB32                                       = 09;
    VIDEOTYPE_ARGB4444                                     = 10;
    VIDEOTYPE_A2R10G10B10                                  = 11;
    VIDEOTYPE_A2B10G10R10                                  = 12;
    //YUV
    VIDEOTYPE_AYUV                                         = 13;
    VIDEOTYPE_YUY2                                         = 14;
    VIDEOTYPE_UYVY                                         = 15;
    VIDEOTYPE_IMC1                                         = 16;
    VIDEOTYPE_IMC3                                         = 17;
    VIDEOTYPE_IMC2                                         = 18;
    VIDEOTYPE_IMC4                                         = 19;
    VIDEOTYPE_YV12                                         = 20;
    VIDEOTYPE_NV12                                         = 21;
    VIDEOTYPE_Y411                                         = 22;
    VIDEOTYPE_Y41P                                         = 23;
    VIDEOTYPE_Y211                                         = 24;
    VIDEOTYPE_YVYU                                         = 25;
    VIDEOTYPE_YVU9                                         = 26;
    VIDEOTYPE_IF09                                         = 27;
    //Analog Video Subtypes
    VIDEOTYPE_AnalogVideo_NTSC_M                           = 28;
    VIDEOTYPE_AnalogVideo_PAL_B                            = 29;
    VIDEOTYPE_AnalogVideo_PAL_D                            = 30;
    VIDEOTYPE_AnalogVideo_PAL_G                            = 31;
    VIDEOTYPE_AnalogVideo_PAL_H                            = 32;
    VIDEOTYPE_AnalogVideo_PAL_I                            = 33;
    VIDEOTYPE_AnalogVideo_PAL_M                            = 34;
    VIDEOTYPE_AnalogVideo_PAL_N                            = 35;
    VIDEOTYPE_AnalogVideo_SECAM_B                          = 36;
    VIDEOTYPE_AnalogVideo_SECAM_D                          = 37;
    VIDEOTYPE_AnalogVideo_SECAM_G                          = 38;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -