Instalar OpenSceneGraph 2.9.6 con soporte para Collada en Ubuntu 12.04

Aunque normalmente uso OpenSceneGraph 2.8.3 para trabajar con osgART 2.0 RC3 también se puede usar OpenSceneGraph 2.9.6 (de hecho es la última versión compatible con osgART ACTUALIZACIÓN: leer este post para hacer funcionar osgART 2.0 RC3 en la versión 2.9.7 y superiores). Te lo puedes descargar usando SVN:

svn checkout http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.6 OpenSceneGraph-2.9.6

Los pasos para instalar OSG 2.9.6 con soporte para Collada en Ubuntu 12.04 son los mismos que expliqué en “Instalar OpenSceneGraph 2.8.3 con soporte para Collada en Ubuntu 12.04“, solo que hay que hacer unos cambios más al código fuente por culpa de FFMpeg. Así que tan solo añade estos cambios a los que ya expliqué para OSG 2.8.3 y luego procede a la instalación de manera normal:

/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp
– En la línea 276 cambia esto:

const int bytes_decoded = avcodec_decode_audio2(m_context, reinterpret_cast(buffer), &data_size, m_packet_data, m_bytes_remaining);

Por esto:

#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR==52 && LIBAVCODEC_VERSION_MINOR>=32)
            AVPacket avpkt;
            av_init_packet(&avpkt);
            avpkt.data = const_cast<uint8_t *>(m_packet_data);
            avpkt.size = m_bytes_remaining;

            const int bytes_decoded = avcodec_decode_audio3(m_context, reinterpret_cast<int16_t*>(buffer), &data_size, &avpkt);
#else
            // fallback for older versions of ffmpeg that don't have avcodec_decode_audio3.
            const int bytes_decoded = avcodec_decode_audio2(m_context, reinterpret_cast<int16_t*>(buffer), &data_size, m_packet_data, m_bytes_remaining);
#endif

/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp

– En la línea 168 cambia esto:

const int bytes_decoded = avcodec_decode_video(m_context, m_frame.get(), &frame_finished, m_packet_data, m_bytes_remaining);

Por esto:

#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR==52 && LIBAVCODEC_VERSION_MINOR>=32)
            AVPacket avpkt;
            av_init_packet(&avpkt);
            avpkt.data = const_cast<uint8_t *>(m_packet_data);
            avpkt.size = m_bytes_remaining;

            const int bytes_decoded = avcodec_decode_video2(m_context, m_frame.get(), &frame_finished, &avpkt);
#else
            // fallback for older versions of ffmpeg that don't have avcodec_decode_video2.
            const int bytes_decoded = avcodec_decode_video(m_context, m_frame.get(), &frame_finished, m_packet_data, m_bytes_remaining);
#endif

Fuentes: http://code.metager.de/source/xref/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp

You might also like

osgART 2.0 RC3 con OpenSceneGraph 2.9.7 o posterior (incluyendo 3.0.0)
Hace bastante tiempo tuve problemas para usar osgART 2.0 RC3 con OpenSceneGraph 2.9.7 o cualquier versión...

Scripts para instalar ARToolKit, Collada DOM, OpenSceneGraph y osgART
He creado unos scripts y parches para que la instalación de todas estas librerías sean menos "dolorosa"....

Instalar osgART 2.0 RC3 con OpenSceneGraph 2.8.3 o 2.9.6 y soporte para Collada en Ubuntu 12.04
Antes de instalar osgART tenemos que instalar ARToolKit, collada-dom y OpenSceneGraph así que echar...

osgART 2.0 RC3 with OpenSceneGraph 2.9.7 or later (including 3.0.0)
Long time ago I had problems using osgART 2.0 RC3 with OpenSceneGraph 2.9.7 or later, I couldn't get...

Dejar un comentario?

0 Comentarios.

Deje un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.