38 #ifndef __AVISYNTH_C__
39 #define __AVISYNTH_C__
51 #ifndef __AVISYNTH_6_H__
299 #ifdef BUILDING_AVSCORE
301 IScriptEnvironment * env;
304 : env(e),
error(0) {}
336 {
return (p->
width!=0); }
403 {
return ((p->
image_type & property)==property ); }
483 unsigned x=numerator, y=denominator;
485 unsigned t = x%y; x = y; y = t;
491 #ifdef AVS_IMPLICIT_FUNCTION_DECLARATION_ERROR
542 #ifdef AVS_IMPLICIT_FUNCTION_DECLARATION_ERROR
559 #ifdef AVS_IMPLICIT_FUNCTION_DECLARATION_ERROR
568 #ifdef AVS_IMPLICIT_FUNCTION_DECLARATION_ERROR
577 #ifndef AVSC_NO_DECLSPEC
579 {avs_release_video_frame(f);}
581 {
return avs_copy_video_frame(f);}
663 #ifndef AVSC_NO_DECLSPEC
665 {
AVS_Value v; avs_set_to_clip(&v, v0);
return v; }
798 #ifndef AVSC_NO_DECLSPEC
802 {
return avs_new_video_frame_a(env,vi,
FRAME_ALIGN);}
807 {
return avs_new_video_frame_a(env,vi,
FRAME_ALIGN);}
841 #ifdef AVSC_NO_DECLSPEC
855 typedef struct AVS_Library AVS_Library;
857 #define AVSC_DECLARE_FUNC(name) name##_func name
944 #undef AVSC_DECLARE_FUNC
948 AVS_Library *library = (AVS_Library *)malloc(
sizeof(AVS_Library));
951 library->handle = LoadLibrary(
"avisynth");
952 if (library->handle ==
NULL)
955 #define __AVSC_STRINGIFY(x) #x
956 #define AVSC_STRINGIFY(x) __AVSC_STRINGIFY(x)
957 #define AVSC_LOAD_FUNC(name) {\
958 library->name = (name##_func) GetProcAddress(library->handle, AVSC_STRINGIFY(name));\
959 if (library->name == NULL)\
963 AVSC_LOAD_FUNC(avs_add_function);
964 AVSC_LOAD_FUNC(avs_at_exit);
965 AVSC_LOAD_FUNC(avs_bit_blt);
966 AVSC_LOAD_FUNC(avs_check_version);
967 AVSC_LOAD_FUNC(avs_clip_get_error);
968 AVSC_LOAD_FUNC(avs_copy_clip);
969 AVSC_LOAD_FUNC(avs_copy_value);
970 AVSC_LOAD_FUNC(avs_copy_video_frame);
971 AVSC_LOAD_FUNC(avs_create_script_environment);
972 AVSC_LOAD_FUNC(avs_delete_script_environment);
973 AVSC_LOAD_FUNC(avs_function_exists);
974 AVSC_LOAD_FUNC(avs_get_audio);
975 AVSC_LOAD_FUNC(avs_get_cpu_flags);
976 AVSC_LOAD_FUNC(avs_get_frame);
977 AVSC_LOAD_FUNC(avs_get_parity);
978 AVSC_LOAD_FUNC(avs_get_var);
979 AVSC_LOAD_FUNC(avs_get_version);
980 AVSC_LOAD_FUNC(avs_get_video_info);
981 AVSC_LOAD_FUNC(avs_invoke);
982 AVSC_LOAD_FUNC(avs_make_writable);
983 AVSC_LOAD_FUNC(avs_new_c_filter);
984 AVSC_LOAD_FUNC(avs_new_video_frame_a);
985 AVSC_LOAD_FUNC(avs_release_clip);
986 AVSC_LOAD_FUNC(avs_release_value);
987 AVSC_LOAD_FUNC(avs_release_video_frame);
988 AVSC_LOAD_FUNC(avs_save_string);
989 AVSC_LOAD_FUNC(avs_set_cache_hints);
990 AVSC_LOAD_FUNC(avs_set_global_var);
991 AVSC_LOAD_FUNC(avs_set_memory_max);
992 AVSC_LOAD_FUNC(avs_set_to_clip);
993 AVSC_LOAD_FUNC(avs_set_var);
994 AVSC_LOAD_FUNC(avs_set_working_dir);
995 AVSC_LOAD_FUNC(avs_sprintf);
996 AVSC_LOAD_FUNC(avs_subframe);
997 AVSC_LOAD_FUNC(avs_subframe_planar);
998 AVSC_LOAD_FUNC(avs_take_clip);
999 AVSC_LOAD_FUNC(avs_vsprintf);
1001 AVSC_LOAD_FUNC(avs_get_error);
1002 AVSC_LOAD_FUNC(avs_is_rgb48);
1003 AVSC_LOAD_FUNC(avs_is_rgb64);
1004 AVSC_LOAD_FUNC(avs_is_yv24);
1005 AVSC_LOAD_FUNC(avs_is_yv16);
1007 AVSC_LOAD_FUNC(avs_is_yv411);
1008 AVSC_LOAD_FUNC(avs_is_y8);
1009 AVSC_LOAD_FUNC(avs_is_yuv444p16);
1010 AVSC_LOAD_FUNC(avs_is_yuv422p16);
1011 AVSC_LOAD_FUNC(avs_is_yuv420p16);
1012 AVSC_LOAD_FUNC(avs_is_y16);
1013 AVSC_LOAD_FUNC(avs_is_yuv444ps);
1014 AVSC_LOAD_FUNC(avs_is_yuv422ps);
1015 AVSC_LOAD_FUNC(avs_is_yuv420ps);
1016 AVSC_LOAD_FUNC(avs_is_y32);
1017 AVSC_LOAD_FUNC(avs_is_444);
1018 AVSC_LOAD_FUNC(avs_is_422);
1019 AVSC_LOAD_FUNC(avs_is_420);
1020 AVSC_LOAD_FUNC(avs_is_y);
1021 AVSC_LOAD_FUNC(avs_is_yuva);
1022 AVSC_LOAD_FUNC(avs_is_planar_rgb);
1023 AVSC_LOAD_FUNC(avs_is_planar_rgba);
1026 AVSC_LOAD_FUNC(avs_get_plane_width_subsampling);
1027 AVSC_LOAD_FUNC(avs_get_plane_height_subsampling);
1039 AVSC_LOAD_FUNC(avs_num_components);
1040 AVSC_LOAD_FUNC(avs_component_size);
1041 AVSC_LOAD_FUNC(avs_bits_per_component);
1045 #undef __AVSC_STRINGIFY
1046 #undef AVSC_STRINGIFY
1047 #undef AVSC_LOAD_FUNC
1056 AVSC_INLINE void avs_free_library(AVS_Library *library) {
1057 if (library ==
NULL)
1059 FreeLibrary(library->handle);
const char const char void * val
AVSC_INLINE int avs_is_rgb32(const AVS_VideoInfo *p)
BYTE int const BYTE int int row_size
AVSC_INLINE AVS_VideoFrame * avs_new_video_frame(AVS_ScriptEnvironment *env, const AVS_VideoInfo *vi)
volatile long sequence_number
BYTE int const BYTE int src_pitch
AVS_VideoFrame *AVSC_CC * get_frame(AVS_FilterInfo *, int n)
AVSC_INLINE const AVS_Value * avs_as_array(AVS_Value v)
const char AVS_Value const char ** arg_names
AVSC_INLINE const char * avs_as_string(AVS_Value v)
AVSC_INLINE int avs_is_tff(const AVS_VideoInfo *p)
AVSC_INLINE int avs_bytes_per_audio_sample(const AVS_VideoInfo *p)
AVS_VideoFrame int int int int int int rel_offsetV
AVSC_INLINE AVS_VideoFrame * avs_copy_frame(AVS_VideoFrame *f)
AVSC_INLINE int avs_bytes_from_pixels(const AVS_VideoInfo *p, int pixels)
AVSC_INLINE AVS_Value avs_new_value_error(const char *v0)
static const AVS_Value avs_void
AVS_VideoFrame int int int int new_height
AVSC_INLINE INT64 avs_audio_samples_from_bytes(const AVS_VideoInfo *p, INT64 bytes)
AVSC_INLINE void avs_set_fps(AVS_VideoInfo *p, unsigned numerator, unsigned denominator)
AVSC_INLINE AVS_Value avs_new_value_int(int v0)
AVSC_INLINE int avs_is_parity_known(const AVS_VideoInfo *p)
AVSC_INLINE int avs_bmp_size(const AVS_VideoInfo *vi)
BYTE int const BYTE * srcp
typedef AVS_Value(AVSC_CC *AVS_ApplyFunc)(AVS_ScriptEnvironment *
AVSC_INLINE int avs_audio_channels(const AVS_VideoInfo *p)
AVSC_INLINE int avs_samples_per_second(const AVS_VideoInfo *p)
AVS_FilterInfo AVS_Value child
#define AVSC_DECLARE_FUNC(name)
AVSC_INLINE int avs_is_property(const AVS_VideoInfo *p, int property)
AVS_VideoFrame int int int int int rel_offsetU
AVS_ScriptEnvironment * env
AVSC_INLINE int avs_is_int(AVS_Value v)
AVSC_INLINE int avs_is_rgb(const AVS_VideoInfo *p)
AVSC_INLINE AVS_Value avs_array_elt(AVS_Value v, int index)
AVSC_INLINE int avs_array_size(AVS_Value v)
AVSC_INLINE int avs_as_int(AVS_Value v)
AVSC_INLINE INT64 avs_bytes_from_audio_samples(const AVS_VideoInfo *p, INT64 samples)
AVSC_INLINE int avs_is_array(AVS_Value v)
AVSC_INLINE int avs_is_bool(AVS_Value v)
AVSC_INLINE int avs_get_height(const AVS_VideoFrame *p)
AVSC_INLINE int avs_get_pitch_p(const AVS_VideoFrame *p, int plane)
AVSC_INLINE int avs_is_float(AVS_Value v)
AVSC_INLINE AVS_Value avs_new_value_float(float v0)
AVSC_INLINE int avs_is_planar(const AVS_VideoInfo *p)
AVSC_EXPORT const char *AVSC_CC avisynth_c_plugin_init(AVS_ScriptEnvironment *env)
AVSC_INLINE void avs_set_property(AVS_VideoInfo *p, int property)
AVSC_INLINE const unsigned char * avs_get_read_ptr(const AVS_VideoFrame *p)
AVS_Value void * user_data
AVSC_INLINE int avs_is_rgb24(const AVS_VideoInfo *p)
AVSC_INLINE int avs_has_video(const AVS_VideoInfo *p)
AVSC_INLINE int avs_is_color_space(const AVS_VideoInfo *p, int c_space)
AVSC_INLINE int avs_get_pitch(const AVS_VideoFrame *p)
AVSC_INLINE int avs_defined(AVS_Value v)
AVSC_INLINE AVS_Value avs_new_value_bool(int v0)
AVSC_INLINE int avs_is_clip(AVS_Value v)
AVSC_INLINE unsigned char * avs_get_write_ptr_p(const AVS_VideoFrame *p, int plane)
AVSC_INLINE AVS_Value avs_new_value_string(const char *v0)
AVSC_INLINE const char * avs_as_error(AVS_Value v)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
AVSC_INLINE int avs_is_bff(const AVS_VideoInfo *p)
static void error(const char *err)
AVSC_INLINE double avs_as_float(AVS_Value v)
AVSC_INLINE int avs_get_row_size(const AVS_VideoFrame *p)
AVSC_INLINE int avs_bits_per_pixel(const AVS_VideoInfo *p)
const AVS_VideoInfo int align
AVSC_INLINE const unsigned char * avs_get_read_ptr_p(const AVS_VideoFrame *p, int plane)
AVSC_INLINE int avs_is_yv12(const AVS_VideoInfo *p)
AVSC_INLINE int avs_is_error(AVS_Value v)
int(AVSC_CC *get_parity)(AVS_FilterInfo *
AVSC_INLINE int avs_is_field_based(const AVS_VideoInfo *p)
AVS_VideoFrame int rel_offset
BYTE int const BYTE int int int height
AVSC_INLINE AVS_Value avs_new_value_array(AVS_Value *v0, int size)
void(AVSC_CC * AVS_ShutdownFunc)(void *user_data, AVS_ScriptEnvironment *env)
AVSC_INLINE int avs_bytes_per_channel_sample(const AVS_VideoInfo *p)
AVSC_INLINE void avs_set_field_based(AVS_VideoInfo *p, int isfieldbased)
AVS_VideoFrame int int int new_row_size
void(AVSC_CC *free_filter)(AVS_FilterInfo *)
AVS_VideoFrameBuffer * vfb
AVS_ScriptEnvironment AVS_Clip *AVSC_INLINE int avs_as_bool(AVS_Value v)
AVSC_INLINE int avs_is_yuv(const AVS_VideoInfo *p)
AVSC_INLINE void avs_clear_property(AVS_VideoInfo *p, int property)
AVSC_INLINE AVS_VideoFrame * avs_new_frame(AVS_ScriptEnvironment *env, const AVS_VideoInfo *vi)
const char const char * params
struct AVS_ScriptEnvironment AVS_ScriptEnvironment
AVSC_INLINE void avs_release_frame(AVS_VideoFrame *f)
AVSC_INLINE int avs_is_same_colorspace(AVS_VideoInfo *x, AVS_VideoInfo *y)
AVS_VideoFrame int int new_pitch
AVSC_INLINE AVS_Value avs_new_value_clip(AVS_Clip *v0)
AVSC_INLINE int avs_is_string(AVS_Value v)
AVSC_INLINE int avs_get_height_p(const AVS_VideoFrame *p, int plane)
AVSC_INLINE int avs_frames_from_audio_samples(const AVS_VideoInfo *p, INT64 samples)
AVSC_INLINE int avs_sample_type(const AVS_VideoInfo *p)
AVSC_INLINE int avs_row_size(const AVS_VideoInfo *p)
AVS_VideoFrame int int int int int int int new_pitchUV
AVSC_INLINE INT64 avs_audio_samples_from_frames(const AVS_VideoInfo *p, INT64 frames)
AVSC_INLINE int avs_is_yuy2(const AVS_VideoInfo *p)
AVSC_API(int, avs_is_rgb48)(const AVS_VideoInfo *p)
const char const char AVS_ApplyFunc apply
AVSC_INLINE int avs_get_row_size_p(const AVS_VideoFrame *p, int plane)
AVS_FilterInfo AVS_Value int store_child
AVSC_INLINE unsigned char * avs_get_write_ptr(const AVS_VideoFrame *p)
AVSC_INLINE int avs_is_writable(const AVS_VideoFrame *p)
AVSC_INLINE int avs_has_audio(const AVS_VideoInfo *p)
int audio_samples_per_second