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

📄 anyqv.pas

📁 音视频控件SunAM-V1.0 音视频控件SunAM-V1.0 音视频控件SunAM-V1.0 音视频控件SunAM-V1.0
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit AnyQV;

interface
uses
  Windows,Dialogs;


// Bitstream Version
const
  XVID_BS_VERSION = 34;

//****************************************************************************
// error codes
//****************************************************************************

// all functions return values <0 indicate error
const
  XVID_ERR_FAIL = -1;       // general fault
  XVID_ERR_MEMORY = -2;     // memory allocation error
  XVID_ERR_FORMAT = -3;     // file format error
  XVID_ERR_VERSION = -4;    // structure version not supported
  XVID_ERR_END = -5;        // encoder only; end of stream reached



//****************************************************************************
// xvid_image_t
//****************************************************************************

// colorspace values
const
 XVID_CSP_PLANAR = (1 shl 0);       // 4:2:0 planar (==I420, except for pointers/strides)
  XVID_CSP_USER = XVID_CSP_PLANAR;
  XVID_CSP_I420 = (1 shl 1);        // 4:2:0 planar
  XVID_CSP_YV12 = (1 shl 2);        // 4:2:0 planar
  XVID_CSP_YUY2 = (1 shl 3);        // 4:2:2 packed
  XVID_CSP_UYVY = (1 shl 4);        // 4:2:2 packed
  XVID_CSP_YVYU = (1 shl 5);        // 4:2:2 packed
  XVID_CSP_BGRA = (1 shl 6);        // 32-bit bgra packed
  XVID_CSP_ABGR = (1 shl 7);        // 32-bit abgr packed
  XVID_CSP_RGBA = (1 shl 8);        // 32-bit rgba packed
  XVID_CSP_ARGB = (1 shl 15);       // 32-bit argb packed
  XVID_CSP_BGR = (1 shl 9);         // 24-bit bgr packed
  XVID_CSP_RGB555 = (1 shl 10);     // 16-bit rgb555 packed
  XVID_CSP_RGB565 = (1 shl 11);     // 16-bit rgb565 packed
  XVID_CSP_SLICE = (1 shl 12);      // decoder only: 4:2:0 planar, per slice rendering
  XVID_CSP_INTERNAL = (1 shl 13);   // decoder only: 4:2:0 planar, returns ptrs to internal buffers
  XVID_CSP_NULL = (1 shl 14);       // decoder only: dont output anything
  XVID_CSP_VFLIP = (1 shl 31);      // vertical flip mask

// xvid_image_t
type
  xvid_image_t = packed record
    csp: Integer;                          // [in] colorspace; or with XVID_CSP_VFLIP to perform vertical flip
    plane: Array[0..4-1] of Pointer;       // [in] image plane ptrs
    stride: Array[0..4-1] of Integer;      // [in] image stride; "bytes per row"
  end;

// video-object-sequence profiles
const
  XVID_PROFILE_S_L0 = $08;    // simple
  XVID_PROFILE_S_L1 = $01;
  XVID_PROFILE_S_L2 = $02;
  XVID_PROFILE_S_L3 = $03;
  XVID_PROFILE_ARTS_L1 = $91; // advanced realtime simple
  XVID_PROFILE_ARTS_L2 = $92;
  XVID_PROFILE_ARTS_L3 = $93;
  XVID_PROFILE_ARTS_L4 = $94;
  XVID_PROFILE_AS_L0 = $f0;   // advanced simple
  XVID_PROFILE_AS_L1 = $f1;
  XVID_PROFILE_AS_L2 = $f2;
  XVID_PROFILE_AS_L3 = $f3;
  XVID_PROFILE_AS_L4 = $f4;

// aspect ratios
const
  XVID_PAR_11_VGA = 1;        // 1:1 vga (square), default if supplied PAR is not a valid value
  XVID_PAR_43_PAL = 2;        // 4:3 pal (12:11 625-line)
  XVID_PAR_43_NTSC = 3;       // 4:3 ntsc (10:11 525-line)
  XVID_PAR_169_PAL = 4;       // 16:9 pal (16:11 625-line)
  XVID_PAR_169_NTSC = 5;      // 16:9 ntsc (40:33 525-line)
  XVID_PAR_EXT = 15;          // extended par; use par_width, par_height

// frame type flags
const
  XVID_TYPE_VOL = -1;       // decoder only: vol was decoded
  XVID_TYPE_NOTHING = 0;    // decoder only (encoder stats): nothing was decoded/encoded
  XVID_TYPE_AUTO = 0;       // encoder: automatically determine coding type
  XVID_TYPE_IVOP = 1;       // intra frame
  XVID_TYPE_PVOP = 2;       // predicted frame
  XVID_TYPE_BVOP = 3;       // bidirectionally encoded
  XVID_TYPE_SVOP = 4;       // predicted+sprite frame


//****************************************************************************
// xvid_global()
//****************************************************************************

// cpu_flags definitions (make sure to sync this with cpuid.asm for ia32)
const
  XVID_CPU_FORCE = (1 shl 31);    // force passed cpu flags
  XVID_CPU_ASM = (1 shl 7);       // native assembly
  // ARCH_IS_IA32
  XVID_CPU_MMX = (1 shl 0);       // mmx : pentiumMMX,k6
  XVID_CPU_MMXEXT = (1 shl 1);    // mmx-ext : pentium2, athlon
  XVID_CPU_SSE = (1 shl 2);       // sse : pentium3, athlonXP
  XVID_CPU_SSE2 = (1 shl 3);      // sse2 : pentium4, athlon64
  XVID_CPU_3DNOW = (1 shl 4);     // 3dnow : k6-2
  XVID_CPU_3DNOWEXT = (1 shl 5);  // 3dnow-ext : athlon
  XVID_CPU_TSC = (1 shl 6);       // tsc : Pentium
  // ARCH_IS_PPC
  XVID_CPU_ALTIVEC = (1 shl 0);   // altivec

  XVID_DEBUG_ERROR = (1 shl 0);
  XVID_DEBUG_STARTCODE = (1 shl 1);
  XVID_DEBUG_HEADER = (1 shl 2);
  XVID_DEBUG_TIMECODE = (1 shl 3);
  XVID_DEBUG_MB = (1 shl 4);
  XVID_DEBUG_COEFF = (1 shl 5);
  XVID_DEBUG_MV = (1 shl 6);
  XVID_DEBUG_RC = (1 shl 7);
  XVID_DEBUG_DEBUG = (1 shl 31);

// XVID_GBL_INIT param1
type
  xvid_gbl_init_t = packed record
    version: Integer;
    cpu_flags: Word;     // [in:opt] zero = autodetect cpu; XVID_CPU_FORCE or {cpu features} = force cpu features
    debug: Integer;      // [in:opt] debug level
  end;

// XVID_GBL_INFO param1
  xvid_gbl_info_t = packed record
    version: Integer;
    actual_version: Integer;  // [out] returns the actual xvidcore version
    build: Pchar;             // [out] if !null, points to description of this xvid core build
    cpu_flags: Word;          // [out] detected cpu features
    num_threads: Integer;     // [out] detected number of cpus/threads
  end;

// XVID_GBL_CONVERT param1
  xvid_gbl_convert_t = packed record
    version: Integer;
    input: XVID_IMAGE_T;      // [in] input image  and  colorspace
    output: XVID_IMAGE_T;     // [in] output image  and  colorspace
    width: Integer;           // [in] width
    height: Integer;          // [in] height
    interlacing: Integer;     // [in] interlacing
  end;

const
  XVID_GBL_INIT = 0;          // initialize xvidcore; must be called before using xvid_decore, or xvid_encore)
  XVID_GBL_INFO = 1;          // return some info about xvidcore, and the host computer
  XVID_GBL_CONVERT = 2;       // colorspace conversion utility

type
  xvid_global = function(handle: Pointer;
                        opt: Integer;
                        param1: Pointer;
                        param2: Pointer): Integer; cdecl;


//****************************************************************************
// xvid_decore()
//****************************************************************************
const
  XVID_DEC_CREATE = 0;  // create decore instance; return 0 on success
  XVID_DEC_DESTROY = 1; // destroy decore instance: return 0 on success
  XVID_DEC_DECODE = 2;  // decode a frame: returns number of bytes consumed >= 0

type
  xvid_decore = function(handle: Pointer;
                        opt: Integer;
                        param1: Pointer;
                        param2: Pointer): Integer; cdecl;

// XVID_DEC_CREATE param 1
//-image width  and  height may be specified here when the dimensions are
//known in advance.

type
  xvid_dec_create_t = packed record
    version: Integer;
    width: Integer;       // [in:opt] image width
    height: Integer;      // [in:opt] image width
    handle: Pointer;      // [out] decore context handle
  end;

// XVID_DEC_DECODE param1
// general flags
const
  XVID_LOWDELAY = (1 shl 0);      // lowdelay mode
  XVID_DISCONTINUITY = (1 shl 1); // indicates break in stream
  XVID_DEBLOCKY = (1 shl 2);      // perform luma deblocking
  XVID_DEBLOCKUV = (1 shl 3);     // perform chroma deblocking
  XVID_FILMEFFECT = (1 shl 4);    // adds film grain

type
  xvid_dec_frame_t = packed record
    version: Integer;
    general: Integer;       // [in:opt] general flags
    bitstream: Pointer;     // [in] bitstream (read from)
    length: Integer;        // [in] bitstream length
    output: XVID_IMAGE_T;   // [in] output image (written to)
  end;


// XVID_DEC_DECODE param2 :: optional
  vop = packed record
    version: Integer;
    _type: Integer;           // [out] output data type
                              // type>0 {XVID_TYPE_IVOP,XVID_TYPE_PVOP,XVID_TYPE_BVOP,XVID_TYPE_SVOP}
    general: Integer;         // [out] flags
    time_base: Integer;       // [out] time base
    time_increment: Integer;  // [out] time increment

// XXX: external deblocking stuff
    qscale: PInteger;         // [out] pointer to quantizer table
    qscale_stride: Integer;   // [out] quantizer scale stride
  end;

  vol = record     // XVID_TYPE_VOL
    general: Integer;         // [out] flags
    width: Integer;           // [out] width
    height: Integer;          // [out] height
    par: Integer;             // [out] pixel aspect ratio (refer to XVID_PAR_xxx above)
    par_width: Integer;       // [out] aspect ratio width [1..255]
    par_height: Integer;      // [out] aspect ratio height [1..255]
  end;

const
  XVID_ZONE_QUANT = (1 shl 0);
  XVID_ZONE_WEIGHT = (1 shl 1);

type
  Pxvid_enc_zone_t = ^xvid_enc_zone_t;
  xvid_enc_zone_t = packed record
    frame: Integer;
    mode: Integer;
    increment: Integer;
    base: Integer;
  end;


//----------------------------------------------------------------------------
// xvid_enc_stats_t structure
//
// Used in:
// - xvid_plg_data_t structure
// - optional parameter in xvid_encore() function
//
// .coding_type = XVID_TYPE_NOTHING if the stats are not given
//----------------------------------------------------------------------------

type
  xvid_enc_stats_t = packed record
    version: Integer;          // encoding parameters
    _type: Integer;            // [out] coding type
    quant: Integer;            // [out] frame quantizer
    vol_flags: Integer;        // [out] vol flags (see above)
    vop_flags: Integer;        // [out] vop flags (see above)

   // bitrate
    length: Integer;           // [out] frame length
    hlength: Integer;          // [out] header length (bytes)
    kblks: Integer;            // [out] number of blocks compressed as Intra
    mblks: Integer;            // [out] number of blocks compressed as Inter
    ublks: Integer;            // [out] number of blocks marked as not_coded

    sse_y: Integer;            // [out] Y plane's sse
    sse_u: Integer;            // [out] U plane's sse
    sse_v: Integer;            // [out] V plane's sse
  end;

//****************************************************************************
{-xvid plugin system -- internals }

{-xvidcore will call XVID_PLG_INFO and XVID_PLG_CREATE during XVID_ENC_CREATE }
{-before encoding each frame xvidcore will call XVID_PLG_BEFORE }
{-after encoding each frame xvidcore will call XVID_PLG_AFTER }
{-xvidcore will call XVID_PLG_DESTROY during XVID_ENC_DESTROY }
//****************************************************************************

const
  XVID_PLG_CREATE = (1 shl 0);
  XVID_PLG_DESTROY = (1 shl 1);
  XVID_PLG_INFO = (1 shl 2);
  XVID_PLG_BEFORE = (1 shl 3);
  XVID_PLG_FRAME = (1 shl 4);
  XVID_PLG_AFTER = (1 shl 5);

// xvid_plg_info_t.flags*/ }
  XVID_REQORIGINAL = (1 shl 0); // plugin requires a copy of the original (uncompressed) image
  XVID_REQPSNR = (1 shl 1);     // plugin requires psnr between the uncompressed and compressed image
  XVID_REQDQUANTS = (1 shl 2);  // plugin requires access to the dquant table


type

⌨️ 快捷键说明

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