1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-30 12:32:36 +00:00

89 Commits

Author SHA1 Message Date
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
elsid
40cc16046b
Use normalized path for sound decoder 2024-04-19 22:46:38 +02:00
elsid
f184d8f390
Use RAII for AVIOContext, AVFormatContext, AVCodecContext and AVFrame pointers 2024-04-15 20:24:03 +02:00
AnyOldName3
28131fd62b Fixes for a whole bunch of warnings
These warnings were always enabled, but we didn't see them due to https://gitlab.com/OpenMW/openmw/-/issues/7882.
I do not fully understand the cause of 7822 as I can't repro it in a minimal CMake project.

Some of these fixes are thought through.
Some are sensible best guesses.
Some are kind of a stab in the dark as I don't know whether there was a
possible bug the warning was telling me about that I've done nothing to
help by introducing a static_cast.

Nearly all of these warnings were about some kind of narrowing
conversion, so I'm not sure why they weren't firing with GCC and Clang,
which have -Wall -Wextra -pedantic set, which should imply -Wnarrowing,
and they can't have been affected by 7882.

There were also some warnings being triggered from Boost code.
The vast majority of library headers that do questionable things weren't
firing warnings off, but for some reason, /external:I wasn't putting
these Boost headers into external mode.

We need these warnings dealt with one way or another so we can switch
the default Windows CI from MSBuild (which doesn't do ccache) to Ninja
(which does).
I have the necessary magic for that on a branch, but the branch won't
build because of these warnings.
2024-03-14 23:39:33 +00:00
elsid
f1dbd9b959
Fix -Wduplicated-branches warnings 2023-02-04 00:10:30 +01:00
clang-format-bot
ddb0522bbf
Apply clang-format to code base 2022-09-22 21:35:26 +03:00
Dominique Martinet
c5cdb0c277 ffmpeg_decoder: signal EOF/errors on readPacket
openmw with ffmpeg 5 would hang in an infinite loop trying to read at end of
files in avformat_open_input()
avio_read() apparently now no longer handlers 0 as a return value to signal
EOF and we need ot explicitly return AVERROR_EOF; their documentation
explicitely states "For stream protocols, must never return 0 but rather
a proper AVERROR code." for avio_alloc_context's read_context.

Also fix the exception case to return AVERROR_UNKNOWN -- I assume we'd
otherwise get stuck there too, but I don't know what would trigger this
case.

Fixes #6631
2022-06-08 12:33:25 +09:00
Dan Church
70a0229010
Fix future FFMpeg API changes
avcodec_find_decoder now returns const AVCodec*.
2021-06-01 10:56:48 -05:00
Gleb Mazovetskiy
1db7d2ec4e Restore compatibility with FFMpeg < 57.80.100
This should fix macOS Travis build broken by 58d33aa95b729d81c236a587b59352c6a7c7f017
2021-03-08 19:29:34 +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
Andrei Kortunov
8084a336b5 Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
Capostrophic
d1967562a3 Fix the last audio packet getting lost 2019-03-09 21:25:16 +03:00
Bret Curtis
419e7ea5a2
Merge pull request #2035 from akortunov/coverity
Fix many Coverity Scan warnings
2018-11-14 09:44:30 +01:00
Andrei Kortunov
4ee15ddcb9 Fix many Coverity Scan warnings 2018-11-14 11:21:49 +04:00
Andrei Kortunov
d2613e35a2 Fix some Clang 7 warnings 2018-11-09 19:42:59 +04:00
Andrei Kortunov
f88d5e808c Rewrite media decoder to use FFMpeg 3.2+ API (task #4686) 2018-11-03 22:34:25 +04:00
Andrei Kortunov
e06f0b797a Replace all NULLs to nullptr 2018-10-09 10:21:12 +04:00
Andrei Kortunov
5a4d0cec3a Use new logging system for game itself 2018-08-14 23:05:43 +04:00
Andrei Kortunov
2854f6ca83 Handle exception if we try to play non-music file (bug #4416) 2018-06-14 21:32:40 +04:00
Chris Robinson
08e947319a Restore exception throwing to the decoder 2017-12-09 11:00:56 -08:00
Chris Robinson
aecf74e7bb Don't throw exceptions from the audio decoder 2017-12-08 07:00:04 -08:00
Allofich
42402976e3 Fixes for building in MSVC 2017-06-13 19:38:12 +09:00
Ewan Higgs
38a2de3c51 convert std::autor_ptr to std::unique_ptr, originally by Ewan Higgs and updated by Bret Curtis 2017-06-09 16:49:25 +02:00
scrawl
5a939418fc Add missing avcodec_close (Fixes #3741) 2017-02-06 15:49:13 +01:00
scrawl
1739351b7a Remove now unused Sound_Decoder::rewind() 2016-06-27 21:38:04 +02:00
Bret Curtis
3ea3d07d44 really purge libav 2015-11-12 16:39:29 +01:00
scrawl
c53a56ed6e clear stream errors before attempting the read 2015-04-21 16:10:11 +02:00
scrawl
8c7c89a4aa Port SoundManager 2015-04-13 22:48:37 +02:00
dteviot
1d7f3474fa Fixed more MSVC 2013 warnings. 2015-03-15 08:49:03 +13:00
scrawl
fec8cf91f5 Add exception handling to various uses of DataStream::read 2015-01-31 22:40:42 +01:00
Marc Zinnschlag
29c9b6bd01 Merge remote-tracking branch 'scrawl/master' 2014-11-02 10:38:42 +01:00
scrawl
17cb181f88 Use av_get_default_channel_layout for unknown channel layouts 2014-11-01 19:37:54 +01:00
scrawl
efa4d09c48 Fix crash when avcodec_decode_audio4 doesn't return a full frame (Fixes #2088) 2014-11-01 19:32:07 +01:00
Marc Zinnschlag
8b3d876534 Merge remote-tracking branch 'lgro/ffmpeg_decoder' 2014-11-01 10:57:21 +01:00
scrawl
ac067564ea Don't include al.h in decoder classes, format support check will need to be redone later. For now, resample all formats that might not be supported on any hardware. 2014-10-25 20:50:41 +02:00
scrawl
55c9c0a266 Audio resampling fixes
- Don't try to use float audio or extended channel layouts if the hardware does not support them
- Add channel layout resampling support to ffmpeg_decoder
2014-10-25 17:17:57 +02:00
scrawl
b39d69e98c Videoplayer fixes, play/pause & seeking
- Fix rindex overflow
 - Fix audio sample size bugs (was using sample_fmt and channel count of the decoder, instead of the resampled settings). We didn't notice this bug before, because the OpenAL MovieAudioFactory tries to resample to a format of the same byte size.
 - Add support for play/pause and seeking controls (not used by cutscenes in OpenMW)
 - Closing the video when arriving at the stream end is now handled by the user (we may also want to keep the video open and seek back)

The video player now has a standalone demo, at https://github.com/scrawl/ogre-ffmpeg-videoplayer
2014-10-24 21:31:11 +02:00
scrawl
eb1c24ffe6 Refactor video player engine to get rid of MWSound dependencies
- Split video player to separate source files.
 - Move video player engine sources to extern/ (repository will be set up on github soon).
 - Audio is handled in a MovieAudioFactory, implemented by the user (here in MWSound subsystem).
 - Handle conversion of unsupported channel layouts via ffmpeg's swresample.
2014-10-22 22:33:32 +02:00
scrawl
7252cb63a6 Fix cppcheck issues 2014-09-26 17:48:14 +02:00
Lukasz Gromanowski
c72369fafe Simplified casting when comparing to AV_NOPTS_VALUE.
AV_NOPTS_VALUE is casted to int64_t when compared with pts,
so with libavc >= 56.1 it should be no-op because in that version
it's already signed int.

Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
2014-09-21 20:11:03 +02:00
Lukasz Gromanowski
7ad6a94523 Removed a warning about comparision between signed and unsigned variable in ffmpeg_decoder.
Added ifdefs because changes in API were introduced in libavc 56.1
and this code doesn't compile with older versions (ie. on Ubuntu, or Debian)

Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
2014-09-21 16:13:54 +02:00
Lukasz Gromanowski
6987dd768a Removed a warning about comparision between signed and unsigned variable in ffmpeg_decoder.
Signed-off-by: Lukasz Gromanowski <lgromanowski@gmail.com>
2014-09-21 09:52:31 +02:00
cc9cii
1107156334 Workaround incorrectly reported channel_layout 2014-09-12 21:18:54 +10:00
cc9cii
0121fdca2c Don't use C99 in printf. 2014-09-12 10:31:49 +10:00
cc9cii
be74db8b24 Don't use to_string() 2014-09-12 10:04:46 +10:00
cc9cii
ecd9dd81ea Moved debug statements before exception.. 2014-09-12 08:41:33 +10:00
cc9cii
ce3077c970 Test version with debug statements. Also moved some common code out to a separate file. 2014-09-12 08:27:25 +10:00
cc9cii
48a36442c6 Add libswresample and libavresample support for sounds. 2014-09-11 21:15:18 +10:00
bogglez
b56cb7e5ee Remove defunct option for building without FFmpeg
- Added REQUIRED to find_package(FFmpeg)
- Removed USE_FFMPEG option from CMakeLists.txt
- Always use FFmpeg for sound input
- Removed SOUND_DEFINE from CMakeLists.txt
- Removed #else branch from videoplayer.cpp with dummy VideoState code
  (FFmpeg is now guaranteed to exist and the code was incomplete)
- Remove #ifdef OPENMW_USE_FFMPEG in ffmpeg_decoder.cpp, it is guaranteed to be used
- Remove #ifdef OPENMW_USE_FFMPEG from soundmanagerimp.cpp, it is guaranteed to be used
2014-07-28 17:46:41 +02:00