root/OpenSceneGraph/trunk/applications/present3D/deprecated/PointsEventHandler.h @ 13720

Revision 13720, 1.5 kB (checked in by robert, 3 days ago)

From Javier Taibo,
"I have found a "bug" in the new audio decoding code (actually I think the bug is in ffmpeg, but anyway it should be wise to protect the OSG plug-in about it). I am attaching a security check in FFmpegDecoderAudio.cpp.

If anybody is curious about the problem, it happens sometimes when decoding an AAC audio stream. It eventually includes a PCE block inside the AAC audio frame and then ffmpeg audio decoding function signals a "new_frame" with 1024 samples, but a null pointer instead of the audio data. It can be easily detected because in these cases number of channels is 0. Maybe this is the intended behaviour for ffmpeg, but I find it quite weird.
"

" It seems that libav does not have a channels attribute in AVFrame structure. This new version should do."

  • Property svn:eol-style set to native
Line 
1/* -*-c++-*- Present3D - Copyright (C) 1999-2006 Robert Osfield
2 *
3 * This software is open source and may be redistributed and/or modified under 
4 * the terms of the GNU General Public License (GPL) version 2.0.
5 * The full license is in LICENSE.txt file included with this distribution,.
6 *
7 * This software is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 * include LICENSE.txt for more details.
11*/
12
13#ifndef POINTSEVENTHANDLER
14#define POINTSEVENTHANDLER 1
15
16#include <osg/StateSet>
17#include <osg/Point>
18
19#include <osgGA/GUIEventHandler>
20
21class PointsEventHandler : public osgGA::GUIEventHandler
22{
23    public:
24        PointsEventHandler();
25   
26        virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&);
27       
28        virtual void accept(osgGA::GUIEventHandlerVisitor& v);
29       
30        void getUsage(osg::ApplicationUsage& usage) const;
31       
32        void setStateSet(osg::StateSet* stateset) { _stateset=stateset; }
33       
34        osg::StateSet* getStateSet() { return _stateset.get(); }
35       
36        const osg::StateSet* getStateSet() const { return _stateset.get(); }
37       
38        void setPointSize(float psize);
39
40        float getPointSize() const;
41       
42        void changePointSize(float delta);
43       
44        void changePointAttenuation(float scale);
45
46        osg::ref_ptr<osg::StateSet> _stateset;
47        osg::ref_ptr<osg::Point>    _point;
48
49};
50
51#endif
Note: See TracBrowser for help on using the browser.