[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