Show
Ignore:
Timestamp:
01/23/15 18:15:20 (4 days ago)
Author:
robert
Message:

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."

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osgDB/ReadFile

    r13041 r13172  
    4444inline osg::Object* readObjectFile(const std::string& filename) 
    4545{ 
    46     return readObjectFile(filename,Registry::instance()->getOptions()); 
    47 } 
     46    return readObjectFile(filename, Registry::instance()->getOptions()); 
     47} 
     48 
     49template<typename T> 
     50inline T* readFile(const std::string& filename, const Options* options) 
     51{ 
     52    osg::ref_ptr<osg::Object> object = readObjectFile(filename, options); 
     53    osg::ref_ptr<T> t = dynamic_cast<T*>(object.get()); 
     54    object = 0;     
     55    return t.release(); 
     56} 
     57 
     58template<typename T> 
     59inline T* readFile(const std::string& filename) 
     60{ 
     61    return readFile<T>(filename, Registry::instance()->getOptions()); 
     62} 
     63 
    4864 
    4965/** Read an osg::Image from file.