error: called object type 'AVFrame *' (aka 'struct AVFrame *') is not a function or function pointer pFrame=av_frame_alloc()(); ~~~~~~~~~~~~~~~~^
时间: 2023-10-23 15:13:01 浏览: 173
你的代码中出现了一个语法错误,错误提示是“called object type 'AVFrame *' (aka 'struct AVFrame *') is not a function or function pointer”。
这个错误一般是因为在调用 `av_frame_alloc()` 函数时,多写了一对括号,导致编译器把 `AVFrame*` 类型的指针变量 `pFrame` 当做了一个函数或函数指针来处理,而实际上 `pFrame` 只是一个指针变量,不是函数或函数指针。
你可以修改代码,将 `pFrame=av_frame_alloc()();` 改为 `pFrame=av_frame_alloc();`,即去掉多余的一对括号,这样就可以解决这个语法错误了。
需要注意的是,`av_frame_alloc()` 函数在分配内存之后,返回的是一个指向 `AVFrame` 结构体的指针,而不是一个函数或函数指针。因此,在将其返回值赋给指针变量时,不需要再加一对括号。
相关问题
error: incompatible integer to pointer conversion assigning to 'AVFrame *' (aka 'struct AVFrame *') from 'int' [-Werror,-Wint-conversion] pFrame=avcodec_alloc_frame();
这是因为你把int类型的值直接赋值给了AVFrame指针类型的变量pFrame,造成类型不兼容的错误。avcodec_alloc_frame()函数返回的是AVFrame类型的指针,而你需要把它赋值给pFrame变量,因此需要进行类型转换,把AVFrame类型的指针赋值给pFrame。
正确的写法应该是:
```
pFrame = avcodec_alloc_frame();
```
或者
```
AVFrame *tempFrame = avcodec_alloc_frame();
pFrame = tempFrame;
```
这样就可以避免类型不兼容的错误。
AVFrame * frame = (AVFrame *)args;SS_Vdec_BufInfo *stVdecBuf = (SS_Vdec_BufInfo *)frame->opaque;
This code is casting a void pointer called "args" to an AVFrame pointer called "frame". It then casts the "opaque" field of the AVFrame to an SS_Vdec_BufInfo pointer called "stVdecBuf". The "opaque" field is a generic pointer that can be used to store custom data for the AVFrame. In this case, it is being used to store a structure of type SS_Vdec_BufInfo.
阅读全文