Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FFMPEG: ‘PIX_FMT_BGR24’ was not declared in this scope

I am building a simple decoding application using FFMPEG API. I know there are solutions available in OpenCV but for specific reason I am refraining myself from using that. Since I am very new to FFMPEG (and to this community as well), I would like to know if there is any mistake that I might have done while building FFMPEG.

Compiler: I am using gcc 5.3.0 for compilation and building.

Following are the steps that I followed:

  1. I have build FFMPEG library using following configuration:

    ./configure --prefix=/home/dep/ffmpeg/install/ --pkg-config-flags=--static --enable-gpl --disable-yasm

  2. My compiling command is for the application:

    g++ -std=c++11 -I/home/dep/ffmpeg/install/include/ Queue.cpp Image.cpp CaptureFFMPEGFrame.cpp Object.cpp main.cpp -o main -L/home/dep/ffmpeg/install/lib -lavutil -lavcodec -lavformat -lavdevice -lavfilter -lswscale -lswresample -lpostproc -lpthread -lz -lrt -llzma -lbz2

The error I am facing is :

CaptureFFMPEGFrame.cpp:203:169: error: ‘PIX_FMT_BGR24’ was not declared in this scope
     mpFrameSwsContext = sws_getContext(mpAVCodecContext->width, mpAVCodecContext->height, mpAVCodecContext->pix_fmt, mpAVCodecContext->width, mpAVCodecContext->height, PIX_FMT_BGR24, SWS_BICUBIC, NULL, NULL, NULL)

My effort and understanding:

  1. From my understanding, libavutil/pixfmt.h contains pixel formats which I included along with other includes and the error persists. You can also see libraries I have included along with my application.

  2. Since my program is cpp code, therefore my headers are already included using extern "C", i.e. #include "libavcodec/avcodec.h"

Anything I might have missed?

Many thanks.

like image 305
msz Avatar asked Aug 09 '16 09:08

msz


1 Answers

As of commit 78071a14, pixel formats have been prefixed with AV_, and the PIX_FMT_* defines were moves to libavutil/old_pix_fmts.h (which was included by the original pixfmt.h). This file was then removed in the next major version.

The fix (as described in the comments) was just to add this prefix to any PIX_FMT_* statements which haven't been updated yet.

like image 191
jdek Avatar answered Oct 06 '22 18:10

jdek