亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? avisynth.h

?? This program is an implementation of a part of one or more MPEG-4 Video tools as specified in ISO/IE
?? H
?? 第 1 頁 / 共 2 頁
字號:
// Avisynth v2.5.  Copyright 2002 Ben Rudiak-Gould et al.
// http://www.avisynth.org

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit
// http://www.gnu.org/copyleft/gpl.html .
//
// Linking Avisynth statically or dynamically with other modules is making a
// combined work based on Avisynth.  Thus, the terms and conditions of the GNU
// General Public License cover the whole combination.
//
// As a special exception, the copyright holders of Avisynth give you
// permission to link Avisynth with independent modules that communicate with
// Avisynth solely through the interfaces defined in avisynth.h, regardless of the license
// terms of these independent modules, and to copy and distribute the
// resulting combined work under terms of your choice, provided that
// every copy of the combined work is accompanied by a complete copy of
// the source code of Avisynth (the version of Avisynth used to produce the
// combined work), being distributed under the terms of the GNU General
// Public License plus this exception.  An independent module is a module
// which is not derived from or based on Avisynth, such as 3rd-party filters,
// import and export plugins, or graphical user interfaces.





#ifndef __AVISYNTH_H__
#define __AVISYNTH_H__

enum { AVISYNTH_INTERFACE_VERSION = 2 };


/* Define all types necessary for interfacing with avisynth.dll
   Moved from internal.h */

// Win32 API macros, notably the types BYTE, DWORD, ULONG, etc. 
#include <windef.h>  

// COM interface macros
#include <objbase.h>

// Raster types used by VirtualDub & Avisynth
#define in64 (__int64)(unsigned short)
typedef unsigned long	Pixel;    // this will break on 64-bit machines!
typedef unsigned long	Pixel32;
typedef unsigned char Pixel8;
typedef long			PixCoord;
typedef	long			PixDim;
typedef	long			PixOffset;


/* Compiler-specific crap */

// Tell MSVC to stop precompiling here
#ifdef _MSC_VER
  #pragma hdrstop
#endif

// Set up debugging macros for MS compilers; for others, step down to the
// standard <assert.h> interface
#ifdef _MSC_VER
  #include <crtdbg.h>
#else
  #define _RPT0(a,b) ((void)0)
  #define _RPT1(a,b,c) ((void)0)
  #define _RPT2(a,b,c,d) ((void)0)
  #define _RPT3(a,b,c,d,e) ((void)0)
  #define _RPT4(a,b,c,d,e,f) ((void)0)
  
  #define _ASSERTE(x) assert(x)
  #include <assert.h>
#endif



// I had problems with Premiere wanting 1-byte alignment for its structures,
// so I now set the Avisynth struct alignment explicitly here.
#pragma pack(push,8)

#define FRAME_ALIGN 16 
// Default frame alignment is 16 bytes, to help P4, when using SSE2

// The VideoInfo struct holds global information about a clip (i.e.
// information that does not depend on the frame number).  The GetVideoInfo
// method in IClip returns this struct.

// Audio Sample information
typedef float SFLOAT;

enum {SAMPLE_INT8  = 1<<0,
        SAMPLE_INT16 = 1<<1, 
        SAMPLE_INT24 = 1<<2,    // Int24 is a very stupid thing to code, but it's supported by some hardware.
        SAMPLE_INT32 = 1<<3,
        SAMPLE_FLOAT = 1<<4};

enum {
   PLANAR_Y=1<<0,
   PLANAR_U=1<<1,
   PLANAR_V=1<<2,
   PLANAR_ALIGNED=1<<3,
   PLANAR_Y_ALIGNED=PLANAR_Y|PLANAR_ALIGNED,
   PLANAR_U_ALIGNED=PLANAR_U|PLANAR_ALIGNED,
   PLANAR_V_ALIGNED=PLANAR_V|PLANAR_ALIGNED,
  };

struct VideoInfo {
  int width, height;    // width=0 means no video
  unsigned fps_numerator, fps_denominator;
  int num_frames;
  // This is more extensible than previous versions. More properties can be added seeminglesly.

  // Colorspace properties.
  enum {
    CS_BGR = 1<<28,  
    CS_YUV = 1<<29,
    CS_INTERLEAVED = 1<<30,
    CS_PLANAR = 1<<31
  };

  // Specific colorformats
  enum { CS_UNKNOWN = 0,
         CS_BGR24 = 1<<0 | CS_BGR | CS_INTERLEAVED,
         CS_BGR32 = 1<<1 | CS_BGR | CS_INTERLEAVED,
         CS_YUY2 = 1<<2 | CS_YUV | CS_INTERLEAVED,
         CS_YV12 = 1<<3 | CS_YUV | CS_PLANAR,  // y-v-u, planar
         CS_I420 = 1<<4 | CS_YUV | CS_PLANAR,  // y-u-v, planar
         CS_IYUV = 1<<4 | CS_YUV | CS_PLANAR  // same as above
         };
  int pixel_type;                // changed to int as of 2.5
  

  int audio_samples_per_second;   // 0 means no audio
  int sample_type;                // as of 2.5
  __int64 num_audio_samples;      // changed as of 2.5
  int nchannels;                  // as of 2.5

  // Imagetype properties

  int image_type;

  enum {
    IT_BFF = 1<<0,
    IT_TFF = 1<<1,
    IT_FIELDBASED = 1<<2
  };

  // useful functions of the above
  bool HasVideo() const { return (width!=0); }
  bool HasAudio() const { return (audio_samples_per_second!=0); }
  bool IsRGB() const { return !!(pixel_type&CS_BGR); }
  bool IsRGB24() const { return (pixel_type&CS_BGR24)==CS_BGR24; } // Clear out additional properties
  bool IsRGB32() const { return (pixel_type & CS_BGR32) == CS_BGR32 ; }
  bool IsYUV() const { return !!(pixel_type&CS_YUV ); }
  bool IsYUY2() const { return (pixel_type & CS_YUY2) == CS_YUY2; }  
  bool IsYV12() const { return ((pixel_type & CS_YV12) == CS_YV12)||((pixel_type & CS_I420) == CS_I420); }
  bool IsColorSpace(int c_space) const { return ((pixel_type & c_space) == c_space); }
  bool Is(int property) const { return ((pixel_type & property)==property ); }
  bool IsPlanar() const { return !!(pixel_type & CS_PLANAR); }
  bool IsFieldBased() const { return !!(image_type & IT_FIELDBASED); }
  bool IsParityKnown() const { return ((image_type & IT_FIELDBASED)&&(image_type & (IT_BFF||IT_TFF))); }
  bool IsBFF() const { return !!(pixel_type & IT_BFF); }
  bool IsTFF() const { return !!(pixel_type & IT_TFF); }
  
  bool IsVPlaneFirst() const {return ((pixel_type & CS_YV12) == CS_YV12); }  // Don't use this 
  int BytesFromPixels(int pixels) const { return pixels * (BitsPerPixel()>>3); }   // Will not work on planar images, but will return only luma planes
  int RowSize() const { return BytesFromPixels(width); }  // Also only returns first plane on planar images
  int BMPSize() const { if (IsPlanar()) {int p = height * ((RowSize()+3) & ~3); p+=p>>1; return p;  } return height * ((RowSize()+3) & ~3); }
  __int64 AudioSamplesFromFrames(__int64 frames) const { return ((__int64)(frames) * audio_samples_per_second * fps_denominator / fps_numerator); }
  int FramesFromAudioSamples(__int64 samples) const { return (int)(samples * (__int64)fps_numerator / (__int64)fps_denominator / (__int64)audio_samples_per_second); }
  __int64 AudioSamplesFromBytes(__int64 bytes) const { return bytes / BytesPerAudioSample(); }
  __int64 BytesFromAudioSamples(__int64 samples) const { return samples * BytesPerAudioSample(); }
  int AudioChannels() const { return nchannels; }
  int SampleType() const{ return sample_type;}
  int SamplesPerSecond() const { return audio_samples_per_second; }
  int BytesPerAudioSample() const { return nchannels*BytesPerChannelSample();}
  void SetFieldBased(bool isfieldbased)  { if (isfieldbased) image_type|=IT_FIELDBASED; else  image_type&=~IT_FIELDBASED; }
  void Set(int property)  { image_type|=property; }
  void Clear(int property)  { image_type&=~property; }

  int BitsPerPixel() const { 
    switch (pixel_type) {
      case CS_BGR24:
        return 24;
      case CS_BGR32:
        return 32;
      case CS_YUY2:
        return 16;
      case CS_YV12:
      case CS_I420:
        return 12;
      default:
        return 0;
    }
  }
  int BytesPerChannelSample() const { 
    switch (sample_type) {
    case SAMPLE_INT8:
      return sizeof(signed char);
    case SAMPLE_INT16:
      return sizeof(signed short);
    case SAMPLE_INT24:
      return 3;
    case SAMPLE_INT32:
      return sizeof(signed int);
    case SAMPLE_FLOAT:
      return sizeof(SFLOAT);
    default:
      _ASSERTE("Sample type not recognized!");
      return 0;
    }
  }

  // useful mutator
  void SetFPS(unsigned numerator, unsigned denominator) {
    unsigned x=numerator, y=denominator;
    while (y) {   // find gcd
      unsigned t = x%y; x = y; y = t;
    }
    fps_numerator = numerator/x;
    fps_denominator = denominator/x;
  }
};

enum {
  FILTER_TYPE=1,
  FILTER_INPUT_COLORSPACE=2,
  FILTER_OUTPUT_TYPE=9,
  FILTER_NAME=4,
  FILTER_AUTHOR=5,
  FILTER_VERSION=6,
  FILTER_ARGS=7,
  FILTER_ARGS_INFO=8,
  FILTER_ARGS_DESCRIPTION=10,
  FILTER_DESCRIPTION=11,
};
enum {  //SUBTYPES
  FILTER_TYPE_AUDIO=1,
  FILTER_TYPE_VIDEO=2,
  FILTER_OUTPUT_TYPE_SAME=3,
  FILTER_OUTPUT_TYPE_DIFFERENT=4,
};



// VideoFrameBuffer holds information about a memory block which is used
// for video data.  For efficiency, instances of this class are not deleted
// when the refcount reaches zero; instead they're stored in a linked list
// to be reused.  The instances are deleted when the corresponding AVS
// file is closed.

class VideoFrameBuffer {
  BYTE* const data;
  const int data_size;
  // sequence_number is incremented every time the buffer is changed, so
  // that stale views can tell they're no longer valid.
  long sequence_number;

  friend class VideoFrame;
  friend class Cache;
  long refcount;

public:
  VideoFrameBuffer(int size);
  VideoFrameBuffer();
  ~VideoFrameBuffer();

  const BYTE* GetReadPtr() const { return data; }
  BYTE* GetWritePtr() { ++sequence_number; return data; }
  int GetDataSize() { return data_size; }
  int GetSequenceNumber() { return sequence_number; }
  int GetRefcount() { return refcount; }
};


class IClip;
class PClip;
class PVideoFrame;
class IScriptEnvironment;
class AVSValue;


// VideoFrame holds a "window" into a VideoFrameBuffer.  Operator new
// is overloaded to recycle class instances.

class VideoFrame {
  int refcount;
  VideoFrameBuffer* const vfb;
  const int offset, pitch, row_size, height, offsetU, offsetV, pitchUV;  // U&V offsets are from top of picture.

  friend class PVideoFrame;
  void AddRef() { ++refcount; }
  void Release() { if (refcount==1) --vfb->refcount; --refcount; }

  friend class ScriptEnvironment;
  friend class Cache;

  VideoFrame(VideoFrameBuffer* _vfb, int _offset, int _pitch, int _row_size, int _height);
  VideoFrame(VideoFrameBuffer* _vfb, int _offset, int _pitch, int _row_size, int _height, int _offsetU, int _offsetV, int _pitchUV);

  void* operator new(unsigned size);
// TESTME: OFFSET U/V may be switched to what could be expected from AVI standard!
public:
  int GetPitch() const { return pitch; }
  int GetPitch(int plane) const { switch (plane) {case PLANAR_U: case PLANAR_V: return pitchUV;} return pitch; }
  int GetRowSize() const { return row_size; }
  int GetRowSize(int plane) const { 
    switch (plane) {
    case PLANAR_U: case PLANAR_V: if (pitchUV) return row_size>>1; else return 0;
    case PLANAR_U_ALIGNED: case PLANAR_V_ALIGNED: 
      if (pitchUV) { 
        int r = ((row_size+FRAME_ALIGN-1)&(~(FRAME_ALIGN-1)) )>>1; // Aligned rowsize
        if (r<=pitchUV) 
          return r; 
        return row_size>>1; 
      } else return 0;
    case PLANAR_Y_ALIGNED:
      int r = (row_size+FRAME_ALIGN-1)&(~(FRAME_ALIGN-1)); // Aligned rowsize
      if (r<=pitch) 
        return r; 
      return row_size;
    }
    return row_size; }
  int GetHeight() const { return height; }
  int GetHeight(int plane) const {  switch (plane) {case PLANAR_U: case PLANAR_V: if (pitchUV) return height>>1; return 0;} return height; }

  // generally you shouldn't use these three
  VideoFrameBuffer* GetFrameBuffer() const { return vfb; }
  int GetOffset() const { return offset; }
  int GetOffset(int plane) const { switch (plane) {case PLANAR_U: return offsetU;case PLANAR_V: return offsetV;default: return offset;}; }

  // in plugins use env->SubFrame()
  VideoFrame* Subframe(int rel_offset, int new_pitch, int new_row_size, int new_height) const;
  VideoFrame* Subframe(int rel_offset, int new_pitch, int new_row_size, int new_height, int rel_offsetU, int rel_offsetV, int pitchUV) const;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲视频一区二区| 国产成人精品aa毛片| 亚洲欧美激情小说另类| 国产精品美女一区二区三区| 欧美成人乱码一区二区三区| 欧美一区二区三区白人| 欧美一区二区三区公司| 日韩美女在线视频| 欧美成人在线直播| 日本一区二区三区在线不卡| 国产欧美日本一区视频| 亚洲欧美怡红院| 夜夜爽夜夜爽精品视频| 奇米影视7777精品一区二区| 美女久久久精品| 国产ts人妖一区二区| av福利精品导航| 欧美人妖巨大在线| 精品成人一区二区| 中文字幕一区二区三中文字幕| 亚洲三级久久久| 首页国产欧美久久| 国产尤物一区二区在线| 成人黄色av网站在线| 欧洲一区二区三区在线| 日韩午夜在线观看| 中文在线免费一区三区高中清不卡| 中文字幕一区日韩精品欧美| 亚洲一区二区三区四区中文字幕| 青椒成人免费视频| 欧美一级在线视频| 亚洲国产成人在线| 亚洲一区二区三区四区五区中文 | 美腿丝袜亚洲色图| 丁香亚洲综合激情啪啪综合| 色狠狠色狠狠综合| 精品美女在线观看| 亚洲综合丝袜美腿| 国产成+人+日韩+欧美+亚洲| 欧美色视频在线| 国产亚洲精品中文字幕| 亚洲高清视频的网址| 福利一区在线观看| 91精品国产综合久久福利软件| 国产喂奶挤奶一区二区三区| 首页亚洲欧美制服丝腿| 波多野结衣精品在线| 日韩欧美高清dvd碟片| 一区二区三区精品视频| 国产高清久久久久| 日韩免费高清av| 亚洲国产成人tv| 99久久婷婷国产综合精品| 欧美草草影院在线视频| 亚洲国产婷婷综合在线精品| 国产成人免费视频网站| 日韩三级免费观看| 午夜久久久久久电影| 91蝌蚪国产九色| 日本一区二区成人| 国产自产高清不卡| 日韩精品中午字幕| 美女精品一区二区| 欧美一区二区在线免费观看| 一区二区高清在线| 不卡的av网站| 国产精品日产欧美久久久久| 国产精品香蕉一区二区三区| 日韩女优av电影在线观看| 丝瓜av网站精品一区二区 | 欧美日韩国产a| 一区二区三区91| 日本韩国欧美国产| 国产91在线|亚洲| 久久久久久久久久久久久夜| 美女视频网站久久| 精品国产乱码久久久久久1区2区| 日本成人在线视频网站| 91精品国产免费| 日本一道高清亚洲日美韩| 欧美一级艳片视频免费观看| 日韩国产欧美在线播放| 欧美一级在线观看| 国产呦萝稀缺另类资源| 国产午夜精品一区二区三区嫩草 | 亚洲另类春色校园小说| 99综合电影在线视频| 亚洲精选在线视频| 欧美美女一区二区三区| 久久精品国产亚洲5555| 久久久不卡网国产精品二区| 国产suv精品一区二区6| 中文字幕综合网| 欧美性受xxxx黑人xyx性爽| 亚洲国产精品自拍| 日韩欧美激情四射| 日韩欧美激情四射| 国产suv精品一区二区883| 中文字幕在线观看不卡视频| 在线观看视频91| 视频一区中文字幕| 久久久99精品久久| 日本道精品一区二区三区| 三级成人在线视频| 国产精品视频观看| 欧美日韩成人高清| 国产高清不卡一区| 亚洲不卡一区二区三区| 欧美va在线播放| 成人avav影音| 日本欧美加勒比视频| 国产精品污网站| 欧美剧在线免费观看网站 | 亚洲国产精品av| 欧美精品777| 国产v综合v亚洲欧| 日韩和的一区二区| 国产成人综合视频| 亚洲一区国产视频| 中文字幕免费不卡| 欧美一区二区成人| 91香蕉视频在线| 国产乱一区二区| 日韩中文字幕麻豆| 亚洲少妇最新在线视频| 26uuu成人网一区二区三区| 欧洲精品在线观看| 成人黄页毛片网站| 久久9热精品视频| 亚洲第一主播视频| 亚洲女人****多毛耸耸8| 久久久久久久久岛国免费| 欧美影视一区在线| 91捆绑美女网站| 成人午夜又粗又硬又大| 国产一区 二区| 蜜桃一区二区三区四区| 亚洲一区二区三区在线播放| 国产精品不卡在线| 国产日韩影视精品| 久久久久久黄色| 精品欧美乱码久久久久久| 欧美人牲a欧美精品| 一本一道久久a久久精品综合蜜臀| 精品亚洲国内自在自线福利| 五月激情综合网| 亚洲第一福利一区| 亚洲一区二区三区四区在线| 亚洲男人都懂的| 亚洲人成影院在线观看| 中文字幕在线观看不卡| 综合自拍亚洲综合图不卡区| 国产网红主播福利一区二区| 久久美女高清视频| 国产欧美一区二区精品性| 久久人人爽爽爽人久久久| 久久亚洲私人国产精品va媚药| 日韩精品在线一区| www国产亚洲精品久久麻豆| 欧美sm极限捆绑bd| 久久精品视频免费| 中文字幕一区二区三区色视频| 国产精品久久看| 亚洲精选免费视频| 亚洲国产成人91porn| 免费看黄色91| 国产精品自拍在线| 91在线精品一区二区| 色欧美片视频在线观看在线视频| 色噜噜狠狠色综合中国| 在线播放91灌醉迷j高跟美女| 欧美福利电影网| 亚洲精品一区二区三区99| 欧美激情综合在线| 亚洲综合色视频| 麻豆精品一区二区av白丝在线| 国产美女一区二区| 91在线视频播放| 欧美一区二区三区四区久久| 亚洲h精品动漫在线观看| 日本亚洲视频在线| 国产成人午夜精品5599| 色婷婷综合久色| 日韩午夜中文字幕| 中文字幕一区二区三区在线播放| 亚洲一区二区在线播放相泽 | 日韩视频在线观看一区二区| 欧美成人激情免费网| 综合色中文字幕| 麻豆精品精品国产自在97香蕉| 国产69精品久久99不卡| 欧美丰满美乳xxx高潮www| 国产日产精品一区| 亚洲高清不卡在线观看| 国产精品一二三四| 欧美日韩国产成人在线免费| 欧美韩国日本不卡| 日韩福利视频导航| 色噜噜狠狠一区二区三区果冻| 日韩丝袜美女视频|