lu-zero / bmdtools

Basic capture and play programs for Blackmagic Design Decklink
Boost Software License 1.0
198 stars 74 forks source link

Unable make bmdcapture commit 94b44c4ff0 #3

Closed glyshko closed 12 years ago

glyshko commented 12 years ago

Two weeks ago i succeses compiled bmdcapture with SDK 9.1, last commit decklink-ffmpeg - 8a65e71 . At now when i try compile bmdcapture commit 94b44c4ff0 i see this error:

g++ -o bmdcapture bmdcapture.cpp /usr/include/DeckLinkAPIDispatch.cpp -Wno-multichar -I /usr/include -fno-rtti -D__STDC_CONSTANT_MACROS -g -lm -ldl -lpthread pkg-config --libs libavformat bmdcapture.cpp: In function ‘AVStream* add_audiostream(AVFormatContext, CodecID)’: bmdcapture.cpp:208:38: error: ‘avformat_new_stream’ was not declared in this scope bmdcapture.cpp:237:37: error: ‘avcodecopen2’ was not declared in this scope bmdcapture.cpp: In function ‘AVStream add_videostream(AVFormatContext, CodecID)’: bmdcapture.cpp:252:38: error: ‘avformat_new_stream’ was not declared in this scope bmdcapture.cpp:292:37: error: ‘avcodec_open2’ was not declared in this scope bmdcapture.cpp: In function ‘int main(int, char__)’: bmdcapture.cpp:716:22: error: ‘class IDeckLinkConfiguration’ has no member named ‘SetAudioInputFormat’ bmdcapture.cpp:719:22: error: ‘class IDeckLinkConfiguration’ has no member named ‘SetAudioInputFormat’ bmdcapture.cpp:733:22: error: ‘class IDeckLinkConfiguration’ has no member named ‘SetVideoInputFormat’ bmdcapture.cpp:736:22: error: ‘class IDeckLinkConfiguration’ has no member named ‘SetVideoInputFormat’ bmdcapture.cpp:739:22: error: ‘class IDeckLinkConfiguration’ has no member named ‘SetVideoInputFormat’ bmdcapture.cpp:742:22: error: ‘class IDeckLinkConfiguration’ has no member named ‘SetVideoInputFormat’ bmdcapture.cpp:811:46: error: ‘AVIO_FLAG_WRITE’ was not declared in this scope bmdcapture.cpp:811:61: error: ‘avio_open’ was not declared in this scope bmdcapture.cpp:836:35: error: ‘avformat_write_header’ was not declared in this scope bmdcapture.cpp:888:30: error: ‘avioclose’ was not declared in this scope make: ** [bmdcapture] Error 1

lu-zero commented 12 years ago

On 22/03/12 13:21, glyshko wrote:

Two weeks ago i succeses compiled bmdcapture with SDK 9.1, last commit decklink-ffmpeg -8a65e71 . At now when i try compile bmdcapture commit 94b44c4ff0 i see this error:

Hoffie forgot to make his improvements compatible with the newer sdk...

lu

Luca Barbato Gentoo/linux http://dev.gentoo.org/~lu_zero

glyshko commented 12 years ago

I hope it's fixed and decklink-ffmpeg is compatible with SDK 9.1 and 9.2. Thanks

hoffie commented 12 years ago

I'm terribly sorry that my changes broke the build for you. I've submitted a pull request with a fix for this issue -- the changed code builds with sdk-9.2 for me.

While the code should have been compatible with either old or new SDKs, the detection could not work properly because of changed #include ordering (which is now no longer a problem).

Please wait for Luca to merge the pull request or try using my patch/fork in the meantime.

BTW: Your compiler logs from above also mention problems with libav* -- are you sure you are using a recent enough libav? As far as I remember I did not even touch any libav-related code, so this (second) problem should be unrelated to my changes. Either your environment (regarding libav) changed or your last-working version is even older (before Luca started using newer libav API calls in 6bc9e43c) -- or I'm wrong. ;)

Best regards,

Christian

drum909 commented 12 years ago

Hello lu-zero, hello hoffie.

I am not quite sure, maybe I am missing something - but this is the only place where I might find some help on this topic. I worked thru your Readme, installed the sdk (9.2), but bmdcapture fails to 'make' with following prompts:

g++ -o bmdcapture bmdcapture.cpp /home/ray/decklink/include/DeckLinkAPIDispatch.cpp -Wno-multichar -I /home/ray/decklink/include -fno-rtti -D__STDC_CONSTANT_MACROS -g -lm -ldl -lpthread pkg-config --libs libavformat bmdcapture.cpp: In function ‘AVStream* add_audiostream(AVFormatContext, CodecID)’: bmdcapture.cpp:208:38: error: ‘avformat_newstream’ was not declared in this scope bmdcapture.cpp: In function ‘AVStream add_videostream(AVFormatContext, CodecID)’: bmdcapture.cpp:252:38: error: ‘avformat_newstream’ was not declared in this scope make: ** [bmdcapture] Error 1

I could not find any support-forum or knowledgebase. Might be a mistake to post this here. Does anyone of you know a solution for this problem?

Thanks a lot!

hoffie commented 12 years ago

Well, this is really not the right place as it is a different issue and because it is probably not a bug but rather a problem in your build environment The problem is most likely related to your libav version (also see my previous comment) -- the current code requires libav-0.8 while your version seems to be older and lacks some of the API functions which are used (avformat_new_stream). Install libav-0.8 and you'll probably be fine. Also feel free to mail me directly if you need further help.