Filter SDK/C API/AVS VideoInfo

From Avisynth wiki
Revision as of 23:04, 1 April 2023 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The AVS_VideoInfo structure holds global information about a clip (i.e. information that does not depend on the frame number). It's a member of the AVS_FilterInfo structure. Below is a description of it (for AVISYNTH_INTERFACE_VERSION=6).

Properties and constants

  • Colorspace constants, Colorformat constants and Image_type constants:
These constants are the same as the ones in the C++ API with a AVS_ prefix. For example, the C++ API constant CS_BGR becomes AVS_CS_BGR.
For some reason these constants are not part of the AVS_VideoInfo structure. Why not???
  • Colorspace properties, Image_type properties and General properties:
These are the same as in the C++ API.
  • Chroma placement constants (bits 20 -> 23):
They are missing in the C API. Todo: add them in the API.
  • Remaining constants (they are not present in the C++ API):
enum {
 AVS_FILTER_TYPE=1,
 AVS_FILTER_INPUT_COLORSPACE=2,
 AVS_FILTER_OUTPUT_TYPE=9,
 AVS_FILTER_NAME=4,
 AVS_FILTER_AUTHOR=5,
 AVS_FILTER_VERSION=6,
 AVS_FILTER_ARGS=7,
 AVS_FILTER_ARGS_INFO=8,
 AVS_FILTER_ARGS_DESCRIPTION=10,
 AVS_FILTER_DESCRIPTION=11
};
enum {  //SUBTYPES
 AVS_FILTER_TYPE_AUDIO=1,
 AVS_FILTER_TYPE_VIDEO=2,
 AVS_FILTER_OUTPUT_TYPE_SAME=3,
 AVS_FILTER_OUTPUT_TYPE_DIFFERENT=4
};

Todo: add description.

Functions [need to add examples]

These functions are not members of the AVS_VideoInfo structure, but they take an AVS_VideoInfo structure as input. Unless stated otherwise the functions have the same funcionality as the corresponding ones in the C++ API.

Note the name of the functions are basically the same as the ones in the C++ API, with a 'avs_' prefix, a AVS_VideoInfo as input, lower case letters and with a underscore between separate words in the name.

For example, instead of vi.IsYUV(), you would use avs_is_yuv(&fi->vi) where fi is a pointer to AVS_FilterInfo.

C++ API C API
bool IsRGB() const int avs_is_rgb(const AVS_VideoInfo * p);
bool IsRGB24() const int avs_is_rgb24(const AVS_VideoInfo * p);
bool IsRGB32() const int avs_is_rgb32(const AVS_VideoInfo * p);
bool IsYUV() const; int avs_is_yuv(const AVS_VideoInfo * p);
bool IsYUY2() const; int avs_is_yuy2(const AVS_VideoInfo * p);
bool IsYV24() const; int avs_is_yv24(const AVS_VideoInfo * p);
bool IsYV16() const; int avs_is_yv16(const AVS_VideoInfo * p);
bool IsYV12() const; int avs_is_yv12(const AVS_VideoInfo * p);
bool IsYV411() const; int avs_is_yv411(const AVS_VideoInfo * p);
bool IsY8() const; int avs_is_y8(const AVS_VideoInfo * p);
bool IsColorSpace(int c_space) const; int avs_is_color_space(const AVS_VideoInfo * p, int c_space);
bool IsSameColorspace(const VideoInfo& vi) const; int avs_is_same_colorspace(AVS_VideoInfo * x, AVS_VideoInfo * y)
bool IsPlanar() const; int avs_is_planar(const AVS_VideoInfo * p)
bool Is(int property) const; int avs_is_property(const AVS_VideoInfo * p, int property)
bool IsFieldBased() const; int avs_is_field_based(const AVS_VideoInfo * p)
bool IsParityKnown() const; int avs_is_parity_known(const AVS_VideoInfo * p)
bool IsBFF() const; int avs_is_bff(const AVS_VideoInfo * p)
bool IsTFF() const; int avs_is_tff(const AVS_VideoInfo * p);
void SetFieldBased(bool isfieldbased); void avs_set_field_based(AVS_VideoInfo * p, int isfieldbased);
void Set(int property); void avs_set_property(AVS_VideoInfo * p, int property);
void Clear(int property); void avs_clear_property(AVS_VideoInfo * p, int property);
int BitsPerPixel() const; int avs_bits_per_pixel(const AVS_VideoInfo * p);
void SetFPS(unsigned numerator, unsigned denominator); void avs_set_fps(AVS_VideoInfo * p, unsigned numerator, unsigned denominator)
void MulDivFPS(unsigned multiplier, unsigned divisor); doesn't exist
int BytesFromPixels(int pixels) const; int avs_bytes_from_pixels(const AVS_VideoInfo * p, int pixels);
int RowSize(int plane=0) const; int avs_row_size_p(const AVS_VideoInfo * p, int plane);
int BMPSize() const; int avs_bmp_size(const AVS_VideoInfo * vi);
int GetPlaneWidthSubsampling(int plane) const; int avs_get_plane_width_subsampling(const AVS_VideoInfo * p, int plane);
int GetPlaneHeightSubsampling(int plane) const; int avs_get_plane_height_subsampling(const AVS_VideoInfo * p, int plane);
bool HasAudio() const; int avs_has_audio(const AVS_VideoInfo * p);
int AudioChannels() const; int avs_audio_channels(const AVS_VideoInfo * p);
int SampleType() const; int avs_sample_type(const AVS_VideoInfo * p);
bool IsSampleType(int testtype) const; doesn't exist
int SamplesPerSecond() const; int avs_samples_per_second(const AVS_VideoInfo * p);
int BytesPerAudioSample() const; int avs_bytes_per_audio_sample(const AVS_VideoInfo * p);
int BytesPerChannelSample() const; int avs_bytes_per_channel_sample(const AVS_VideoInfo * p);
__int64 AudioSamplesFromFrames(int frames) const; INT64 avs_audio_samples_from_frames(const AVS_VideoInfo * p, INT64 frames);
int FramesFromAudioSamples(__int64 samples) const; int avs_frames_from_audio_samples(const AVS_VideoInfo * p, INT64 samples);
__int64 AudioSamplesFromBytes(__int64 bytes) const; INT64 avs_audio_samples_from_bytes(const AVS_VideoInfo * p, INT64 bytes);
__int64 BytesFromAudioSamples(__int64 samples) const; INT64 avs_bytes_from_audio_samples(const AVS_VideoInfo * p, INT64 samples);
Personal tools