Show
Ignore:
Timestamp:
01/23/15 18:15:20 (2 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/osgQt/GraphicsWindowQt.cpp

    r14009 r14044  
    249249    const QSize& size = event->size(); 
    250250 
    251     _gw->resized( x(), y(), size.width()*_devicePixelRatio, size.height()*_devicePixelRatio ); 
    252     _gw->getEventQueue()->windowResize( x(), y(), size.width()*_devicePixelRatio, size.height()*_devicePixelRatio ); 
     251    int scaled_width = static_cast<int>(size.width()*_devicePixelRatio); 
     252    int scaled_height = static_cast<int>(size.height()*_devicePixelRatio); 
     253    _gw->resized( x(), y(), scaled_width,  scaled_height); 
     254    _gw->getEventQueue()->windowResize( x(), y(), scaled_width, scaled_height ); 
    253255    _gw->requestRedraw(); 
    254256} 
     
    257259{ 
    258260    const QPoint& pos = event->pos(); 
    259     _gw->resized( pos.x(), pos.y(), width()*_devicePixelRatio, height()*_devicePixelRatio ); 
    260     _gw->getEventQueue()->windowResize( pos.x(), pos.y(), width()*_devicePixelRatio, height()*_devicePixelRatio ); 
     261    int scaled_width = static_cast<int>(width()*_devicePixelRatio); 
     262    int scaled_height = static_cast<int>(height()*_devicePixelRatio); 
     263    _gw->resized( pos.x(), pos.y(), scaled_width,  scaled_height ); 
     264    _gw->getEventQueue()->windowResize( pos.x(), pos.y(), scaled_width,  scaled_height ); 
    261265} 
    262266