Changeset 9826

Show
Ignore:
Timestamp:
02/27/09 18:00:28 (5 years ago)
Author:
robert
Message:

Ported across from using boost pointers, and prepped for integration of audio interface into core OSG

Location:
OpenSceneGraph/trunk/src/osgPlugins/ffmpeg
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/AudioSinkInterface.hpp

    r9816 r9826  
    11 
    2 #ifndef HEADER_GUARD_OSGFFMPEG_AUDIO_SINK_INTERFACE_H 
    3 #define HEADER_GUARD_OSGFFMPEG_AUDIO_SINK_INTERFACE_H 
     2#ifndef OSG_AUDIOSINKINTERFACE_H 
     3#define OSG_AUDIOSINKINTERFACE_H 
    44 
    55#include <osg/Object> 
     
    77 
    88 
    9 namespace osgFFmpeg 
     9namespace osg 
    1010{ 
    1111 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoder.cpp

    r9816 r9826  
    4747            throw std::runtime_error("av_open_input_file() failed"); 
    4848 
    49         m_format_context.reset(p_format_context, av_close_input_file); 
     49        m_format_context.reset(p_format_context); 
    5050 
    5151        // Retrieve stream info 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoder.hpp

    r9816 r9826  
    33#define HEADER_GUARD_OSGFFMPEG_FFMPEG_DECODER_H 
    44 
    5 #include <boost/shared_ptr.hpp> 
    6  
    75#include "FFmpegDecoderAudio.hpp" 
    86#include "FFmpegDecoderVideo.hpp" 
    97 
     8#include <osg/Notify> 
    109 
    1110 
    1211namespace osgFFmpeg { 
    1312 
     13class FormatContextPtr 
     14{ 
     15    public: 
     16     
     17        typedef AVFormatContext T; 
     18     
     19        explicit FormatContextPtr() : _ptr(0) {} 
     20        explicit FormatContextPtr(T* ptr) : _ptr(ptr) {} 
     21         
     22        ~FormatContextPtr() 
     23        { 
     24            cleanup(); 
     25        } 
     26         
     27        T* get() { return _ptr; } 
     28 
     29        T * operator-> () const // never throws 
     30        { 
     31            return _ptr; 
     32        } 
     33 
     34        void reset(T* ptr)  
     35        { 
     36            if (ptr==_ptr) return; 
     37            cleanup(); 
     38            _ptr = ptr; 
     39        } 
     40 
     41        void cleanup() 
     42        { 
     43            if (_ptr)  
     44            { 
     45                osg::notify(osg::NOTICE)<<"Calling av_close_input_file("<<_ptr<<")"<<std::endl; 
     46                av_close_input_file(_ptr); 
     47            } 
     48            _ptr = 0; 
     49        } 
     50         
     51         
     52 
     53    protected: 
     54     
     55        T* _ptr; 
     56}; 
    1457 
    1558 
     
    4689    }; 
    4790 
    48     typedef boost::shared_ptr<AVFormatContext> FormatContextPtr; 
    4991    typedef BoundedMessageQueue<FFmpegPacket> PacketQueue; 
    5092 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp

    r9818 r9826  
    107107 
    108108 
    109 void FFmpegDecoderAudio::setAudioSink(osg::ref_ptr<AudioSinkInterface> audio_sink) 
     109void FFmpegDecoderAudio::setAudioSink(osg::ref_ptr<osg::AudioSinkInterface> audio_sink) 
    110110{ 
    111111    // The FFmpegDecoderAudio object takes the responsability of destroying the audio_sink. 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.hpp

    r9818 r9826  
    3131    virtual void run(); 
    3232 
    33     void setAudioSink(osg::ref_ptr<AudioSinkInterface> audio_sink); 
     33    void setAudioSink(osg::ref_ptr<osg::AudioSinkInterface> audio_sink); 
    3434    void fillBuffer(void * buffer, size_t size); 
    3535 
     
    4242 
    4343    //typedef boost::shared_ptr<AVFrame> FramePtr; 
    44     typedef osg::ref_ptr<AudioSinkInterface> SinkPtr; 
     44    typedef osg::ref_ptr<osg::AudioSinkInterface> SinkPtr; 
    4545    typedef std::vector<uint8_t> Buffer; 
    4646 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp

    r9818 r9826  
    7373 
    7474    // Allocate video frame 
    75     m_frame.reset(avcodec_alloc_frame(), av_free); 
     75    m_frame.reset(avcodec_alloc_frame()); 
    7676 
    7777    // Allocate converted RGB frame 
    78     m_frame_rgba.reset(avcodec_alloc_frame(), av_free); 
     78    m_frame_rgba.reset(avcodec_alloc_frame()); 
    7979    m_buffer_rgba.resize(avpicture_get_size(PIX_FMT_RGB32, width(), height())); 
    8080    m_buffer_rgba_public.resize(m_buffer_rgba.size()); 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp

    r9818 r9826  
    1414namespace osgFFmpeg { 
    1515 
     16class FramePtr 
     17{ 
     18    public: 
     19     
     20        typedef AVFrame T; 
     21     
     22        explicit FramePtr() : _ptr(0) {} 
     23        explicit FramePtr(T* ptr) : _ptr(ptr) {} 
     24         
     25        ~FramePtr() 
     26        { 
     27            cleanup(); 
     28        } 
     29         
     30        T* get() { return _ptr; } 
    1631 
     32        T * operator-> () const // never throws 
     33        { 
     34            return _ptr; 
     35        } 
     36 
     37        void reset(T* ptr)  
     38        { 
     39            if (ptr==_ptr) return; 
     40            cleanup(); 
     41            _ptr = ptr; 
     42        } 
     43 
     44        void cleanup() 
     45        { 
     46            if (_ptr) av_free(_ptr); 
     47            _ptr = 0; 
     48        } 
     49         
     50         
     51 
     52    protected: 
     53     
     54        T* _ptr; 
     55}; 
    1756 
    1857class FFmpegDecoderVideo : public OpenThreads::Thread 
     
    4180private: 
    4281 
    43     typedef boost::shared_ptr<AVFrame> FramePtr; 
    4482    typedef std::vector<uint8_t> Buffer; 
    4583 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegImageStream.cpp

    r9816 r9826  
    122122 
    123123 
    124 void FFmpegImageStream::setAudioSink(osg::ref_ptr<AudioSinkInterface> audio_sink) 
     124void FFmpegImageStream::setAudioSink(osg::AudioSinkInterface* audio_sink) 
    125125{  
    126126    m_decoder->audio_decoder().setAudioSink(audio_sink);  
    127127} 
    128  
    129128 
    130129 
  • OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegImageStream.hpp

    r9816 r9826  
    5454        virtual void quit(bool waitForThreadToExit = true); 
    5555 
    56         void setAudioSink(osg::ref_ptr<AudioSinkInterface> audio_sink); 
     56        virtual void setAudioSink(osg::AudioSinkInterface* audio_sink); 
     57         
    5758        void fillAudioBuffer(void * const buffer, const size_t size); 
    5859