Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6811 Discussions

conflicting definitions between mp4.h and ippvideoencodermpeg4.hpp

rhy
Beginner
487 Views

Hi, I am building an application which consists of an mpeg4 encoder and an mpeg4 decoder.
The encoder class and the decoder class themselves compile ok.

BUT at one point in the code, I have to include umc_mpeg4_video_decoder.h and umc_mpeg4_video_encoder.h in the header file of my encoder+decoder class.
After that, compiling the application fails due to a lot of redefinitions:

(ippvideoencodermpeg4.hpp gets included by the encoder and mp4.h gets included by the decoder)

...ippmediacodecmpeg4_decincludemp4.h(233) : error C2365: 'MP4_VISUAL_OBJECT_TYPE_VIDEO' : redefinition; previous definition was a 'enumerator'
...ippmediacodecmpeg4_encincludeippvideoencodermpeg4.hpp(60) : see declaration of 'MP4_VISUAL_OBJECT_TYPE_VIDEO'

Some of those problems can easily be eliminated by commenting out the secondary definitions, because they are exactly the same.
But the following definitions are in fact different, and I can't just get rid of the dupes.

...ippmediacodecmpeg4_decincludemp4.h(495) : error C2371: 'mp4_VideoObjectPlane' : redefinition; different basic types
...ippmediacodecmpeg4_encincludeippvideoencodermpeg4.hpp(174) : see declaration of 'mp4_VideoObjectPlane'

Btw.: Building under WinXp, IA32, Microsoft Visual C++ .NET 2003

What can I do to compile an encoder and a decoder in the same application ?

Thanks for any suggestions...

0 Kudos
2 Replies
rhy
Beginner
487 Views
There seems to be no other solution than:
Commenting out all secondary definitions that are exactly the same in both files, and renaming all other colliding definitions in the decoder (mp4.h and all files that include mp4.h).
0 Kudos
Vladimir_Dudnik
Employee
487 Views

Hi,

you are right, we have such restriction in MPEG4 part of media sample. We will fix that in the next release. As a workaround you can use C++ namespace to distiguish similar definitions, instead of commenting them out.

Regards,
Vladimir

0 Kudos
Reply