summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-games/openscenegraph/Manifest1
-rw-r--r--dev-games/openscenegraph/files/openscenegraph-3.4.0-cmake.patch297
-rw-r--r--dev-games/openscenegraph/files/openscenegraph-3.5.1-ffmpeg-3.patch173
-rw-r--r--dev-games/openscenegraph/openscenegraph-3.5.1-r2.ebuild159
4 files changed, 630 insertions, 0 deletions
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( <name> [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_<name>, which can be disabled via the cmake GUI.
++# or via -DWITH_<name>=OFF
++# The standard <name>_FOUND variables can be used in the same way
++# as when using the normal FIND_PACKAGE()
++
++# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
++#
++# 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 <Andreas.Cadhalpun@googlemail.com>
+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<int>(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<const FFmpegDecoderVideo*>(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<int64_t*>( 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 <libavutil/pixdesc.h>
+ }
+
+-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
+}