Hi Robert,

  Try this one... I have tested it with my custom ffmpeg compilation (using
libswresample) and the libav included in Ubuntu 10.04 (using
libavresample). CMake scripts detect which library is installed in your
system and some definitions in FFmpegHeaders.hpp do the trick to bridge
between libavresample and libswresample.

  I am sending you the whole pack of modified files, but the only files
that are different from my previous commit are
CMakeModules/FindFFmpeg.cmake, CMakeLists.txt and FFmpegHeaders.hpp.

  Hope that works!


  Regards,


On Tue, Jan 6, 2015 at 7:52 PM, Robert Osfield <[email protected]>
wrote:

> Hi Javier,
>
> I have just had a bash at using avresample headers in place of the
> swresample ones in FFmpegHeaders.hpp :
>
> #if 1
> #include <libavresample/avresample.h>
> #else
> #include <libswresample/swresample.h>
> #endif
>
> But now I get the error:
>
>
> [ 93%] Building CXX object
> src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegDecoderAudio.o
> In file included from
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:1:0:
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.hpp:86:5:
> error: ‘SwrContext’ does not name a type
>      SwrContext *                        m_swr_context;  // Sw resampling
> context
>      ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:30:26:
> error: ‘SwrContext’ has not been declared
>                           SwrContext *swr_context,
>                           ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:
> In function ‘int osgFFmpeg::decode_audio(AVCodecContext*, int16_t*, int*,
> const uint8_t*, int, int*, int, int, AVSampleFormat)’:
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:80:82:
> error: ‘swr_convert’ was not declared in this scope
>                          (const uint8_t **)frame->extended_data,
> frame->nb_samples);
>
> ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:
> In constructor
> ‘osgFFmpeg::FFmpegDecoderAudio::FFmpegDecoderAudio(osgFFmpeg::FFmpegDecoderAudio::PacketQueue&,
> osgFFmpeg::FFmpegClocks&)’:
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:128:5:
> error: class ‘osgFFmpeg::FFmpegDecoderAudio’ does not have any field named
> ‘m_swr_context’
>      m_swr_context(NULL)
>      ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:
> In member function ‘void osgFFmpeg::FFmpegDecoderAudio::open(AVStream*,
> osgFFmpeg::FFmpegParameters*)’:
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:188:13:
> error: ‘m_swr_context’ was not declared in this scope
>              m_swr_context = swr_alloc_set_opts(NULL,
>              ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:195:29:
> error: ‘swr_alloc_set_opts’ was not declared in this scope
>                      0, NULL );
>                              ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:197:45:
> error: ‘swr_init’ was not declared in this scope
>              int err = swr_init(m_swr_context);
>                                              ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:203:40:
> error: ‘swr_free’ was not declared in this scope
>                  swr_free(&m_swr_context);
>                                         ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:
> In member function ‘void osgFFmpeg::FFmpegDecoderAudio::close(bool)’:
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:259:15:
> error: ‘m_swr_context’ was not declared in this scope
>      swr_free(&m_swr_context);
>                ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:259:28:
> error: ‘swr_free’ was not declared in this scope
>      swr_free(&m_swr_context);
>                             ^
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:
> In member function ‘size_t
> osgFFmpeg::FFmpegDecoderAudio::decodeFrame(void*, size_t)’:
> /home/robert/OpenSceneGraph/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:443:145:
> error: ‘m_swr_context’ was not declared in this scope
>              const int bytes_decoded = decode_audio(m_context,
> reinterpret_cast<int16_t*>(buffer), &data_size, m_packet_data,
> m_bytes_remaining, m_swr_context, m_out_sample_rate, m_out_nb_channels,
> m_out_sample_format);
>
> ^
> src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/build.make:80: recipe
> for target
> 'src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegDecoderAudio.o'
> failed
> make[2]: ***
> [src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegDecoderAudio.o]
> Error 1
> CMakeFiles/Makefile2:7070: recipe for target
> 'src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/all' failed
> make[1]: *** [src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/all] Error
> 2
> Makefile:106: recipe for target 'all' failed
> make: *** [all] Error 2
>
>
> It's end of day here in Scotland so I'm going to revert back to svn/trunk
> without any of your submitted changes and wait for feedback from yourself.
> FYI, I'm using Kubuntu 14.10.
>
> Robert.
>
> _______________________________________________
> osg-submissions mailing list
> [email protected]
>
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>
>


-- 
Javier Taibo

Attachment: osg_ffmpeg_v2.tgz
Description: GNU Zip compressed data

_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to