Cameron Gutman
80128e8293
Properly support asynchronous decoders that return multiple frames at a time
2021-12-11 18:15:49 -06:00
Cameron Gutman
3e9aea1f7a
Optimize CUDA support to avoid roundtrip to CPU memory
2021-12-06 18:23:40 -06:00
Cameron Gutman
56119eebae
Adapt to constification of AVCodec in FFmpeg master
2021-05-24 23:27:31 -05:00
Cameron Gutman
c17c8e2a2c
Remove receive time from performance overlay
...
It is largely superseded by network latency
2021-05-22 13:59:14 -05:00
Cameron Gutman
e45a60f2ed
Save RTT in VIDEO_STATS so it can be logged on disconnect
2021-05-22 13:57:12 -05:00
Cameron Gutman
581c9438ca
Add network latency to stats overlay
2021-05-15 14:40:31 -05:00
Cameron Gutman
8fcef63890
Don't waste time performing extra decoder initializations for EGL when it's not supported
2021-04-30 20:52:09 -05:00
Cameron Gutman
e74753bec1
Allow fallback from EGL to direct on EGLImage export failure
2021-03-22 22:51:29 -05:00
Cameron Gutman
96f79688dd
Use av_packet_alloc() instead of av_init_packet()
...
sizeof(AVPacket) may be deprecated from ABI in the near future
2021-03-05 17:47:04 -06:00
Cameron Gutman
d63a1b0eb0
Handle custom hwaccel decoders
2021-02-02 19:45:22 -06:00
Cameron Gutman
88391b0274
Use the decoder's supported pix_fmts to select a suitable renderer
2021-02-02 19:05:27 -06:00
Cameron Gutman
cedba501ee
Query the frontend renderer to determine fullscreen-only limitations
2021-01-30 17:57:34 -06:00
Cameron Gutman
541784382a
Add support for AV_HWDEVICE_TYPE_DRM hwaccels
2021-01-30 10:00:01 -06:00
Cameron Gutman
2a7fae2c82
Revert "Add logic to try LibreELEC's out-of-tree stateless V4L2 decoders"
...
v4l2request is a hwaccel not a decoder
This reverts commit ed3a5448b1
.
2021-01-29 20:30:01 -06:00
Cameron Gutman
ed3a5448b1
Add logic to try LibreELEC's out-of-tree stateless V4L2 decoders
2021-01-29 20:19:27 -06:00
Cameron Gutman
390544cd9a
Charge time spent in the decode unit queue to the decoder rather than receive time
2020-12-31 16:10:01 -06:00
Cameron Gutman
5a7a49d1d5
Display resolution and codec in OSD
2020-08-20 20:52:05 -07:00
Cameron Gutman
586a93d7aa
Use the new EGL renderer for VAAPI by default
2020-06-13 20:21:54 -07:00
Cameron Gutman
728377cba3
Set AV_PKT_FLAG_KEY for key frames
2020-05-25 18:31:19 -07:00
Antoine Damhet
0a396f3112
Introduce a new FFMPEG frontend renderer: EGLRenderer
...
Right now this renderer works on X11 & Wayland with VAAPI as a backend.
Some rendering latency benchmarks on my `i7-10510U` (with
`intel-media-driver` 20.1.1 which cause a *huge* regression with the
SDL_Renderer):
| | X11 | Wayland |
| Before | 6.78ms | 22.50ms |
| EGLRenderer | 0.76ms | 00.77ms |
Signed-off-by: Antoine Damhet <antoine.damhet@lse.epita.fr>
2020-05-12 11:11:35 +02:00
Cameron Gutman
979de190dc
Cap resolution options at 1080p on Steam Link and Raspberry Pi due to hardware limitations
2020-02-23 00:43:43 -08:00
Cameron Gutman
57a1c5eb76
Disable the window mode options for always full-screen renderers
2020-02-09 11:35:05 -08:00
Cameron Gutman
529fdf0341
Add decoder options dictionary to prepareDecoderContext()
2020-02-08 17:47:26 -08:00
Cameron Gutman
4794f44a6d
Charge decoders for time spent holding on to frames
2020-01-26 20:15:11 -08:00
Cameron Gutman
f0119b1231
Add support for the out-of-tree Jetson FFmpeg NVMPI decoders
...
https://github.com/jocover/jetson-ffmpeg
2020-01-26 19:16:03 -08:00
Cameron Gutman
4c579aa826
Provide another frame if avcodec_receive_frame() returns EAGAIN
2020-01-26 15:36:22 -08:00
Cameron Gutman
b9463b3c0e
Allow NV12 and NV21 to be selected for non-hwaccel decoders using the SDL renderer
2020-01-26 15:02:29 -08:00
Cameron Gutman
cede6ce8a9
Add H264_DECODER_HINT and HEVC_DECODER_HINT envvars to specify a decoder manually
2020-01-26 14:40:48 -08:00
Cameron Gutman
956e6e3638
Avoid slicing for hardware decoders that use SDL as the renderer
2020-01-26 14:13:42 -08:00
Cameron Gutman
2e0bd2ec28
Invoke avcodec_receive_frame() during decoder testing
2020-01-15 18:09:59 -08:00
Cameron Gutman
5aed8f928a
Add V4L2M2M support using SDL renderer
...
Note: This requires FFmpeg master to work, since it depends on:
https://github.com/FFmpeg/FFmpeg/commit/d61cf1b1ebc2477749d7d7825a072400ed24af9
2020-01-10 20:52:16 -08:00
Cameron Gutman
160684f23e
Allow decoders to choose a desired colorspace
2019-12-14 15:25:56 -08:00
Cameron Gutman
de7b973239
Plumb presentation time from server into AVFrame.pts field
2019-11-11 18:03:47 -08:00
Cameron Gutman
f8621be5ee
Add an HEVC Main10 test frame
2019-11-05 17:08:25 -08:00
Cameron Gutman
5db5a088ea
Fix NVDEC artifacts if the renderer is delayed for a bit
2019-08-01 20:25:58 -07:00
Cameron Gutman
1c225ed04d
Use CUDA acceleration if other hwaccels are unavailable
2019-06-26 21:54:29 -07:00
Cameron Gutman
18d1d35104
Use QByteArray::reserve() rather than reallocating each time we must resize
2019-05-02 22:54:18 -07:00
Cameron Gutman
dba479774b
Add DRM renderer for Rockchip devices
2019-04-21 05:22:37 +00:00
Cameron Gutman
d65e29111f
Fix some codec selection bugs
2019-04-19 20:57:21 -07:00
Cameron Gutman
1dfca525cf
Refactor renderer initialization to reduce duplication and inconsistency
2019-04-18 20:02:14 -07:00
Cameron Gutman
e51ad1a68a
Fix use-after-free due to stale m_FrontendRenderer pointer. Fixes #214
2019-04-18 19:26:13 -07:00
Cameron Gutman
9c76700f74
Add MMAL renderer for Raspberry Pi
2019-04-16 01:20:21 -07:00
Cameron Gutman
773b1af6f1
Minor refactoring in preparation for non-hwaccel decoder support
2019-04-15 21:56:01 -07:00
Cameron Gutman
b8b633a6cc
Use SDL to render on Wayland for VAAPI
2019-04-12 22:54:21 -07:00
Cameron Gutman
25e5175c54
Refactor parameter passing to decoders and split backend/decode-only and frontend renderers
2019-04-11 22:27:20 -07:00
Cameron Gutman
00a1948b73
Treat AV_CODEC_CAP_HARDWARE codecs as hardware accelerated too
2019-04-09 21:50:22 -07:00
Cameron Gutman
859a5a5e0c
Allow a renderer to opt-out of the render thread and use that for SDL on OGL
2019-04-09 21:46:14 -07:00
Cameron Gutman
2d7dcb495c
Remove CAPABILITY_DIRECT_SUBMIT for the video decoder because it can block for significant time periods when D3D9 is reconfiguring display settings (and holding the D3D global lock)
...
This can cause false reports of packet loss.
2019-03-29 23:38:23 -07:00
Cameron Gutman
a1956350b1
Rename pacing drop to jitter drop to be less confusing for users
2019-02-16 23:04:25 -08:00
Cameron Gutman
b1fb3f2391
Set FFmpeg log level at debug until first frame is rendered
2019-02-13 18:34:59 -08:00