Я хотел бы использовать функцию ff_load_image
,
program.c
#include "../ffmpeg/libavfilter/lavfutils.h"
int main ()
{
uint8_t* data;
int linesize, width, height, log_ctx;
int i = ff_load_image(&data, &linesize, &width, &height, AV_PIX_FMT_RGB24, "blue.jpg", &log_ctx);
}
Это компилируется, но выдает предупреждение.
program.c: In function 'main':
program.c:11: warning: passing argument 5 of 'ff_load_image' makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected 'enum AVPixelFormat *' but argument is of type 'int'
Когда я запускаю программу, она сегментирует ошибки. Я не могу придумать другой способ указать формат пикселя. Почему бы ffmpeg подумать AV_PIX_FMT_RGB8
такое целое число? Это очевидно AVPixelFormat
,
ff_load_image()
ожидает enum AVPixelFormat *
, ffmpeg
думал, что это целое число, потому что это enum
элемент AVPixelFormat
. А также, в C
, константы перечисления имеют тип int
,
Вы должны использовать:
enum AVPixelFormat pix_fmt = AV_PIX_FMT_RGB24;
int i = ff_load_image(&data, &linesize, &width, &height
, &pix_fmt, "blue.jpg", &log_ctx);
Других решений пока нет …