Opened 5 years ago

Closed 5 years ago

#2203 closed defect (fixed)

libavcodec/vdpau.h is broken when used from C++

Reported by: aballier Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Not sure at all how to fix this, but commit 44e065d56c87d6a9d0effccec5f31517f72924ec moved the definition of VdpPictureInfo? from vdpau_render_state to global scope. VdpPictureInfo? is also defined by vdpau/vpdau.h here, included from libavcodec/vdpau.h.
While it's fine with C code, it's not from C++ and breaks xbmc.
Sample test case:

$ cat foo.cc
extern "C" {
#include <libavcodec/vdpau.h>
}

int main() {}

$ g++ foo.cc
In file included from foo.cc:2:0:
/usr/include/libavcodec/vdpau.h:55:7: error: using typedef-name ‘VdpPictureInfo?’ after ‘union’
In file included from /usr/include/libavcodec/vdpau.h:52:0,

from foo.cc:2:

/usr/include/vdpau/vdpau.h:2650:16: note: ‘VdpPictureInfo?’ has a previous declaration here

Change History (3)

comment:1 Changed 5 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords regression added
  • Priority changed from normal to important
  • Version changed from unspecified to git-master

comment:2 Changed 5 years ago by michael

Patch on ML, author of problematic commit contacted

comment:3 Changed 5 years ago by michael

  • Reproduced by developer set
  • Resolution set to fixed
  • Status changed from new to closed

patch applied, we can change the solution later if something better is found

Note: See TracTickets for help on using tickets.