Commit Graph

394 Commits

Author SHA1 Message Date
Nils Hasenbanck c6309d963d Remove video fifo in ffmpeg core.
The video fifo can be removed, since we have a ring buffer in it's
place. This removes unneeded copy operations and as a positive side
improves overall decoding speed.

Makes 8k60p SW and 4k60p HW decoding possible on my system.

For now the ring buffer is 32 images deep. This limitation will
be removed, once audio and video decoder have their own
packet handling.
2019-12-23 16:07:34 +01:00
twinaphex 3033491f3d Turn HAVE_EASTEREGG into HAVE_GONG 2019-12-22 03:08:02 +01:00
twinaphex 923c19356b (ffmpeg) - Fix CXX_BUILD errors - see
https://github.com/ZoneMinder/zoneminder/blob/master/src/zm_ffmpeg.h
(comment on av_err2str)
2019-12-19 20:43:59 +01:00
twinaphex 60b182b821 Promote tpool as libretro-common component 2019-12-18 18:21:03 +01:00
twinaphex 3e8e6d35d6 (tpool.c) Code style nits 2019-12-18 18:11:18 +01:00
Nils Hasenbanck 417d1b7de7 Color space conversion using frame based MT.
Using a ordered ring buffer and a thread pool, the color space
conversion is not multi-threaded based on frames. I tried
to implement slice based threading, but libswscale did produced
highly distorted pictures without obvious reason.

This approach introduces some more "lag" when decoding and skipping,
but shouldn't be affect the user negatively, since movie
watching is not lag sensitive, as long as the A/V is synchronized.

Change default to software decoding.

SW decoding is the most robust and fasted method of decoding right now.
Users should enable hw based decoding if their system requires it
and it's actually beneficial for them.

Fix deadlocks when seeking and decrease RAM usage.

Decrease memory allocation by reusing AVFrames.
2019-12-18 11:46:49 +01:00
Nils Hasenbanck 00f755a822 ffmpeg core implements MT for SW decoding.
This change will activate multi-threading for software based
decoder. Color conversion is still single threaded and also not
being performed by OpenGL.

Since the way ffmpeg inits the HW decoding, we can't 100% valdiate
if a hw decoder will play a file or not. Since we need to know
before calling avcodec_open2() if we want to either multi-thread via
software or HW decode, we will only run single-threaded in case of a
late fallback.

This happens for example in off cases when my AMD vega based graphic
card reports that it could HW decode VP9 video but in reality can't
(which is catched in callback get_format() and after avcodec_open2(().

There is currently no good solution in sight, since we can't
reconfigure the decoding context at that point of time.
2019-12-07 17:45:41 +01:00
Nils Hasenbanck 03b18dbfc4 Disable HW acceleration with ffmpeg 3.4. 2019-12-05 20:11:29 +01:00
Nils Hasenbanck c88f2b31ee Fix ffmpeg core build under linux.
Libass is optional again. This build will also compile with
ffmpeg 3.4 again, but HW acceleration is not guaranteed to work,
since it hasn't been tested well enough.
2019-12-05 19:39:56 +01:00
Nils Hasenbanck 1dbc7cdc9a ffmpeg core prints out the ffmpeg library version
For better debugging and supporting of the users, we will print
out the library versions that the ffmpeg core is currently using.
2019-12-02 18:50:44 +01:00
Nils Hasenbanck 17107a1563 Fix decoder switching and context re-usage.
The re-usage of the decoder context is not properly implemented.
Restart options will only be applied when the core is started.
2019-12-01 12:49:37 +01:00
Nils Hasenbanck c3c2f5bfb6 Implement HW based decoding for the ffmpeg core.
The ffmpeg core not support the usage of HW based video decoders.

Core options to configure the HW decoder to use is provided.
Proper fallback to the SW based decoder is implemented.

Currently the decoder loop in single threaded and is limited by
the color conversion that is done in software.
The frame based threading provided by ffmpeg also currently doesn't
seem to provide any benefits in configuring it.
2019-12-01 12:11:14 +01:00
twinaphex ba74747860 (ffmpeg core) Update Makefile 2019-11-23 22:39:50 +01:00
twinaphex 5d8c566dbc (cores/ffmpeg) Resync 2019-11-19 09:09:52 +01:00
twinaphex 10a234908f Update libretro-ffmpeg Makefile 2019-11-19 09:01:46 +01:00
twinaphex 6d5104f6d7 (Windows/ffmpeg) Standalone Makefile - Don't set it explicitly to gcc/g++ 2019-11-19 08:55:04 +01:00
twinaphex fbdc53f926 Update ffmpeg Makefile.common - see if it changes anything 2019-11-19 08:54:19 +01:00
Tatsuya79 ef216d3010
fix gong crash 2019-09-16 16:27:34 +02:00
orbea 84f4dcba2b Remove WANT_ZLIB. 2019-07-25 11:18:33 -07:00
orbea 043977474e Silence -Wstring-plus-int with clang.
cores/libretro-imageviewer/image_core.c:75:59: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
static const char* IMAGE_CORE_PREFIX(valid_extensions) = 1+ /* to remove the first |, the alternative is 25 extra lines of ifdef/etc */
                                                         ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cores/libretro-imageviewer/image_core.c:75:59: note: use array indexing to silence this warning
1 warning generated.
2019-07-22 12:41:14 -07:00
twinaphex f739a018de file_list in image_core.c should no longer be a public scoped variable 2019-07-12 00:50:34 +02:00
Brad Parker 60e7e5be8d fix some warnings 2019-07-09 22:32:11 -04:00
Twinaphex 5f29660fdd (gong) Silence Unix warning on macOS 2019-06-29 17:34:48 +02:00
Twinaphex 7ea91b4808 Cleanup another unused variable warning 2019-06-26 14:37:42 +02:00
Brad Parker f4346401e2 gong: revert bad cleanup 2019-05-22 01:00:23 -04:00
Brad Parker fa128f950d remove unused functions 2019-04-18 10:35:51 -04:00
Twinaphex d6dfa240c8 Some cleanups 2019-04-08 19:36:44 +02:00
twinaphex cec06a0859 C89 buildfixes 2019-03-24 18:15:26 +01:00
jdgleaver b10901e6b9 Fix 'Multiplication result converted to larger type' alert 2019-03-19 14:42:52 +00:00
jdgleaver a17f0e2136 (RGUI) Allow text to be centred when selecting widescreen layouts 2019-03-19 13:11:00 +00:00
jdgleaver e72c67bf87 (RGUI) Add widescreen support 2019-03-19 11:49:53 +00:00
twinaphex d1dbf6fbe1 * The menu is now able to run at higher refresh rates than 60Hz
* Also added a new environment callback that a core can use to
query the display refresh rate
2019-02-27 04:44:04 +01:00
Brad Parker 477d46d52b update copyright 2019-02-22 19:13:36 -05:00
Brad Parker d319e6a93d gong: savestate support 2019-02-09 22:24:48 -05:00
Brad Parker 3fec3c89fc gong: add Makefile 2019-02-09 22:24:48 -05:00
Brad Parker ce70d8db4c gong: move serialization data into state struct 2019-02-09 16:25:00 -05:00
twinaphex 157494cab7 (gong) Add more refresh rates 2019-02-09 18:10:27 +01:00
Brad Parker b508135218 fix warnings 2019-02-09 10:01:38 -05:00
Brad Parker bf04d658e6 fix warning 2019-02-09 09:59:08 -05:00
Brad Parker c36ddf973c gong: two player support 2019-02-09 09:54:26 -05:00
orbea 25f41809f5 Fix --enable-v4l2 with CXX_BUILD=1. 2019-02-07 16:01:01 -08:00
orbea cb1b7a8006 Better warning fix for 32-bit linux.
Thanks hhromic!
2019-02-07 13:51:57 -08:00
orbea c0296179ac Silence warnings with 32-bit linux. 2019-02-07 13:27:42 -08:00
orbea b9cbc9881a Fix comment. 2019-02-06 11:13:39 -08:00
orbea cf6c49b9a1 Fix c89 build with 32-bit linux. 2019-02-06 10:21:28 -08:00
Tatsuya79 9c32d0df8a
Gong video refresh core option 2019-02-06 17:37:15 +01:00
orbea c9b0ba1123 Fix travis warnings. 2019-02-05 11:27:01 -08:00
orbea 28ff4b391a Clean up white space. 2019-02-03 16:00:50 -08:00
orbea e062b98088 Remove trailing blank lines.
find . -type f -exec sed -i '${/^[[:space:]]*$/d;}' {} \+
2019-01-17 19:39:38 -08:00
orbea bfc366decc Squeeze extra blank lines with cat(1).
Example:

find . -type f -iname '*.c' | while read -r i; do
  cat -s "$i" > "$i.new"
  mv "$i.new" "$i"
done
2019-01-08 11:04:58 -08:00
Tatsuya79 92e2221c2d fix gong scaling (#7907) 2019-01-06 13:10:40 -05:00
Brad Parker bbfbefa9dd easter egg 2019-01-05 18:33:29 -05:00
orbea fb6fe1a87c Makefile: Better respect CFLAGS and CXXFLAGS as environment variables.
This fixes a few subtle problems with passing CFLAGS and CXXFLAGS as
environment variables for configure.

First it will now only add these variables to config.mk when they are
actually set. If they are unset then the default optimizations in the
Makefile are set. This avoids passing more than one conflicting
optimization level to the compiler.

Next all CFLAGS are added to CXXFLAGS to avoid issues with forgetting to
set both CFLAGS and CXXFLAGS. This results in the cxx compiler getting
passed several redundant optimization levels when both the CFLAGS and
CXXFLAGS environment variabls are used. Now these uses of CFLAGS in
Makefile.common are set to DEF_FLAGS. This allows adding $(DEF_FLAGS)
to the CXXFLAGS variable without adding redundant flags from CFLAGS.

v2: Update other build files.
2018-12-30 17:17:19 -08:00
Adriano de Moura Leite 85a3f952b9 Removes the return in the audio callback and restores samplerate to
48khz
2018-11-11 17:44:35 -02:00
Adriano de Moura Leite 0634e38ede Fixes an audio freewheeling situation where a capture card with no
sound capture captabilities would result in an empty audio_handle,
therefore making audio_callback thread spin forever
2018-11-11 04:48:46 -02:00
Adriano de Moura Leite 7b4652ac27 Reverts a change I mistakelny left behind for temporarely disabling the
audio callback, which was causing a freewheeling issue with my setup.
2018-11-11 04:35:21 -02:00
Adriano de Moura Leite 4c67888671 Major improvements to the video processor core.
Supports multiple capture and output modes with deinterlacing
New dummy mode for testing the core even without a capture device
Ability to display frametimes
alternate_hack mode allows capture cards without alternate capture mode
to capture progressive or interlaced inputs at 16ms rather than 33ms
2018-11-11 04:25:51 -02:00
M4xw 6b24ca4632 [LIBNX] Add Static Dummy 2018-09-29 19:36:15 +02:00
Twinaphex 4eb4c7b97d
Create internal_cores.h 2018-07-01 21:19:40 +02:00
twinaphex e3d04fd14a This spams too much, disable this 2018-06-20 07:31:05 +02:00
twinaphex 2367c33887 Mpv integration now works 2018-06-20 06:17:47 +02:00
twinaphex d27b6265a0 Add more HAVE_MPV ifdefs 2018-06-20 04:50:58 +02:00
twinaphex e51d8b6b0f Update mpv-libretro.c 2018-06-20 03:53:37 +02:00
twinaphex f9f15dc5c5 Update mpv libretro core 2018-06-20 03:46:53 +02:00
twinaphex 865fec4282 Update libretro-mpv core - only use dlopen for HAVE_OPENGLES builds 2018-02-23 14:40:31 +01:00
esoptron ebf644f172
Add MIT License to internal Imageviewer core 2018-01-30 10:00:56 -05:00
twinaphex 34a1eb34a9 Update MPV 2018-01-28 13:52:28 +01:00
twinaphex 28d9ba6a05 Add libretro-mpv 2018-01-15 01:38:05 +01:00
Alcaro 99f696abd2 Fix #6009 v3.0 2017-12-31 15:28:10 +01:00
twinaphex 481a140c9c Buildfixes 2017-12-30 13:45:29 +01:00
twinaphex 292d506ed8 Fix more MSVC Griffin build errors 2017-12-30 13:35:47 +01:00
esoptron 2be322acbb
Disable Temporal Interpolation by default in internal FFmpeg core 2017-12-22 17:24:13 -05:00
Alcaro bfeb9ff5c2 that's an interesting double free 2017-12-18 22:29:27 +01:00
Twinaphex 60aa6bf3fb Fix warnings 2017-12-15 20:33:39 +01:00
twinaphex b7eba4b28f Update image_core.c 2017-12-15 19:25:30 +01:00
Alcaro c88e5e08a0 Add VFS support to imageviewer (should get Unicode filenames working on Windows too, even without VFS) 2017-12-15 11:00:02 +01:00
Alcaro 29b9ec0b5e Create this thing because makefile 2017-12-15 10:12:01 +01:00
gblues 6904101c44 Clean up trailing whitespace
== DETAILS

Really simple code cleanup, because my editor flags trailing whitespaces
and it's pretty annoying.
2017-12-12 00:24:18 -08:00
twinaphex b11620e1eb Add retro_timers.h/retro_math.h 2017-06-28 04:41:38 +02:00
twinaphex cacde2b464 (dynamic_dummy.c) Uniquely name frame_buf 2017-06-05 06:53:18 +02:00
twinaphex 7bcffde6c6 Revert "Add this conditional check"
This reverts commit f5fc95cd04.
2017-06-05 06:52:16 +02:00
twinaphex f5fc95cd04 Add this conditional check 2017-06-05 06:50:24 +02:00
twinaphex 08bed1b0a2 (ffmpeg core) Take out gl prefix 2017-05-27 03:28:49 +02:00
twinaphex 94e2570c2f Cleanups 2017-05-27 03:20:47 +02:00
twinaphex defab8842a (FFMPEG FFT) Add 1440p/2160p resolution options 2017-05-22 15:34:33 +02:00
twinaphex 08c7f63074 Revert "Make the framebuffer 32x32"
This reverts commit 51f7f7a22c.
2017-05-02 00:09:36 +02:00
twinaphex 51f7f7a22c Make the framebuffer 32x32 2017-05-02 00:05:34 +02:00
twinaphex b1cf9adfef (dynamic dummy core) Let's not perform this every frame 2017-05-01 23:40:34 +02:00
twinaphex aea00f1e00 Use memcmp instead of string_is_equal for more instances 2017-04-23 12:17:51 +02:00
twinaphex 8defa3b924 Update libretro-ffmpeg 2017-04-22 20:56:59 +02:00
twinaphex 6078864e26 Turn ffmpeg FFT into C code and remove GLM dependency 2017-04-22 12:59:28 +02:00
twinaphex 21f7f6059a (ffmpeg FFT) No longer needs GLM 2017-04-22 12:25:54 +02:00
twinaphex d674d2102e (ffmpeg FFT) Move variable initialization to top 2017-04-22 12:11:42 +02:00
twinaphex 25f31883d5 (libretro ffmpeg FFT) Start using libretro-common gfx/matrix
functions instead of GLM; GLM only used now still for
packHalf2x16
2017-04-22 12:08:10 +02:00
twinaphex a65675d24f (FFT) Swap around matrices arguments for matrix_4x4_multiply 2017-04-22 11:15:41 +02:00
twinaphex 45dc1b7977 Some build fixes 2017-04-22 10:09:52 +02:00
twinaphex dd517f4660 Try to avoid directly calling strcmp 2017-04-21 13:56:15 +02:00
twinaphex 9b3519f850 Turn matrix_4x4_lookat into macro, remove matrix_4x4.c 2017-04-16 07:57:31 +02:00
twinaphex 257410d058 Turn matrix_4x4_multiply into macro 2017-04-16 07:55:02 +02:00
Twinaphex b7b3b2cb5f Try to prevent truckload of warnings on iOS 2017-02-26 10:33:03 +01:00