Andrei Kortunov
1933403400
Migrate videoplayer to OSG logging system
2024-10-18 10:20:22 +04:00
Evil Eye
2dcf1f7ed2
Don't break the read_packet contract
2024-09-17 20:56:04 +02:00
elsid
20e3eeddde
Fix libavformat version check
...
2a68d945cd
added const version of a callback functions but didn't enable them. They were
guarded by a version check:
2a68d945cd/libavformat/version_major.h (L48)
So for anything LIBAVFORMAT_VERSION_MAJOR < 61 they are not enabled therefore
they are enabled for everything >= 61.0.100.
See https://github.com/elsid/openmw/actions/runs/10255993574/job/28374152796 as
example of failure when building with 60.16.100.
2024-08-05 23:52:30 +02:00
Sam Hellawell
61cb5b4da6
Support compiling with ffmpeg 5 and greater
2024-08-03 21:05:00 +01:00
Andrei Kortunov
8af8f331cb
Avoid possible race in videoplayer
2024-01-19 18:47:01 +04:00
elsid
94c1d0cced
Use unique_ptr to store istream
2022-04-22 18:27:17 +02:00
Bret Curtis
6672014a51
make this great again
2022-01-06 15:02:24 +01:00
Bret Curtis
f0db576611
removed redundant get on smart pointer; made pictq_[r|w]index unsigned longs to be type compatible with std::array pictq.size(); fixes assert issue
2022-01-05 12:19:22 +01:00
Bret Curtis
bae8713998
make use of std::array pictq.size()
instead of VIDEO_PICTURE_ARRAY_SIZE; remove redundant smart-pointer .get calls; fix typos
2022-01-05 09:29:10 +01:00
Bret Curtis
4eea734551
Resolves #6088 by rolling our own PacketList that replaces the deprecated AVPacketList; initial work done by akortunov in 60aec04606
; adapted and cleaned up some old cruft along the way.
2022-01-05 09:29:10 +01:00
elsid
7498a86abe
Remove redundant semicolons
2021-07-05 13:11:54 +02:00
Dan Church
70a0229010
Fix future FFMpeg API changes
...
avcodec_find_decoder now returns const AVCodec*.
2021-06-01 10:56:48 -05:00
Evil Eye
54d32817d5
Use av_free and maybe get Coverity to understand
2021-05-19 17:12:41 +02:00
Bret Curtis
66a527c3de
Merge pull request #3075 from akortunov/warnfix
...
Fix MSVC's C4244 and C4267 warnings
2021-05-14 21:28:56 +02:00
Evil Eye
69aaf6ab04
don't touch frame->data
2021-05-13 14:45:13 +02:00
Evil Eye
ed118537a8
use unique_ptr instead
2021-05-13 14:02:36 +02:00
Evil Eye
3b7cef9e88
add PacketGuard and move try/catch up
2021-05-13 12:01:32 +02:00
Evil Eye
1b61ec979d
switch to lock_guards
2021-05-13 11:25:58 +02:00
Andrei Kortunov
963e1b8b3f
Fix MSVC's C4244 warnings
2021-05-12 10:34:40 +04:00
Evil Eye
de37ca8e2c
Catch exceptions in VideoThread
2021-05-10 17:47:57 +02:00
Andrei Kortunov
124a33d8a3
Fix uninitialized variables
2021-04-10 10:58:00 +04:00
Andrei Kortunov
93954a961c
Unlock mutex on return to avoid hang
2021-04-10 09:30:58 +04:00
Gleb Mazovetskiy
1db7d2ec4e
Restore compatibility with FFMpeg < 57.80.100
...
This should fix macOS Travis build broken by 58d33aa95b
2021-03-08 19:29:34 +00:00
Gleb Mazovetskiy
36bac353df
AV: Handle varying video frame dimensions
2021-03-08 04:00:11 +00:00
Gleb Mazovetskiy
58d33aa95b
AV: Fix all memory leaks
...
The most substantial memory leak came from `PacketQueue::get`
not unreferencing its argument packet.
Other leaks came from using `av_free` instead of type-specific free
functions.
Also modifies `PacketQueue::put` for readability.
2021-03-08 03:16:55 +00:00
Gleb Mazovetskiy
eb93fdfbea
Use unique_ptr with custom deleter for VideoPicture::rgbaFrame
2021-03-07 17:58:09 +00:00
Gleb Mazovetskiy
b7076549a3
osg-ffmpeg-videoplayer: Fix crash on ARM
...
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
2021-03-07 03:33:00 +00:00
Andrei Kortunov
8084a336b5
Replace zeroes and nulls by nullptrs
2020-11-29 11:14:07 +04:00
elsid
40ad87bc4d
Replace OpenThreads by std types
2020-06-25 22:16:09 +02:00
Andrei Kortunov
f88d5e808c
Rewrite media decoder to use FFMpeg 3.2+ API (task #4686 )
2018-11-03 22:34:25 +04:00
Ilya Zhuravlev
b4ec8aaf5e
VideoState::queue_picture: ffmpeg expects a buffer of 4 pointers in sws_scale
2018-01-21 12:21:22 -05:00
Bret Curtis
11c4aed4e5
algo needed for std::min/max in msvc2013
2017-06-10 09:09:30 +02:00
Bret Curtis
d785344fad
purge all instances of <boost/shared_ptr.hpp>, clean up unused headers
2017-06-09 19:08:53 +02:00
Bret Curtis
07f75e1104
replace boost::shared_ptr in extern and components
2017-06-09 19:08:53 +02:00
scrawl
530fb61ad0
Use OpenThreads instead of boost thread
...
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
2016-10-10 18:23:06 +02:00
Bret Curtis
2c90b0b78d
fix a few spelling mistakes
2016-04-07 11:55:49 +02:00
Bret Curtis
39f89f967b
from kcat: We can't simply get rid of this, otherwise it may break for certain kinds of packets.
2015-11-12 16:39:29 +01:00
Bret Curtis
8d2990cc03
add support for ffmpeg29 thanks to Andreas Cadhalpun; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=803848
2015-11-12 16:39:29 +01:00
scrawl
e6ecb39d94
Potential include fix
2015-06-04 20:42:05 +02:00
scrawl
60ad568004
Another missing include
2015-06-03 23:55:04 +02:00
scrawl
4d5c446a44
Minor cleanup
2015-06-02 19:36:57 +02:00
scrawl
22f01b1232
Merge branch 'master' of https://github.com/OpenMW/openmw into osg
...
Conflicts:
apps/launcher/graphicspage.cpp
apps/opencs/editor.cpp
apps/opencs/model/doc/document.cpp
apps/opencs/view/render/cell.cpp
apps/opencs/view/render/mousestate.cpp
apps/opencs/view/render/textoverlay.cpp
apps/opencs/view/render/worldspacewidget.cpp
apps/openmw/mwclass/creature.cpp
apps/openmw/mwclass/npc.cpp
apps/openmw/mwgui/inventorywindow.cpp
apps/openmw/mwgui/loadingscreen.cpp
apps/openmw/mwgui/mapwindow.cpp
apps/openmw/mwgui/pickpocketitemmodel.cpp
apps/openmw/mwgui/waitdialog.cpp
apps/openmw/mwmechanics/combat.cpp
apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
apps/openmw/mwrender/globalmap.cpp
apps/openmw/mwworld/physicssystem.cpp
apps/openmw/mwworld/refdata.cpp
apps/openmw/mwworld/scene.cpp
apps/openmw/mwworld/worldimp.cpp
components/sdlutil/sdlinputwrapper.cpp
extern/shiny/Main/Factory.cpp
extern/shiny/Main/MaterialInstance.cpp
extern/shiny/Main/Platform.cpp
extern/shiny/Main/ShaderSet.cpp
2015-05-23 20:33:44 +02:00
scrawl
7a2a7633d5
Fix videoplayer destruction issue that valgrind complained about
2015-05-08 17:11:40 +02:00
scrawl
00f4f78717
Give a name to video streams for logging purposes
2015-05-07 23:08:52 +02:00
scrawl
c53a56ed6e
clear stream errors before attempting the read
2015-04-21 16:10:11 +02:00
scrawl
92ef9b1c57
Rename to osg-ffmpeg-videoplayer
2015-04-19 20:14:06 +02:00