[FFmpeg-user] make error with --enable-decklink

Dave Rice dave at dericed.com
Fri Jan 2 21:41:34 CET 2015


Hi Maven,

> On Dec 24, 2014, at 11:33 AM, 马 伟 <v at maweis.com> wrote:
> 
> Hello Carl Eugen
> 
> 
> I am trying to compile ffmpeg enable decklink, But I meet some problem.
> 
> 
> 
> 
> Peters-MBP-5:ffmpeg-2.3.5 peter$ ./configure --prefix=/usr/local/ffmpeg-2.3.5 --enable-libx264 --enable-gpl --enable-libfaac --enable-libmp3lame --enable-nonfree --enable-decklink  --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib"
> 
> Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
> Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
> Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
> Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
> Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
> 
> install prefix            /usr/local/ffmpeg-2.3.5
> 
> 
> 
> 
> Peters-MBP-5:ffmpeg-2.3.5 peter$ sudo make
> Password:
> CXX	libavdevice/decklink_enc.o
> error: invalid argument '-std=c99' not allowed with 'C++/ObjC++'
> make: *** [libavdevice/decklink_enc.o] Error 1
> Peters-MBP-5:ffmpeg-2.3.5 peter$ make V=1
> g++ -D__STDC_CONSTANT_MACROS -I. -I./ -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DHAVE_AV_CONFIG_H -I/usr/local/include -std=c99 -mdynamic-no-pic -fomit-frame-pointer -fPIC -pthread -D_GNU_SOURCE=1 -D_THREAD_SAFE -I/usr/local/include/SDL -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -Wempty-body -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -O3 -fno-math-errno -fno-signed-zeros -Qunused-arguments -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type   -c -o libavdevice/decklink_enc.o libavdevice/decklink_enc.cpp
> error: invalid argument '-std=c99' not allowed with 'C++/ObjC++'
> make: *** [libavdevice/decklink_enc.o] Error 1
> 
> ————————————————————
> Here I follow yours in the last thread, replace the std=99 and execute it.
> 
> ————————————————————
> 
> Peters-MBP-5:ffmpeg-2.3.5 peter$ g++ -D__STDC_CONSTANT_MACROS -I. -I./ -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DHAVE_AV_CONFIG_H -I/usr/local/include  -mdynamic-no-pic -fomit-frame-pointer -fPIC -pthread -D_GNU_SOURCE=1 -D_THREAD_SAFE -I/usr/local/include/SDL -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -Wempty-body -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -O3 -fno-math-errno -fno-signed-zeros -Qunused-arguments -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type   -c -o libavdevice/decklink_enc.o libavdevice/decklink_enc.cpp
> In file included from libavdevice/decklink_enc.cpp:27:
> /usr/local/include/DeckLinkAPIDispatch.cpp:56:6: error: no previous prototype for function 'InitDeckLinkAPI'
>      [-Werror,-Wmissing-prototypes]
> void    InitDeckLinkAPI (void)
>        ^
> /usr/local/include/DeckLinkAPIDispatch.cpp:77:7: error: no previous prototype for function 'IsDeckLinkAPIPresent'
>      [-Werror,-Wmissing-prototypes]
> bool            IsDeckLinkAPIPresent (void)
>                ^
> /usr/local/include/DeckLinkAPIDispatch.cpp:157:6: error: no previous prototype for function 'InitBMDStreamingAPI'
>      [-Werror,-Wmissing-prototypes]
> void InitBMDStreamingAPI(void)
>     ^
> libavdevice/decklink_enc.cpp:176:39: error: cannot initialize a parameter of type 'CFStringRef *'
>      (aka 'const __CFString **') with an rvalue of type 'const char **'
>    HRESULT hr = This->GetDisplayName(&tmpDisplayName);
>                                      ^~~~~~~~~~~~~~~
> /usr/local/include/DeckLinkAPIDiscovery.h:57:60: note: passing argument to parameter 'displayName' here
>    virtual HRESULT GetDisplayName (/* out */ CFStringRef *displayName) = 0;
>                                                           ^
> libavdevice/decklink_enc.cpp:266:5: warning: 'sem_init' is deprecated [-Wdeprecated-declarations]
>    sem_init(&ctx->semaphore, 0, ctx->frames_buffer);
>    ^
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/semaphore.h:55:5: note:
>      'sem_init' has been explicitly marked deprecated here
> int sem_init(sem_t *, int, unsigned int) __deprecated;
>    ^
> libavdevice/decklink_enc.cpp:339:5: warning: 'sem_destroy' is deprecated [-Wdeprecated-declarations]
>    sem_destroy(&ctx->semaphore);
>    ^
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/semaphore.h:53:5: note:
>      'sem_destroy' has been explicitly marked deprecated here
> int sem_destroy(sem_t *) __deprecated;
>    ^
> libavdevice/decklink_enc.cpp:392:40: warning: struct 'IDeckLinkVideoFrame' was previously declared as a class
>      [-Wmismatched-tags]
>    hr = ctx->dlo->ScheduleVideoFrame((struct IDeckLinkVideoFrame *) frame,
>                                       ^
> /usr/local/include/DeckLinkAPI.h:562:7: note: previous use is here
> class IDeckLinkVideoFrame : public IUnknown
>      ^
> libavdevice/decklink_enc.cpp:392:40: note: did you mean class here?
>    hr = ctx->dlo->ScheduleVideoFrame((struct IDeckLinkVideoFrame *) frame,
>                                       ^~~~~~
>                                       class
> 3 warnings and 4 errors generated.
> Peters-MBP-5:ffmpeg-2.3.5 peter$
> 
> 
> 
> ————————————————————
> 
> I just copy the decklink sdks include directory into the /usr/local/include directory.
> 
> 
> Would u like give me some suggest, Thanks a Lot.

Not a suggestion but I’d add my output to these notes. I’m using a git-snapshot from today. On a Mac running OS 10.10 I have the decklink sdk installed at /usr/local/lib as you do and configure with:

./configure --enable-gpl --enable-decklink  --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib”

During make I get this response:

make
CC	libavdevice/alldevices.o
CC	libavdevice/avdevice.o
CC	libavdevice/avfoundation.o
CXX	libavdevice/decklink_common.o
error: invalid argument '-std=c99' not allowed with 'C++/ObjC++'
make: *** [libavdevice/decklink_common.o] Error 1

When running `make V=1` as Carl suggests, I get: 

g++ -D__STDC_CONSTANT_MACROS -I. -I./ -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DZLIB_CONST -DHAVE_AV_CONFIG_H -I/usr/local/include -std=c99 -mdynamic-no-pic -fomit-frame-pointer -fPIC -pthread -D_GNU_SOURCE=1 -D_THREAD_SAFE -I/usr/local/include/SDL -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -Wempty-body -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -O3 -fno-math-errno -fno-signed-zeros -Qunused-arguments -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type   -c -o libavdevice/decklink_common.o libavdevice/decklink_common.cpp
error: invalid argument '-std=c99' not allowed with 'C++/ObjC++'
make: *** [libavdevice/decklink_common.o] Error 1

So I then remove the -sdt=c99 and run:

g++ -D__STDC_CONSTANT_MACROS -I. -I./ -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DZLIB_CONST -DHAVE_AV_CONFIG_H -I/usr/local/include -mdynamic-no-pic -fomit-frame-pointer -fPIC -pthread -D_GNU_SOURCE=1 -D_THREAD_SAFE -I/usr/local/include/SDL -g -Wdeclaration-after-statement -Wall -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-prototypes -Wempty-body -Wno-parentheses -Wno-switch -Wno-format-zero-length -Wno-pointer-sign -O3 -fno-math-errno -fno-signed-zeros -Qunused-arguments -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type   -c -o libavdevice/decklink_common.o libavdevice/decklink_common.cpp

which gives:

In file included from libavdevice/decklink_common.cpp:26:
/usr/local/include/DeckLinkAPIDispatch.cpp:56:6: error: no previous prototype for function 'InitDeckLinkAPI' [-Werror,-Wmissing-prototypes]
void    InitDeckLinkAPI (void)
        ^
/usr/local/include/DeckLinkAPIDispatch.cpp:77:7: error: no previous prototype for function 'IsDeckLinkAPIPresent' [-Werror,-Wmissing-prototypes]
bool            IsDeckLinkAPIPresent (void)
                ^
/usr/local/include/DeckLinkAPIDispatch.cpp:157:6: error: no previous prototype for function 'InitBMDStreamingAPI' [-Werror,-Wmissing-prototypes]
void InitBMDStreamingAPI(void)
     ^
libavdevice/decklink_common.cpp:83:39: error: cannot initialize a parameter of type 'CFStringRef *' (aka 'const __CFString **') with an rvalue of type
      'const char **'
    HRESULT hr = This->GetDisplayName(&tmpDisplayName);
                                      ^~~~~~~~~~~~~~~
/usr/local/include/DeckLinkAPIDiscovery.h:57:60: note: passing argument to parameter 'displayName' here
    virtual HRESULT GetDisplayName (/* out */ CFStringRef *displayName) = 0;
                                                           ^
4 errors generated.

From here running either `make` or `make V=1` provides the same results as above. I am using decklink sdk version 10.1.4.
Dave Rice





More information about the ffmpeg-user mailing list