54 #ifndef __AVISYNTH_C__ 55 #define __AVISYNTH_C__ 61 #define AVS_FRAME_ALIGN FRAME_ALIGN 67 #ifndef __AVISYNTH_6_H__ 315 #ifdef BUILDING_AVSCORE 316 AVSValue create_c_video_filter(AVSValue
args,
void *
user_data, IScriptEnvironment * e0);
319 IScriptEnvironment * env;
322 : env(e), error(0) {}
354 {
return (p->
width!=0); }
401 return ((p->
image_type & property) == property);
477 unsigned x=numerator, y=denominator;
479 unsigned t = x%y; x = y; y = t;
485 #ifndef AVSC_NO_DECLSPEC 577 size_t offsetU, offsetV;
612 #ifndef AVSC_NO_DECLSPEC 619 #ifndef AVSC_NO_DECLSPEC 626 #ifndef AVSC_NO_DECLSPEC 633 #ifndef AVSC_NO_DECLSPEC 639 #ifndef AVSC_NO_DECLSPEC 645 #ifndef AVSC_NO_DECLSPEC 648 {avs_release_video_frame(f);}
651 #ifndef AVSC_NO_DECLSPEC 654 {
return avs_copy_video_frame(f);}
728 { AVS_Value v; v.
type =
'b'; v.
d.
boolean = v0 == 0 ? 0 : 1;
return v; }
737 #ifndef AVSC_NO_DECLSPEC 740 { AVS_Value v; avs_set_to_clip(&v, v0);
return v; }
892 #ifndef AVSC_NO_DECLSPEC 936 #ifdef AVSC_NO_DECLSPEC 953 typedef struct AVS_Library AVS_Library;
955 #define AVSC_DECLARE_FUNC(name) name##_func name 1053 #undef AVSC_DECLARE_FUNC 1096 AVS_Library *library = (AVS_Library *)malloc(
sizeof(AVS_Library));
1097 if (library ==
NULL)
1099 library->handle = LoadLibraryA(
"avisynth");
1100 if (library->handle ==
NULL)
1103 #define __AVSC_STRINGIFY(x) #x 1104 #define AVSC_STRINGIFY(x) __AVSC_STRINGIFY(x) 1105 #define AVSC_LOAD_FUNC(name) {\ 1106 library->name = (name##_func) GetProcAddress(library->handle, AVSC_STRINGIFY(name));\ 1107 if (library->name == NULL)\ 1142 #define AVSC_LOAD_FUNC_FALLBACK(name,name2) {\ 1143 library->name = (name##_func) GetProcAddress(library->handle, AVSC_STRINGIFY(name));\ 1144 if (library->name == NULL)\ 1145 library->name = (name##_func) GetProcAddress(library->handle, AVSC_STRINGIFY(name2));\ 1146 if (library->name == NULL)\ 1151 #define AVSC_LOAD_FUNC_FALLBACK_SIMULATED(name,name2) {\ 1152 library->name = (name##_func) GetProcAddress(library->handle, AVSC_STRINGIFY(name));\ 1153 if (library->name == NULL)\ 1154 library->name = name2;\ 1155 if (library->name == NULL)\ 1160 AVSC_LOAD_FUNC(avs_add_function);
1161 AVSC_LOAD_FUNC(avs_at_exit);
1162 AVSC_LOAD_FUNC(avs_bit_blt);
1163 AVSC_LOAD_FUNC(avs_check_version);
1164 AVSC_LOAD_FUNC(avs_clip_get_error);
1165 AVSC_LOAD_FUNC(avs_copy_clip);
1166 AVSC_LOAD_FUNC(avs_copy_value);
1167 AVSC_LOAD_FUNC(avs_copy_video_frame);
1168 AVSC_LOAD_FUNC(avs_create_script_environment);
1169 AVSC_LOAD_FUNC(avs_delete_script_environment);
1170 AVSC_LOAD_FUNC(avs_function_exists);
1171 AVSC_LOAD_FUNC(avs_get_audio);
1172 AVSC_LOAD_FUNC(avs_get_cpu_flags);
1173 AVSC_LOAD_FUNC(avs_get_frame);
1174 AVSC_LOAD_FUNC(avs_get_parity);
1175 AVSC_LOAD_FUNC(avs_get_var);
1176 AVSC_LOAD_FUNC(avs_get_version);
1177 AVSC_LOAD_FUNC(avs_get_video_info);
1178 AVSC_LOAD_FUNC(avs_invoke);
1179 AVSC_LOAD_FUNC(avs_make_writable);
1180 AVSC_LOAD_FUNC(avs_new_c_filter);
1181 AVSC_LOAD_FUNC(avs_new_video_frame_a);
1182 AVSC_LOAD_FUNC(avs_release_clip);
1183 AVSC_LOAD_FUNC(avs_release_value);
1184 AVSC_LOAD_FUNC(avs_release_video_frame);
1185 AVSC_LOAD_FUNC(avs_save_string);
1186 AVSC_LOAD_FUNC(avs_set_cache_hints);
1187 AVSC_LOAD_FUNC(avs_set_global_var);
1188 AVSC_LOAD_FUNC(avs_set_memory_max);
1189 AVSC_LOAD_FUNC(avs_set_to_clip);
1190 AVSC_LOAD_FUNC(avs_set_var);
1191 AVSC_LOAD_FUNC(avs_set_working_dir);
1192 AVSC_LOAD_FUNC(avs_sprintf);
1193 AVSC_LOAD_FUNC(avs_subframe);
1194 AVSC_LOAD_FUNC(avs_subframe_planar);
1195 AVSC_LOAD_FUNC(avs_take_clip);
1196 AVSC_LOAD_FUNC(avs_vsprintf);
1198 AVSC_LOAD_FUNC(avs_get_error);
1199 AVSC_LOAD_FUNC(avs_is_yv24);
1200 AVSC_LOAD_FUNC(avs_is_yv16);
1202 AVSC_LOAD_FUNC(avs_is_yv411);
1203 AVSC_LOAD_FUNC(avs_is_y8);
1206 AVSC_LOAD_FUNC(avs_get_plane_width_subsampling);
1207 AVSC_LOAD_FUNC(avs_get_plane_height_subsampling);
1221 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_rgb48, avs_is_xx_fallback_return_false);
1222 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_rgb64, avs_is_xx_fallback_return_false);
1223 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuv444p16, avs_is_xx_fallback_return_false);
1224 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuv422p16, avs_is_xx_fallback_return_false);
1225 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuv420p16, avs_is_xx_fallback_return_false);
1226 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_y16, avs_is_xx_fallback_return_false);
1227 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuv444ps, avs_is_xx_fallback_return_false);
1228 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuv422ps, avs_is_xx_fallback_return_false);
1229 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuv420ps, avs_is_xx_fallback_return_false);
1230 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_y32, avs_is_xx_fallback_return_false);
1231 AVSC_LOAD_FUNC_FALLBACK(avs_is_444, avs_is_yv24);
1232 AVSC_LOAD_FUNC_FALLBACK(avs_is_422, avs_is_yv16);
1234 AVSC_LOAD_FUNC_FALLBACK(avs_is_y, avs_is_y8);
1235 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_yuva, avs_is_xx_fallback_return_false);
1236 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_planar_rgb, avs_is_xx_fallback_return_false);
1237 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_is_planar_rgba, avs_is_xx_fallback_return_false);
1238 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_num_components, avs_num_components_fallback);
1239 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_component_size, avs_component_size_fallback);
1240 AVSC_LOAD_FUNC_FALLBACK_SIMULATED(avs_bits_per_component, avs_bits_per_component_fallback);
1243 #undef __AVSC_STRINGIFY 1244 #undef AVSC_STRINGIFY 1245 #undef AVSC_LOAD_FUNC 1246 #undef AVSC_LOAD_FUNC_FALLBACK 1247 #undef AVSC_LOAD_FUNC_FALLBACK_SIMULATED 1256 AVSC_INLINE void avs_free_library(AVS_Library *library) {
1257 if (library ==
NULL)
1259 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
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)
static void error(const char *err)
AVSC_INLINE AVS_Value avs_new_value_int(int v0)
if it could not because there are no more frames
AVSC_INLINE BYTE * avs_get_write_ptr(const AVS_VideoFrame *p)
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)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
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
AVSC_INLINE int avs_get_pitch(const AVS_VideoFrame *p)
AVS_ScriptEnvironment * env
AVSC_INLINE int avs_as_bool(AVS_Value v)
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_API(int, avs_is_yv24)(const AVS_VideoInfo *p)
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 const BYTE * avs_get_read_ptr(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)
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)
static int get_frame(AVFilterContext *ctx, int is_second)
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)
AVS_ScriptEnvironment AVS_Clip *AVSC_INLINE int avs_defined(AVS_Value v)
AVSC_INLINE int avs_is_bff(const AVS_VideoInfo *p)
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)
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)
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
AVS_VideoFrameBuffer * vfb
AVSC_INLINE int avs_is_yuv(const AVS_VideoInfo *p)
void(AVSC_CC * AVS_ShutdownFunc)(void *user_data, AVS_ScriptEnvironment *env)
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 int avs_is_same_colorspace(const AVS_VideoInfo *x, const AVS_VideoInfo *y)
AVSC_INLINE void avs_release_frame(AVS_VideoFrame *f)
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)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are short
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)
Filter the word “frame” indicates either a video frame or a group of audio samples
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 int avs_is_writable(const AVS_VideoFrame *p)
AVSC_INLINE int avs_has_audio(const AVS_VideoInfo *p)
int audio_samples_per_second