1 
2 #include "FFmpegAudioStream.hpp"
3 
4 #include <OpenThreads/ScopedLock>
5 #include <osg/Notify>
6 
7 #include "FFmpegDecoder.hpp"
8 #include "MessageQueue.hpp"
9 
10 #include <memory>
11 
12 
13 
14 namespace osgFFmpeg {
15 
16 
17 
FFmpegAudioStream(FFmpegDecoder * decoder)18 FFmpegAudioStream::FFmpegAudioStream(FFmpegDecoder* decoder):
19     m_decoder(decoder)
20 {
21 }
22 
23 
24 
FFmpegAudioStream(const FFmpegAudioStream & audio,const osg::CopyOp & copyop)25 FFmpegAudioStream::FFmpegAudioStream(const FFmpegAudioStream & audio, const osg::CopyOp & copyop) :
26     osg::AudioStream(audio, copyop)
27 {
28 }
29 
~FFmpegAudioStream()30 FFmpegAudioStream::~FFmpegAudioStream()
31 {
32     // detact the audio sink first to avoid destrction order issues.
33     setAudioSink(0);
34 }
35 
setAudioSink(osg::AudioSink * audio_sink)36 void FFmpegAudioStream::setAudioSink(osg::AudioSink* audio_sink)
37 {
38     OSG_NOTICE<<"FFmpegAudioStream::setAudioSink( "<<audio_sink<<")"<<std::endl;
39     m_decoder->audio_decoder().setAudioSink(audio_sink);
40 }
41 
42 
consumeAudioBuffer(void * const buffer,const size_t size)43 void FFmpegAudioStream::consumeAudioBuffer(void * const buffer, const size_t size)
44 {
45     m_decoder->audio_decoder().fillBuffer(buffer, size);
46 }
47 
duration() const48 double FFmpegAudioStream::duration() const
49 {
50     return m_decoder->duration();
51 }
52 
53 
54 
audioFrequency() const55 int FFmpegAudioStream::audioFrequency() const
56 {
57     return m_decoder->audio_decoder().frequency();
58 }
59 
60 
61 
audioNbChannels() const62 int FFmpegAudioStream::audioNbChannels() const
63 {
64     return m_decoder->audio_decoder().nbChannels();
65 }
66 
67 
68 
audioSampleFormat() const69 osg::AudioStream::SampleFormat FFmpegAudioStream::audioSampleFormat() const
70 {
71     return m_decoder->audio_decoder().sampleFormat();
72 }
73 
74 
75 } // namespace osgFFmpeg
76