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

Revision 13720, 1.1 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 SHOWEVENTHANDLER
14#define SHOWEVENTHANDLER 1
15
16#include <osg/StateSet>
17#include <osg/Point>
18
19#include <osgGA/GUIEventHandler>
20
21namespace p3d
22{
23
24class ShowEventHandler : public osgGA::GUIEventHandler
25{
26    public:
27
28        ShowEventHandler();
29
30        virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa, osg::Object* object, osg::NodeVisitor* nv);
31               
32        virtual void accept(osgGA::GUIEventHandlerVisitor& v);
33       
34        virtual void getUsage(osg::ApplicationUsage& usage) const;
35       
36};
37
38}
39
40#endif
Note: See TracBrowser for help on using the browser.