From 6a62af45bde8d1084afc4971eb0b7c23148e49fa Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 30 Apr 2015 15:18:38 +0200 Subject: [PATCH 1/4] ICodec: suppress swig warning with open method * Rename open to openCodec. * Swig warning 321: 'open' conflicts with a built-in name in python. --- src/AvTranscoder/codec/ICodec.cpp | 2 +- src/AvTranscoder/codec/ICodec.hpp | 2 +- src/AvTranscoder/decoder/AudioDecoder.cpp | 2 +- src/AvTranscoder/decoder/VideoDecoder.cpp | 2 +- src/AvTranscoder/encoder/AudioEncoder.cpp | 2 +- src/AvTranscoder/encoder/VideoEncoder.cpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/AvTranscoder/codec/ICodec.cpp b/src/AvTranscoder/codec/ICodec.cpp index e1a5949f..7cc51efa 100644 --- a/src/AvTranscoder/codec/ICodec.cpp +++ b/src/AvTranscoder/codec/ICodec.cpp @@ -51,7 +51,7 @@ ICodec::~ICodec() _avCodecContext = NULL; } -void ICodec::open() +void ICodec::openCodec() { if( ! _avCodecContext ) throw std::runtime_error( "unable to open a codec with no codec context" ); diff --git a/src/AvTranscoder/codec/ICodec.hpp b/src/AvTranscoder/codec/ICodec.hpp index 60add8bb..d1257bf8 100644 --- a/src/AvTranscoder/codec/ICodec.hpp +++ b/src/AvTranscoder/codec/ICodec.hpp @@ -36,7 +36,7 @@ class AvExport ICodec virtual ~ICodec() = 0; /// Initialize the codec context. - void open(); + void openCodec(); std::string getCodecName() const; AVCodecID getCodecId() const; diff --git a/src/AvTranscoder/decoder/AudioDecoder.cpp b/src/AvTranscoder/decoder/AudioDecoder.cpp index 21e91d16..fe6391e2 100644 --- a/src/AvTranscoder/decoder/AudioDecoder.cpp +++ b/src/AvTranscoder/decoder/AudioDecoder.cpp @@ -52,7 +52,7 @@ AudioDecoder::~AudioDecoder() void AudioDecoder::setup() { - _inputStream->getAudioCodec().open(); + _inputStream->getAudioCodec().openCodec(); } bool AudioDecoder::decodeNextFrame( Frame& frameBuffer ) diff --git a/src/AvTranscoder/decoder/VideoDecoder.cpp b/src/AvTranscoder/decoder/VideoDecoder.cpp index 8e8b4543..b551a334 100644 --- a/src/AvTranscoder/decoder/VideoDecoder.cpp +++ b/src/AvTranscoder/decoder/VideoDecoder.cpp @@ -50,7 +50,7 @@ VideoDecoder::~VideoDecoder() void VideoDecoder::setup() { - _inputStream->getVideoCodec().open(); + _inputStream->getVideoCodec().openCodec(); } bool VideoDecoder::decodeNextFrame( Frame& frameBuffer ) diff --git a/src/AvTranscoder/encoder/AudioEncoder.cpp b/src/AvTranscoder/encoder/AudioEncoder.cpp index bb3d6acb..c10fbd4c 100644 --- a/src/AvTranscoder/encoder/AudioEncoder.cpp +++ b/src/AvTranscoder/encoder/AudioEncoder.cpp @@ -37,7 +37,7 @@ AudioEncoder::~AudioEncoder() void AudioEncoder::setup() { - _codec.open(); + _codec.openCodec(); } bool AudioEncoder::encodeFrame( const Frame& sourceFrame, Frame& codedFrame ) diff --git a/src/AvTranscoder/encoder/VideoEncoder.cpp b/src/AvTranscoder/encoder/VideoEncoder.cpp index 1b462417..d0bd0064 100644 --- a/src/AvTranscoder/encoder/VideoEncoder.cpp +++ b/src/AvTranscoder/encoder/VideoEncoder.cpp @@ -38,7 +38,7 @@ VideoEncoder::~VideoEncoder() void VideoEncoder::setup() { - _codec.open(); + _codec.openCodec(); } From 22978723c7574f980ee615d8b037f24c0ac3b52f Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 30 Apr 2015 15:20:07 +0200 Subject: [PATCH 2/4] Frame: hide methods to SWIG AVPacket is an unknown type for SWIG. --- src/AvTranscoder/frame/Frame.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/AvTranscoder/frame/Frame.hpp b/src/AvTranscoder/frame/Frame.hpp index 432818cd..2814a3a9 100644 --- a/src/AvTranscoder/frame/Frame.hpp +++ b/src/AvTranscoder/frame/Frame.hpp @@ -19,8 +19,10 @@ class AvExport Frame /// Create a frame with a the given buffer size Frame( const size_t dataSize ); +#ifndef SWIG /// Create a frame from the given AVPAcket (copy data of given packet) Frame( const AVPacket& avPacket ); +#endif /// Override copy constructor in order to copy AVPacket data Frame( const Frame& other ); @@ -52,11 +54,11 @@ class AvExport Frame /// Clear existing data and set size to 0 void clear(); - AVPacket& getAVPacket() { return _packet; } unsigned char* getData() { return _packet.data; } size_t getSize() const { return _packet.size; } #ifndef SWIG + AVPacket& getAVPacket() { return _packet; } const AVPacket& getAVPacket() const { return _packet; } const unsigned char* getData() const { return _packet.data; } #endif From a9b634ceb92b612ab66cbc50feb003514f0cbd7d Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 30 Apr 2015 15:22:05 +0200 Subject: [PATCH 3/4] SWIG: add avOperator.i to suppress swig warnings * operator= => "__assign__" in python. * operator= => "clone" in java. --- src/AvTranscoder/avTranscoder.i | 1 + src/AvTranscoder/swig/avOperator.i | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 src/AvTranscoder/swig/avOperator.i diff --git a/src/AvTranscoder/avTranscoder.i b/src/AvTranscoder/avTranscoder.i index 8d463428..c394ed13 100644 --- a/src/AvTranscoder/avTranscoder.i +++ b/src/AvTranscoder/avTranscoder.i @@ -13,6 +13,7 @@ %include "AvTranscoder/swig/avMediaType.i" %include "AvTranscoder/swig/avRational.i" %include "AvTranscoder/swig/avLogLevel.i" +%include "AvTranscoder/swig/avOperator.i" %{ #include diff --git a/src/AvTranscoder/swig/avOperator.i b/src/AvTranscoder/swig/avOperator.i new file mode 100644 index 00000000..215e3652 --- /dev/null +++ b/src/AvTranscoder/swig/avOperator.i @@ -0,0 +1,7 @@ +#if SWIGPYTHON + %rename(__assign__) *::operator=; +#endif + +#if SWIGJAVA + %rename(clone) *::operator=; +#endif From 0173f83fe46523376f3b61efbe7ffaff33affa54 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 30 Apr 2015 15:30:58 +0200 Subject: [PATCH 4/4] SWIG: add flags when compile bindings * New flags: * fcompact - Compile in compact mode * small - Compile in virtual elimination & compact mode * O - Enable the optimization options: -fastdispatch -fvirtual * Werror - Treat warnings as errors * Fix #179 --- src/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2e4ce98b..d0af291e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -76,6 +76,9 @@ if(SWIG_FOUND) set(AVTRANSCODER_BINDING_FILE "AvTranscoder/avTranscoder.i") set_source_files_properties(${AVTRANSCODER_BINDING_FILE} PROPERTIES CPLUSPLUS ON) + # Swig flags + set(CMAKE_SWIG_FLAGS -c++ -fcompact -small -O -Werror) + ### PYTHON BINDING if(AVTRANSCODER_DISABLE_PYTHON_BINDING) message("PYTHON binding disabled, will not build python binding.") @@ -84,9 +87,6 @@ if(SWIG_FOUND) if(PYTHONLIBS_FOUND) include_directories(${PYTHON_INCLUDE_PATH}) - # Swig flags - set(CMAKE_SWIG_FLAGS -c++ -fcompact) - # Create '_avtranscoder' shared lib (python) swig_add_module(avtranscoder-py python ${AVTRANSCODER_BINDING_FILE}) # For Python binding, need to compile the wrapper into a lib called "_.so" @@ -131,7 +131,7 @@ if(SWIG_FOUND) include_directories(${JNI_INCLUDE_DIRS}) # Swig flags - set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.avtranscoder) + set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -package org.avtranscoder) # Create 'avtranscoder-java' shared lib swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE})