Hi Robert,

  It works, indeed.

  However, I have some new corrections to this code. With recent
ffmpeg versions it causes a memory leak because of a change in ffmpeg
API from 1.x to 2.x.

  osgmovie also needs to be fixed to correctly support the audio. I'll
send you the changes as soon as I have some time to finish testing it
and clean up the code.


  Regards,


On Wed, Feb 25, 2015 at 8:36 PM, Robert Osfield
<[email protected]> wrote:
> Hi Javier,
>
> Does ffmpeg in svn/trunk work OK for you now?
>
> As for the audio tracks, I haven't personal done much work in this
> direction.  Ideally we'd have a plugin an ability to render audio streams to
> an audio channel as the means that the osgmovie example utilizes SDL is way
> too crude for serious usage.
>
> Robert.
>
> On 8 January 2015 at 10:24, Javier Taibo <[email protected]> wrote:
>>
>>   Hi Robert,
>>
>>   My fault! This line should be
>>
>> #  define swr_free avresample_free
>>
>>   instead of
>>
>> #  define swr_free(ctx) avresample_free
>>
>>   Actually, I don't know why this code compiled in my box :)  I probably
>> missed something when packing the code.
>>
>>   Anyway, nice to hear it is working now. I use this plug-in a lot, so I
>> will probably send you further improvements.
>>
>>   One feature that I want to add is the selection of audio tracks. The OSG
>> API seems to be ready for that, but it is not implemented in the plug-in, it
>> always take the default audio track, with no option to select other one,
>> select several tracks or none at all.
>>
>>
>>   Regards,
>>
>>
>> On Wed, Jan 7, 2015 at 3:17 PM, Robert Osfield <[email protected]>
>> wrote:
>>>
>>> Hi Javier,
>>>
>>> With these changes everything compiles fine on my system and audio now
>>> works great on all the videos I have :-)
>>>
>>> The only small tweak I had to make was FFmpegHeaders.hpp where my
>>> compiler picked up a missing parameter in the swr_free(ctx) macro.  I've
>>> added this and it compiled cleanly.
>>>
>>> Many thanks ;-)
>>> Robert.
>>>
>>> On 7 January 2015 at 11:07, Javier Taibo <[email protected]> wrote:
>>>>
>>>>   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
>>>>
>>>>
>>>> _______________________________________________
>>>> osg-submissions mailing list
>>>> [email protected]
>>>>
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>>>
>>>
>>>
>>> _______________________________________________
>>> osg-submissions mailing list
>>> [email protected]
>>>
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>>
>>
>>
>>
>> --
>> Javier Taibo
>>
>>
>> _______________________________________________
>> osg-submissions mailing list
>> [email protected]
>>
>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>
>
>
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>



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

Reply via email to