Я смотрю на исходный код в одном из файлов FFMPEG и нашел конструкцию, которая выглядит мне действительно странной. Sb, пожалуйста, объясните, что здесь происходит?
init и query_formats на самом деле являются функциями, которые были объявлены ранее в файле.
AVFilter avfilter_vf_fade = {
.name = "fade",
.description = NULL_IF_CONFIG_SMALL("Fade in/out input video"),
.init = init,
.priv_size = sizeof(FadeContext),
.query_formats = query_formats,
.inputs = (AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.config_props = config_props,
.get_video_buffer = avfilter_null_get_video_buffer,
.start_frame = avfilter_null_start_frame,
.draw_slice = draw_slice,
.end_frame = end_frame,
.min_perms = AV_PERM_READ | AV_PERM_WRITE,
.rej_perms = AV_PERM_PRESERVE, },
{ .name = NULL}},
.outputs = (AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO, },
{ .name = NULL}},
};
Что такое "." делать там. Как бы вы получили доступ ко всем этим пунктам. Что будет сохранено в отсеках массива (указатели адресов?!)?
Я немного запутался ..
Кроме того, как вы узнаете, как работает код стороннего программиста, если вокруг практически нет комментариев? Документации тоже не существует ..
PS: Так выглядит функция init:
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
{
...
}