osg-ffmpeg-videoplayer handled frame allocation incorrectly.
It used a `vector<uint8_t>` as its buffer, meaning the addresses could
did not respect alignment.
Instead, changes it to use `AVFrame` as buffers, allocated via `av_image_alloc`.
We also now only allocate the buffer once, instead of on every frame,
which should improve the framerate of videos.
Fixes the following crash on startup on ARM:
> Invalid address alignment (signal 7)
Fixes#5807
This should allow OpenMW to work better with git versions of openscenegraph. OSG dev version 3.5.5 added the setting of thread affinity for the main thread. The problem is that in the boost/standard threading libraries, the affinity of a thread is inherited by any further threads launched from that thread, leading to these threads always running on the same core as the main thread unless you tell them not to.
With OpenThreads, the default affinity of a thread is none, no matter what parent thread it was launched from.
So, when using custom threading with OSG 3.6+, we have these options:
1. explicitely tell OSG to *not* set the thread affinity
or 2. explicitely set the thread affinity of additional threads created (possible with boost, but not possible with std::thread)
or 3. use OpenThreads
or 4. accept the suboptimal performance of non-OSG threads (in OpenMW's case the sound streaming & video threads) running on the same core as the main thread
This patch opts for 3.)
Reference: http://forum.openscenegraph.org/viewtopic.php?t=16158