ffmpeg:加载图像的函数



我尝试使用img2dec.c中定义的ff_load_image函数加载图像文件:

  char* filename = argv[1];
  uint8_t* data;
  int linesize, width, height, log_ctx;
  enum AVPixelFormat pix_fmt = AV_PIX_FMT_RGB24;
  //load the image
  int i = ff_load_image(&data, &linesize, &width, &height, &pix_fmt, filename, &log_ctx);
  printf("%in", i);

然而,我得到一个分割错误无缘无故。我把printf语句放到了ff_load_image上,它一直到函数的末端。为什么会出现分割错误?有没有更好的方式来加载图片?我想要得到图片中的每个像素

我怀疑你传递了不正确的参数。根据ff_load_image文档,您的参数应该是:

  1. uint8_t * [4]
  2. int [4]
  3. int *
  4. int *
  5. enum AVPixelFormat *
  6. const char *
  7. void *

你的前两个论点似乎不正确。

  • 你的第一个参数是uint8_t **,如果你为至少4个uint8_t指针分配内存,但data没有指向有效的内存,这仍然是可以的。
  • 你的第二个参数是int *,它有相同的问题,没有指向有效的内存。

所以,你的程序可能调用了未定义的行为。

我将把您的初始化更改为:

uint8_t *data[4];
int linesize[4];
然后调用ff_load_image作为:
int i = ff_load_image(data, linesize, &width, &height, &pix_fmt,
                      filename, &log_ctx);

另外,您可能想要查看如何使用ff_load_image的示例。

相关内容

  • 没有找到相关文章

最新更新