Opened 7 days ago

Last modified 15 hours ago

#7789 open defect

Fails to compile with Blackmagic Decklink SDK 11.0

Reported by: llogan Owned by: cus
Priority: normal Component: avdevice
Version: git-master Keywords: decklink
Cc: cus Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

./configure --enable-nonfree --enable-decklink && make
[...]
CXX     libavdevice/decklink_common.o
cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-Wmissing-prototypes’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-Wno-pointer-to-int-cast’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-Wno-pointer-sign’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-std=c11’ is valid for C/ObjC but not for C++
In file included from libavdevice/decklink_common.cpp:54:
libavdevice/decklink_common.h:90:5: error: ‘IDeckLinkAttributes’ does not name a type; did you mean ‘BMDDeckLinkAttributeID’?
     IDeckLinkAttributes *attr;
     ^~~~~~~~~~~~~~~~~~~
     BMDDeckLinkAttributeID
libavdevice/decklink_common.cpp: In function ‘int decklink_get_attr_string(IDeckLink*, BMDDeckLinkAttributeID, const char**)’:
libavdevice/decklink_common.cpp:84:5: error: ‘IDeckLinkAttributes’ was not declared in this scope
     IDeckLinkAttributes *attr;
     ^~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:84:5: note: suggested alternative: ‘BMDDeckLinkAttributeID’
     IDeckLinkAttributes *attr;
     ^~~~~~~~~~~~~~~~~~~
     BMDDeckLinkAttributeID
libavdevice/decklink_common.cpp:84:26: error: ‘attr’ was not declared in this scope
     IDeckLinkAttributes *attr;
                          ^~~~
libavdevice/decklink_common.cpp:84:26: note: suggested alternative: ‘atol’
     IDeckLinkAttributes *attr;
                          ^~~~
                          atol
libavdevice/decklink_common.cpp:86:28: error: ‘IID_IDeckLinkAttributes’ was not declared in this scope
     if (dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&attr) != S_OK)
                            ^~~~~~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:86:28: note: suggested alternative: ‘BMDDeckLinkAttributeID’
     if (dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&attr) != S_OK)
                            ^~~~~~~~~~~~~~~~~~~~~~~
                            BMDDeckLinkAttributeID
libavdevice/decklink_common.cpp: In function ‘int decklink_select_input(AVFormatContext*, BMDDeckLinkConfigurationID)’:
libavdevice/decklink_common.cpp:112:20: error: ‘struct decklink_ctx’ has no member named ‘attr’
         res = ctx->attr->GetInt(attr_id, &supported_connections);
                    ^~~~
libavdevice/decklink_common.cpp: In function ‘int ff_decklink_set_configs(AVFormatContext*, decklink_direction_t)’:
libavdevice/decklink_common.cpp:152:18: error: ‘struct decklink_ctx’ has no member named ‘attr’
         if (ctx->attr->GetFlag(BMDDeckLinkSupportsDuplexModeConfiguration, &duplex_supported) != S_OK)
                  ^~~~
libavdevice/decklink_common.cpp:152:32: error: ‘BMDDeckLinkSupportsDuplexModeConfiguration’ was not declared in this scope
         if (ctx->attr->GetFlag(BMDDeckLinkSupportsDuplexModeConfiguration, &duplex_supported) != S_OK)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:152:32: note: suggested alternative: ‘BMDDeckLinkSupportsInputFormatDetection’
         if (ctx->attr->GetFlag(BMDDeckLinkSupportsDuplexModeConfiguration, &duplex_supported) != S_OK)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                BMDDeckLinkSupportsInputFormatDetection
libavdevice/decklink_common.cpp:156:36: error: ‘bmdDeckLinkConfigDuplexMode’ was not declared in this scope
             res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:156:36: note: suggested alternative: ‘bmdDeckLinkConfigCaptureGroup’
             res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                    bmdDeckLinkConfigCaptureGroup
libavdevice/decklink_common.cpp:156:89: error: ‘bmdDuplexModeFull’ was not declared in this scope
             res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
                                                                                         ^~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:156:89: note: suggested alternative: ‘bmdDuplexFull’
             res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
libavdevice/decklink_common.cpp:156:109: error: ‘bmdDuplexModeHalf’ was not declared in this scope
             res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
                                                                                                             ^~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:156:109: note: suggested alternative: ‘bmdDuplexHalf’
             res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
                                                                                                             ^~~~~~~~~~~~~~~~~
                                                                                                             bmdDuplexHalf
libavdevice/decklink_common.cpp: In function ‘int ff_decklink_set_format(AVFormatContext*, int, int, int, int, AVFieldOrder, decklink_direction_t, int)’:
libavdevice/decklink_common.cpp:190:5: error: ‘BMDDisplayModeSupport’ was not declared in this scope
     BMDDisplayModeSupport support;
     ^~~~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:190:5: note: suggested alternative: ‘bmdDisplayModeSupports3D’
     BMDDisplayModeSupport support;
     ^~~~~~~~~~~~~~~~~~~~~
     bmdDisplayModeSupports3D
libavdevice/decklink_common.cpp:254:45: error: ‘support’ was not declared in this scope
                                            &support, NULL) != S_OK)
                                             ^~~~~~~
libavdevice/decklink_common.cpp:254:45: note: suggested alternative: ‘ushort’
                                            &support, NULL) != S_OK)
                                             ^~~~~~~
                                             ushort
libavdevice/decklink_common.cpp:259:68: error: ‘support’ was not declared in this scope
                                                                   &support, NULL) != S_OK) {
                                                                    ^~~~~~~
libavdevice/decklink_common.cpp:259:68: note: suggested alternative: ‘ushort’
                                                                   &support, NULL) != S_OK) {
                                                                    ^~~~~~~
                                                                    ushort
libavdevice/decklink_common.cpp:270:9: error: ‘support’ was not declared in this scope
     if (support == bmdDisplayModeSupported)
         ^~~~~~~
libavdevice/decklink_common.cpp:270:9: note: suggested alternative: ‘ushort’
     if (support == bmdDisplayModeSupported)
         ^~~~~~~
         ushort
libavdevice/decklink_common.cpp:270:20: error: ‘bmdDisplayModeSupported’ was not declared in this scope
     if (support == bmdDisplayModeSupported)
                    ^~~~~~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:270:20: note: suggested alternative: ‘bmdDisplayModeSupports3D’
     if (support == bmdDisplayModeSupported)
                    ^~~~~~~~~~~~~~~~~~~~~~~
                    bmdDisplayModeSupports3D
libavdevice/decklink_common.cpp: In function ‘void ff_decklink_cleanup(AVFormatContext*)’:
libavdevice/decklink_common.cpp:434:14: error: ‘struct decklink_ctx’ has no member named ‘attr’
     if (ctx->attr)
              ^~~~
libavdevice/decklink_common.cpp:435:14: error: ‘struct decklink_ctx’ has no member named ‘attr’
         ctx->attr->Release();
              ^~~~
libavdevice/decklink_common.cpp: In function ‘int ff_decklink_init_device(AVFormatContext*, const char*)’:
libavdevice/decklink_common.cpp:476:33: error: ‘IID_IDeckLinkAttributes’ was not declared in this scope
     if (ctx->dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&ctx->attr) != S_OK) {
                                 ^~~~~~~~~~~~~~~~~~~~~~~
libavdevice/decklink_common.cpp:476:33: note: suggested alternative: ‘BMDDeckLinkAttributeID’
     if (ctx->dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&ctx->attr) != S_OK) {
                                 ^~~~~~~~~~~~~~~~~~~~~~~
                                 BMDDeckLinkAttributeID
libavdevice/decklink_common.cpp:476:73: error: ‘struct decklink_ctx’ has no member named ‘attr’
     if (ctx->dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&ctx->attr) != S_OK) {
                                                                         ^~~~
make: *** [ffbuild/common.mak:63: libavdevice/decklink_common.o] Error 1

Reported by m4xx3d0ut. Says it works with SDK 10.11.4.

Change History (3)

comment:1 Changed 7 days ago by cus

  • Owner set to cus
  • Status changed from new to open

Blackmagic deprecated some API functions... Use older SDK for now...

comment:2 Changed 7 days ago by cus

  • Cc cus added

comment:3 Changed 15 hours ago by cus

Here is some code to fix it. Compile tested only so far...

https://github.com/cus/ffmpeg/commits/decklink

Note: See TracTickets for help on using tickets.