From abeaff9e841a6d6a7065655870c329b9ed1ea583 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Mon, 12 Mar 2018 00:03:01 +0100 Subject: dev-games/openscenegraph: Re-add 3.5.1 We can't drop it before OSG-Qt is stable. Package-Manager: Portage-2.3.24, Repoman-2.3.6 --- dev-games/openscenegraph/Manifest | 1 + .../files/openscenegraph-3.4.0-cmake.patch | 297 +++++++++++++++++++++ .../files/openscenegraph-3.5.1-ffmpeg-3.patch | 173 ++++++++++++ .../openscenegraph/openscenegraph-3.5.1-r2.ebuild | 159 +++++++++++ 4 files changed, 630 insertions(+) create mode 100644 dev-games/openscenegraph/files/openscenegraph-3.4.0-cmake.patch create mode 100644 dev-games/openscenegraph/files/openscenegraph-3.5.1-ffmpeg-3.patch create mode 100644 dev-games/openscenegraph/openscenegraph-3.5.1-r2.ebuild diff --git a/dev-games/openscenegraph/Manifest b/dev-games/openscenegraph/Manifest index bb69360afc57..029e665e152c 100644 --- a/dev-games/openscenegraph/Manifest +++ b/dev-games/openscenegraph/Manifest @@ -1 +1,2 @@ +DIST OpenSceneGraph-3.5.1.zip 8353019 BLAKE2B 5f16fc4be3f7cd3c9a4214586920a3e1943a2858ee5d7d86f20a6b35c53c662b952db3596f0ab5c8be0c97c11a2d4537d1d9261b746ec67d88ce6da404b31e44 SHA512 5d419cb2e59efaf1e9b2efdb3a28e1deb5bf8b62a1be2ab4fed06e50064c4c4fb9f1332e65e0bfe0c6d8e99fe0cc134f863ba46965eda9546d125fbd22151057 DIST OpenSceneGraph-3.5.5.tar.gz 5666085 BLAKE2B f474f7e62476c816cc9b036995f2571e65d33ed426a95eb2727994fd2c46e95457bf5392e488556e53c13c30bd46250f0c3d871678a4de234eae8953c03560a6 SHA512 f4a890bfbabab0ed8d50ad50e8f9ae5aa6edd4a73eda30d6c53ad478889608f7c980306a79549ca1e472cdd3df8061af03537c8139fa6446b00aebf47ec26827 diff --git a/dev-games/openscenegraph/files/openscenegraph-3.4.0-cmake.patch b/dev-games/openscenegraph/files/openscenegraph-3.4.0-cmake.patch new file mode 100644 index 000000000000..59f971c94386 --- /dev/null +++ b/dev-games/openscenegraph/files/openscenegraph-3.4.0-cmake.patch @@ -0,0 +1,297 @@ +--- OpenSceneGraph-3.4.0/CMakeLists.txt ++++ OpenSceneGraph-3.4.0/CMakeLists.txt +@@ -607,6 +607,7 @@ + + # INSTALL_FILES(/include/osg/ FILES "${OPENSCENEGRAPH_CONFIG_HEADER}") + ++INCLUDE(MacroOptionalFindPackage) + + ################################################################################ + # Set Version header file +@@ -651,53 +652,53 @@ + ANDROID_3RD_PARTY() + ELSE() + # Common to all platforms except android: +- FIND_PACKAGE(Freetype) +- FIND_PACKAGE(Inventor) +- FIND_PACKAGE(Jasper) +- FIND_PACKAGE(OpenEXR) +- FIND_PACKAGE(COLLADA) +- FIND_PACKAGE(FBX) +- FIND_PACKAGE(ZLIB) +- FIND_PACKAGE(Xine) +- FIND_PACKAGE(OpenVRML) +- FIND_PACKAGE(Performer) +- FIND_PACKAGE(GDAL) +- FIND_PACKAGE(GTA) +- FIND_PACKAGE(CURL) +- FIND_PACKAGE(LibVNCServer) +- FIND_PACKAGE(OurDCMTK) +- FIND_PACKAGE(FFmpeg) +- FIND_PACKAGE(GStreamer COMPONENTS app pbutils) +- FIND_PACKAGE(GLIB COMPONENTS gobject) ++ MACRO_OPTIONAL_FIND_PACKAGE(Freetype) ++ MACRO_OPTIONAL_FIND_PACKAGE(Inventor) ++ MACRO_OPTIONAL_FIND_PACKAGE(Jasper) ++ MACRO_OPTIONAL_FIND_PACKAGE(OpenEXR) ++ MACRO_OPTIONAL_FIND_PACKAGE(COLLADA) ++ MACRO_OPTIONAL_FIND_PACKAGE(FBX) ++ MACRO_OPTIONAL_FIND_PACKAGE(ZLIB) ++ MACRO_OPTIONAL_FIND_PACKAGE(Xine) ++ MACRO_OPTIONAL_FIND_PACKAGE(OpenVRML) ++ MACRO_OPTIONAL_FIND_PACKAGE(Performer) ++ MACRO_OPTIONAL_FIND_PACKAGE(GDAL) ++ MACRO_OPTIONAL_FIND_PACKAGE(GTA) ++ MACRO_OPTIONAL_FIND_PACKAGE(CURL) ++ MACRO_OPTIONAL_FIND_PACKAGE(LibVNCServer) ++ MACRO_OPTIONAL_FIND_PACKAGE(OurDCMTK) ++ MACRO_OPTIONAL_FIND_PACKAGE(FFmpeg) ++ MACRO_OPTIONAL_FIND_PACKAGE(GStreamer COMPONENTS app pbutils) ++ MACRO_OPTIONAL_FIND_PACKAGE(GLIB COMPONENTS gobject) + FIND_PACKAGE(DirectShow) +- FIND_PACKAGE(SDL2) +- FIND_PACKAGE(SDL) +- FIND_PACKAGE(Poppler-glib) +- FIND_PACKAGE(RSVG) +- FIND_PACKAGE(GtkGl) ++ MACRO_OPTIONAL_FIND_PACKAGE(SDL2) ++ MACRO_OPTIONAL_FIND_PACKAGE(SDL) ++ MACRO_OPTIONAL_FIND_PACKAGE(Poppler-glib) ++ MACRO_OPTIONAL_FIND_PACKAGE(RSVG) ++ MACRO_OPTIONAL_FIND_PACKAGE(GtkGl) + FIND_PACKAGE(DirectInput) +- FIND_PACKAGE(NVTT) ++ MACRO_OPTIONAL_FIND_PACKAGE(NVTT) + IF (NOT WIN32) +- FIND_PACKAGE(Asio) ++ MACRO_OPTIONAL_FIND_PACKAGE(Asio) + ENDIF() + FIND_PACKAGE(ZeroConf) + +- FIND_PACKAGE(LIBLAS) ++ MACRO_OPTIONAL_FIND_PACKAGE(LIBLAS) + + IF (NOT(OSG_USE_LOCAL_LUA_SOURCE)) +- FIND_PACKAGE(Lua52) ++ MACRO_OPTIONAL_FIND_PACKAGE(Lua) + IF (NOT (LUA_LIBRARIES AND LUA_INCLUDE_DIR)) +- FIND_PACKAGE(Lua51) ++ MACRO_OPTIONAL_FIND_PACKAGE(Lua51) + ENDIF() + ENDIF() + + # V8 and Python plugins are tests for linking against these libraries but aren't functionality beyond this. +- # FIND_PACKAGE(V8) +- # FIND_PACKAGE(PythonLibs) ++ # MACRO_OPTIONAL_FIND_PACKAGE(V8) ++ # MACRO_OPTIONAL_FIND_PACKAGE(PythonLibs) + ENDIF() + + IF(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION LESS 8) +- FIND_PACKAGE(ITK) ++ MACRO_OPTIONAL_FIND_PACKAGE(ITK) + ENDIF() + + # Include macro utilities here +@@ -763,12 +764,12 @@ + IF (BUILD_OSG_EXAMPLES AND NOT ANDROID) + + +- FIND_PACKAGE(FLTK) +- FIND_PACKAGE(GLUT) +- FIND_PACKAGE(FOX) ++ MACRO_OPTIONAL_FIND_PACKAGE(FLTK) ++ MACRO_OPTIONAL_FIND_PACKAGE(GLUT) ++ MACRO_OPTIONAL_FIND_PACKAGE(FOX) + + SET(wxWidgets_USE_LIBS base core gl net) +- FIND_PACKAGE(wxWidgets) ++ MACRO_OPTIONAL_FIND_PACKAGE(wxWidgets) + + ENDIF(BUILD_OSG_EXAMPLES AND NOT ANDROID) + +@@ -789,10 +790,10 @@ + # can use Quicktime. + IF(NOT ANDROID) + IF(NOT APPLE) +- FIND_PACKAGE(GIFLIB) +- FIND_PACKAGE(JPEG) +- FIND_PACKAGE(PNG) +- FIND_PACKAGE(TIFF) ++ MACRO_OPTIONAL_FIND_PACKAGE(GIFLIB) ++ MACRO_OPTIONAL_FIND_PACKAGE(JPEG) ++ MACRO_OPTIONAL_FIND_PACKAGE(PNG) ++ MACRO_OPTIONAL_FIND_PACKAGE(TIFF) + # QuickTime is required for OS X, but optional for Windows. + IF(WIN32) + FIND_PACKAGE(QuickTime) +@@ -848,15 +849,7 @@ + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG") + ENDIF() + +-IF(UNIX AND NOT WIN32 AND NOT APPLE) +- IF(CMAKE_SIZEOF_VOID_P MATCHES "8") +- SET(LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement") +- MARK_AS_ADVANCED(LIB_POSTFIX) +- ENDIF() +-ENDIF() +-IF(NOT DEFINED LIB_POSTFIX) +- SET(LIB_POSTFIX "") +-ENDIF() ++SET(LIB_POSTFIX ${LIB_SUFFIX}) + + # Here we apparantly do some funky stuff with making the bin/ and lib/ + # folders which is probably needed to work around a very old CMake bug? +@@ -1191,7 +1184,7 @@ + ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY + ) + #INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc) +- INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION doc COMPONENT openscenegraph-doc) ++ INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION ${GENTOO_DOCDIR} COMPONENT openscenegraph-doc) + + # now set up openthreads documentation generation + IF(BUILD_REF_DOCS_TAGFILE) +@@ -1207,7 +1200,7 @@ + ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs/osg32-32.png COPYONLY + ) + #INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc) +- INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION doc COMPONENT openthreads-doc) ++ INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION ${GENTOO_DOCDIR} COMPONENT openthreads-doc) + + # Process our other doxyfiles but don't create targets for these + CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/all_Doxyfile +--- OpenSceneGraph-3.4.0/CMakeModules/COPYING-CMAKE-SCRIPTS ++++ OpenSceneGraph-3.4.0/CMakeModules/COPYING-CMAKE-SCRIPTS +@@ -0,0 +1,22 @@ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++ ++1. Redistributions of source code must retain the copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. The name of the author may not be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--- OpenSceneGraph-3.4.0/CMakeModules/FindFLTK.cmake.rej ++++ OpenSceneGraph-3.4.0/CMakeModules/FindFLTK.cmake.rej +@@ -0,0 +1,55 @@ ++--- CMakeModules/FindFLTK.cmake 2010-11-11 17:51:46.000000000 +0100 +++++ CMakeModules/FindFLTK.cmake 2014-08-20 00:29:31.229439251 +0200 ++@@ -1,52 +0,0 @@ ++-# Locate FLTK ++-# This module defines ++-# FLTK_LIBRARY ++-# FLTK_FOUND, if false, do not try to link to gdal ++-# FLTK_INCLUDE_DIR, where to find the headers ++-# ++-# $FLTK_DIR is an environment variable that would ++-# correspond to the ./configure --prefix=$FLTK_DIR ++-# ++-# Created by Robert Osfield. ++- ++-FIND_PATH(FLTK_INCLUDE_DIR Fl/Fl.H Fl/Fl.h ++- $ENV{FLTK_DIR}/include ++- $ENV{FLTK_DIR} ++- ~/Library/Frameworks ++- /Library/Frameworks ++- /usr/local/include ++- /usr/include ++- /sw/include # Fink ++- /opt/local/include # DarwinPorts ++- /opt/csw/include # Blastwave ++- /opt/include ++- /usr/freeware/include ++-) ++- ++-MACRO(FIND_FLTK_LIBRARY MYLIBRARY MYLIBRARYNAME) ++- ++- FIND_LIBRARY(${MYLIBRARY} ++- NAMES ${MYLIBRARYNAME} ++- PATHS ++- $ENV{FLTK_DIR}/lib ++- $ENV{FLTK_DIR} ++- ~/Library/Frameworks ++- /Library/Frameworks ++- /usr/local/lib ++- /usr/lib ++- /sw/lib ++- /opt/local/lib ++- /opt/csw/lib ++- /opt/lib ++- /usr/freeware/lib64 ++- ) ++- ++-ENDMACRO(FIND_FLTK_LIBRARY LIBRARY LIBRARYNAME) ++- ++-FIND_FLTK_LIBRARY(FLTK_LIBRARY fltk) ++-FIND_FLTK_LIBRARY(FLTK_GL_LIBRARY fltk_gl) ++- ++-SET(FLTK_FOUND "NO") ++-IF(FLTK_LIBRARY AND FLTK_INCLUDE_DIR) ++- SET(FLTK_FOUND "YES") ++-ENDIF(FLTK_LIBRARY AND FLTK_INCLUDE_DIR) +--- OpenSceneGraph-3.4.0/CMakeModules/MacroOptionalFindPackage.cmake ++++ OpenSceneGraph-3.4.0/CMakeModules/MacroOptionalFindPackage.cmake +@@ -0,0 +1,28 @@ ++# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION() ++# MACRO_OPTIONAL_FIND_PACKAGE( [QUIT] ) ++# This macro is a combination of OPTION() and FIND_PACKAGE(), it ++# works like FIND_PACKAGE(), but additionally it automatically creates ++# an option name WITH_, which can be disabled via the cmake GUI. ++# or via -DWITH_=OFF ++# The standard _FOUND variables can be used in the same way ++# as when using the normal FIND_PACKAGE() ++ ++# Copyright (c) 2006, Alexander Neundorf, ++# ++# Redistribution and use is allowed according to the terms of the BSD license. ++# For details see the accompanying COPYING-CMAKE-SCRIPTS file. ++ ++ ++macro (MACRO_OPTIONAL_FIND_PACKAGE _name ) ++ option(WITH_${_name} "Search for ${_name} package" ON) ++ if (WITH_${_name}) ++ find_package(${_name} ${ARGN}) ++ else (WITH_${_name}) ++ set(${_name}_FOUND) ++ set(${_name}_INCLUDE_DIR) ++ set(${_name}_INCLUDES) ++ set(${_name}_LIBRARY) ++ set(${_name}_LIBRARIES) ++ endif (WITH_${_name}) ++endmacro (MACRO_OPTIONAL_FIND_PACKAGE) ++ +--- OpenSceneGraph-3.4.0/CMakeModules/OsgMacroUtils.cmake ++++ OpenSceneGraph-3.4.0/CMakeModules/OsgMacroUtils.cmake +@@ -456,7 +456,7 @@ + IF(APPLE) + INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin BUNDLE DESTINATION share/OpenSceneGraph/bin ) + ELSE(APPLE) +- INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin COMPONENT openscenegraph-examples ) ++ INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION bin COMPONENT openscenegraph-examples ) + ENDIF(APPLE) + + ENDMACRO(SETUP_EXAMPLE) +--- OpenSceneGraph-3.4.0/examples/osgviewerFLTK/CMakeLists.txt ++++ OpenSceneGraph-3.4.0/examples/osgviewerFLTK/CMakeLists.txt +@@ -1,6 +1,6 @@ + SET(TARGET_SRC osgviewerFLTK.cpp ) + +-SET(TARGET_EXTERNAL_LIBRARIES ${FLTK_LIBRARY} ${FLTK_GL_LIBRARY}) ++SET(TARGET_EXTERNAL_LIBRARIES ${FLTK_BASE_LIBRARY} ${FLTK_GL_LIBRARY}) + + INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIR} ) + diff --git a/dev-games/openscenegraph/files/openscenegraph-3.5.1-ffmpeg-3.patch b/dev-games/openscenegraph/files/openscenegraph-3.5.1-ffmpeg-3.patch new file mode 100644 index 000000000000..3a2792e1999c --- /dev/null +++ b/dev-games/openscenegraph/files/openscenegraph-3.5.1-ffmpeg-3.patch @@ -0,0 +1,173 @@ +From e85d5743341585c6e6eb1ac693884f80e1fa06ce Mon Sep 17 00:00:00 2001 +From: Andreas Cadhalpun +Date: Wed, 1 Jun 2016 10:32:35 +0100 +Subject: [PATCH] Replace deprecated FFmpeg API to fix build with ffmpeg-3.0.x + +--- + src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp | 3 +- + src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp | 48 +++++++++++++--------------- + src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp | 4 +-- + src/osgPlugins/ffmpeg/FFmpegParameters.cpp | 2 +- + 4 files changed, 26 insertions(+), 31 deletions(-) + +diff --git a/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp b/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp +index 665c68f..636bddd 100644 +--- a/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp ++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp +@@ -227,8 +227,7 @@ printf("### CONVERTING from sample format %s TO %s\n\t\tFROM %d TO %d channels\n + if (avcodec_open2(m_context, p_codec, NULL) < 0) + throw std::runtime_error("avcodec_open() failed"); + +- m_context->get_buffer = avcodec_default_get_buffer; +- m_context->release_buffer = avcodec_default_release_buffer; ++ m_context->get_buffer2 = avcodec_default_get_buffer2; + + } + +diff --git a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp +index 9375657..083d3db 100644 +--- a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp ++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp +@@ -71,7 +71,7 @@ void FFmpegDecoderVideo::open(AVStream * const stream) + findAspectRatio(); + + // Find out whether we support Alpha channel +- m_alpha_channel = (m_context->pix_fmt == PIX_FMT_YUVA420P); ++ m_alpha_channel = (m_context->pix_fmt == AV_PIX_FMT_YUVA420P); + + // Find out the framerate + #if LIBAVCODEC_VERSION_MAJOR >= 56 +@@ -95,20 +95,19 @@ void FFmpegDecoderVideo::open(AVStream * const stream) + throw std::runtime_error("avcodec_open() failed"); + + // Allocate video frame +- m_frame.reset(avcodec_alloc_frame()); ++ m_frame.reset(av_frame_alloc()); + + // Allocate converted RGB frame +- m_frame_rgba.reset(avcodec_alloc_frame()); +- m_buffer_rgba[0].resize(avpicture_get_size(PIX_FMT_RGB24, width(), height())); ++ m_frame_rgba.reset(av_frame_alloc()); ++ m_buffer_rgba[0].resize(avpicture_get_size(AV_PIX_FMT_RGB24, width(), height())); + m_buffer_rgba[1].resize(m_buffer_rgba[0].size()); + + // Assign appropriate parts of the buffer to image planes in m_frame_rgba +- avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], PIX_FMT_RGB24, width(), height()); ++ avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], AV_PIX_FMT_RGB24, width(), height()); + + // Override get_buffer()/release_buffer() from codec context in order to retrieve the PTS of each frame. + m_context->opaque = this; +- m_context->get_buffer = getBuffer; +- m_context->release_buffer = releaseBuffer; ++ m_context->get_buffer2 = getBuffer; + } + + +@@ -267,8 +266,8 @@ int FFmpegDecoderVideo::convert(AVPicture *dst, int dst_pix_fmt, AVPicture *src, + #ifdef USE_SWSCALE + if (m_swscale_ctx==0) + { +- m_swscale_ctx = sws_getContext(src_width, src_height, (PixelFormat) src_pix_fmt, +- src_width, src_height, (PixelFormat) dst_pix_fmt, ++ m_swscale_ctx = sws_getContext(src_width, src_height, (AVPixelFormat) src_pix_fmt, ++ src_width, src_height, (AVPixelFormat) dst_pix_fmt, + /*SWS_BILINEAR*/ SWS_BICUBIC, NULL, NULL, NULL); + } + +@@ -315,14 +314,14 @@ void FFmpegDecoderVideo::publishFrame(const double delay, bool audio_disabled) + AVPicture * const dst = (AVPicture *) m_frame_rgba.get(); + + // Assign appropriate parts of the buffer to image planes in m_frame_rgba +- avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], PIX_FMT_RGB24, width(), height()); ++ avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], AV_PIX_FMT_RGB24, width(), height()); + + // Convert YUVA420p (i.e. YUV420p plus alpha channel) using our own routine + +- if (m_context->pix_fmt == PIX_FMT_YUVA420P) ++ if (m_context->pix_fmt == AV_PIX_FMT_YUVA420P) + yuva420pToRgba(dst, src, width(), height()); + else +- convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width(), height()); ++ convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width(), height()); + + // Wait 'delay' seconds before publishing the picture. + int i_delay = static_cast(delay * 1000000 + 0.5); +@@ -349,7 +348,7 @@ void FFmpegDecoderVideo::publishFrame(const double delay, bool audio_disabled) + + void FFmpegDecoderVideo::yuva420pToRgba(AVPicture * const dst, AVPicture * const src, int width, int height) + { +- convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width, height); ++ convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width, height); + + const size_t bpp = 4; + +@@ -367,31 +366,28 @@ void FFmpegDecoderVideo::yuva420pToRgba(AVPicture * const dst, AVPicture * const + } + } + +- +- +-int FFmpegDecoderVideo::getBuffer(AVCodecContext * const context, AVFrame * const picture) ++int FFmpegDecoderVideo::getBuffer(AVCodecContext * const context, AVFrame * const picture, int flags) + { ++ AVBufferRef *ref; + const FFmpegDecoderVideo * const this_ = reinterpret_cast(context->opaque); + +- const int result = avcodec_default_get_buffer(context, picture); ++ const int result = avcodec_default_get_buffer2(context, picture, flags); + int64_t * p_pts = reinterpret_cast( av_malloc(sizeof(int64_t)) ); + + *p_pts = this_->m_packet_pts; + picture->opaque = p_pts; + ++ ref = av_buffer_create((uint8_t *)picture->opaque, sizeof(int64_t), FFmpegDecoderVideo::freeBuffer, picture->buf[0], flags); ++ picture->buf[0] = ref; ++ + return result; + } + +- +- +-void FFmpegDecoderVideo::releaseBuffer(AVCodecContext * const context, AVFrame * const picture) ++void FFmpegDecoderVideo::freeBuffer(void *opaque, uint8_t *data) + { +- if (picture != 0) +- av_freep(&picture->opaque); +- +- avcodec_default_release_buffer(context, picture); ++ AVBufferRef *ref = (AVBufferRef *)opaque; ++ av_buffer_unref(&ref); ++ av_free(data); + } + +- +- + } // namespace osgFFmpeg +diff --git a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp +index 7883b17..778c1a9 100644 +--- a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp ++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp +@@ -94,8 +94,8 @@ class FFmpegDecoderVideo : public OpenThreads::Thread + int src_pix_fmt, int src_width, int src_height); + + +- static int getBuffer(AVCodecContext * context, AVFrame * picture); +- static void releaseBuffer(AVCodecContext * context, AVFrame * picture); ++ static int getBuffer(AVCodecContext * context, AVFrame * picture, int flags); ++ static void freeBuffer(void * opaque, uint8_t *data); + + PacketQueue & m_packets; + FFmpegClocks & m_clocks; +diff --git a/src/osgPlugins/ffmpeg/FFmpegParameters.cpp b/src/osgPlugins/ffmpeg/FFmpegParameters.cpp +index 288e440..5915ab8 100644 +--- a/src/osgPlugins/ffmpeg/FFmpegParameters.cpp ++++ b/src/osgPlugins/ffmpeg/FFmpegParameters.cpp +@@ -19,7 +19,7 @@ extern "C" + #include + } + +-inline PixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); } ++inline AVPixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); } + + + namespace osgFFmpeg { diff --git a/dev-games/openscenegraph/openscenegraph-3.5.1-r2.ebuild b/dev-games/openscenegraph/openscenegraph-3.5.1-r2.ebuild new file mode 100644 index 000000000000..655369b1064b --- /dev/null +++ b/dev-games/openscenegraph/openscenegraph-3.5.1-r2.ebuild @@ -0,0 +1,159 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +WX_GTK_VER="3.0" + +inherit cmake-utils flag-o-matic wxwidgets + +MY_PN="OpenSceneGraph" +MY_P=${MY_PN}-${PV} + +DESCRIPTION="Open source high performance 3D graphics toolkit" +HOMEPAGE="http://www.openscenegraph.org/" +SRC_URI="http://trac.openscenegraph.org/downloads/developer_releases/${MY_P}.zip" + +LICENSE="wxWinLL-3 LGPL-2.1" +SLOT="0/35" # Subslot consists of major + minor version number +KEYWORDS="amd64 ~hppa ~ia64 ~ppc ~ppc64 x86" +IUSE="asio curl debug doc examples ffmpeg fltk fox gdal gif glut gstreamer gtk jpeg +jpeg2k las libav lua openexr openinventor osgapps pdf png qt5 sdl sdl2 svg tiff +truetype vnc wxwidgets xine xrandr zlib" + +REQUIRED_USE="sdl2? ( sdl )" + +# TODO: COLLADA, FBX, GTA, OpenVRML, Performer, DCMTK +RDEPEND=" + x11-libs/libSM + x11-libs/libXext + virtual/glu + virtual/opengl + asio? ( dev-cpp/asio ) + curl? ( net-misc/curl ) + examples? ( + fltk? ( x11-libs/fltk:1[opengl] ) + fox? ( x11-libs/fox:1.6[opengl] ) + glut? ( media-libs/freeglut ) + gtk? ( x11-libs/gtkglext ) + sdl2? ( media-libs/libsdl2 ) + wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}[opengl,X] ) + ) + ffmpeg? ( + libav? ( media-video/libav:0= ) + !libav? ( media-video/ffmpeg:0= ) + ) + gdal? ( sci-libs/gdal ) + gif? ( media-libs/giflib:= ) + gstreamer? ( + media-libs/gstreamer:1.0 + media-libs/gst-plugins-base:1.0 + ) + jpeg? ( virtual/jpeg:0 ) + jpeg2k? ( media-libs/jasper:= ) + las? ( >=sci-geosciences/liblas-1.8.0 ) + lua? ( >=dev-lang/lua-5.1.5:* ) + openexr? ( + media-libs/ilmbase:= + media-libs/openexr:= + ) + openinventor? ( media-libs/coin ) + pdf? ( app-text/poppler[cairo] ) + png? ( media-libs/libpng:0= ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtopengl:5 + dev-qt/qtwidgets:5 + ) + sdl? ( media-libs/libsdl ) + svg? ( + gnome-base/librsvg + x11-libs/cairo + ) + tiff? ( media-libs/tiff:0 ) + truetype? ( media-libs/freetype:2 ) + vnc? ( net-libs/libvncserver ) + xine? ( media-libs/xine-lib ) + xrandr? ( x11-libs/libXrandr ) + zlib? ( sys-libs/zlib ) +" +DEPEND="${RDEPEND} + app-arch/unzip + virtual/pkgconfig + x11-proto/xextproto + doc? ( app-doc/doxygen ) + xrandr? ( x11-proto/randrproto ) +" + +S="${WORKDIR}/${MY_P}" + +DOCS=( AUTHORS.txt ChangeLog NEWS.txt ) + +PATCHES=( + "${FILESDIR}"/${PN}-3.4.0-cmake.patch + "${FILESDIR}"/${P}-ffmpeg-3.patch + "${FILESDIR}"/${P}-jpeg-9.patch +) + +src_configure() { + if use examples && use wxwidgets; then + need-wxwidgets unicode + fi + + # Needed by FFmpeg + append-cppflags -D__STDC_CONSTANT_MACROS + + local mycmakeargs=( + -DDYNAMIC_OPENSCENEGRAPH=ON + -DGENTOO_DOCDIR="/usr/share/doc/${PF}" + -DOPENGL_PROFILE=GL2 #GL1 GL2 GL3 GLES1 GLES3 GLES3 + -DOSG_PROVIDE_READFILE=ON + -DOSG_USE_LOCAL_LUA_SOURCE=OFF + -DWITH_Lua51=OFF # We use CMake-version FindLua.cmake instead + -DWITH_Asio=$(usex asio) + -DWITH_CURL=$(usex curl) + -DBUILD_DOCUMENTATION=$(usex doc) + -DBUILD_OSG_APPLICATIONS=$(usex osgapps) + -DBUILD_OSG_EXAMPLES=$(usex examples) + -DWITH_FFmpeg=$(usex ffmpeg) + -DWITH_GDAL=$(usex gdal) + -DWITH_GIFLIB=$(usex gif) + -DWITH_GStreamer=$(usex gstreamer) + -DWITH_GLIB=$(usex gstreamer) + -DWITH_GtkGl=$(usex gtk) + -DWITH_JPEG=$(usex jpeg) + -DWITH_Jasper=$(usex jpeg2k) + -DWITH_LIBLAS=$(usex las) + -DWITH_Lua=$(usex lua) + -DWITH_OpenEXR=$(usex openexr) + -DWITH_Inventor=$(usex openinventor) + -DWITH_Poppler-glib=$(usex pdf) + -DWITH_PNG=$(usex png) + -DOSG_USE_QT=$(usex qt5) + $(usex qt5 "-DDESIRED_QT_VERSION=5" "") + -DWITH_SDL=$(usex sdl) + -DWITH_SDL2=$(usex sdl2) + -DWITH_RSVG=$(usex svg rsvg) + -DWITH_TIFF=$(usex tiff) + -DWITH_Freetype=$(usex truetype) + -DWITH_LibVNCServer=$(usex vnc) + -DWITH_Xine=$(usex xine) + -DOSGVIEWER_USE_XRANDR=$(usex xrandr) + -DWITH_ZLIB=$(usex zlib) + ) + if use examples; then + mycmakeargs+=( + -DWITH_FLTK=$(usex fltk) + -DWITH_FOX=$(usex fox) + -DWITH_GLUT=$(usex glut) + -DWITH_wxWidgets=$(usex wxwidgets) + ) + fi + + cmake-utils_src_configure +} + +src_compile() { + cmake-utils_src_compile + use doc && cmake-utils_src_compile doc_openscenegraph doc_openthreads +} -- cgit v1.2.3-18-g5258