Show
Ignore:
Timestamp:
01/23/15 18:15:20 (3 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/src/osgPlugins/ive/DataInputStream.cpp

    r13041 r13502  
    588588    char c = readChar(); 
    589589 
    590     if (_verboseOutput) std::cout<<"read/writeBinding() ["<<(int)c<<"]"<<std::endl; 
     590    if (_verboseOutput) std::cout<<"readBinding() ["<<(int)c<<"]"<<std::endl; 
    591591 
    592592    switch((int)c){ 
    593593        case 0:    return osg::Geometry::BIND_OFF; 
    594594        case 1: return osg::Geometry::BIND_OVERALL; 
    595         case 2: return osg::Geometry::BIND_PER_PRIMITIVE; 
     595        case 2: return 3 /*osg::Geometry::BIND_PER_PRIMITIVE*/; 
    596596        case 3: return osg::Geometry::BIND_PER_PRIMITIVE_SET; 
    597597        case 4: return osg::Geometry::BIND_PER_VERTEX;