ffmpeg: считает AVPixelFormat Int?

0

Я хотел бы использовать функцию 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.

Теги:
ffmpeg

1 ответ

1
Лучший ответ

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);
  • 0
    Вы не можете использовать оператор & на AV_PIX_FMT_RGB24 .
  • 0
    @R .. Обновлено. Благодарю.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню