Commit Graph

22 Commits

Author SHA1 Message Date
Julian Winkler
2077dc9406 MediaCodec: initialize audio resampler after the codec sample rate is known 2025-01-28 06:54:31 +01:00
Julian Winkler
ecd5996ad2 MediaCodec: inject SPS and PPS into the first video frame
For some reason, this is required to make livestreams functional
2025-01-28 06:54:31 +01:00
Julian Winkler
68e32eab45 MediaCodec: add mp3 and opus codecs 2025-01-26 22:27:19 +01:00
Julian Winkler
0dfcb9324f drop GTK < 4.14 ifdefs 2024-12-22 23:40:11 +01:00
Julian Winkler
4b36bca4c6 refactor SurfaceViewWidget for frame_callback in the Wayland server
SurfaceViewWidget is now always a child of a GtkGraphicsOffload and
handles the GdkTexture on its own. This way the extra GtkPicture is no
longer needed and also the frame_callback of the Wayland server can be
implemented.
2024-11-17 17:11:14 +01:00
Julian Winkler
5160c33b62 MediaCodec: don't double reference hw_decice_ctx 2024-11-06 23:32:40 +01:00
Julian Winkler
7c9a32d041 MediaCodec: release all output buffers on release
This prevents leaking video memory
2024-11-06 23:32:39 +01:00
Mis012
6560512b47 improve --help output and code style in main.c, use ARRAY_SIZE consistently 2024-09-15 00:42:55 +02:00
Julian Winkler
29e5298178 MediaCodec: handle end-of-file properly 2024-07-31 18:21:14 +02:00
Julian Winkler
9d27fc138b NotificationManager: handle non player part of MPRIS
This exposes the package name to MPRIS and allows to raise the
application to the front when clicking the MPRIS notification.
2024-07-17 22:43:16 +02:00
Julian Winkler
b54bed4784 implementing MediaSession using MPRIS
NotificationManager will now ignore MediaStyle notifications
2024-07-17 22:35:55 +02:00
Julian Winkler
5454d9ed3c MediaCodec: throw IOException for unimplemented codecs
fixes SEGFAULT when libavcodec is built without aac decoder
2024-06-13 20:07:01 +02:00
Julian Winkler
5be3401af5 MediaCodec: fall back to software decoding, if hardware decoding doesn't work 2024-06-13 20:04:37 +02:00
Julian Winkler
f249e1c487 MediaCodec: implement software decoding
The decoding is done by libavcodec, libswscale converts YUV to RGB data, which is
then put into a GtkPicture as GdkMemoryTexture.
2024-06-02 18:12:59 +02:00
Julian Winkler
03887e8c2d MediaCodec: add support for hardware decocders with AV_PIX_FMT_DRM_PRIME
This change should enable hardware decoding using v4l2 m2m, but it
hasn't been tested with v4l2 m2m yet.
2024-06-02 18:06:17 +02:00
Julian Winkler
3cc7070839 MediaCodec: don't access ATL_codec_context in render_frame callback
The ATL_codec_context may have been freed already, when MediaCodec.release() was called
2024-05-13 22:32:48 +02:00
Julian Winkler
d5c2c122fc MediaCodec: make use of GtkGraphicsOffload when gtk >= 4.14
This replaces our custom subsurface implementation and has the
advantages, that the subsurface gets repositioned automatically and it
also supports underlay surfaces, so that the application can put control
widgets on top of the SurfaceView.

Our custom subsurface implementation will still be used for GL rendering
2024-04-13 15:25:39 +02:00
Julian Winkler
b7f06e41c1 implement release() methods in MediaCodec and related classes 2024-02-18 10:08:43 +01:00
Julian Winkler
f107328bf4 MediaCodec: don't use JNI after GetPrimitiveArrayCritical()
this was found, because of having -Xcheck:jni enabled
2024-02-08 14:22:30 +01:00
Mis012
837ad31c3f api-impl-jni/media/android_media_MediaCodec.c: resize the viewport in sync with the dummy widget 2023-11-03 23:21:43 +01:00
Mis012
621cb866c1 api-impl{-jni}: fix code style issues missed during review 2023-10-17 21:57:48 +02:00
Julian Winkler
b340032e9f impement android.media.MediaCodec using libavcodec
The current implementation requires a VA-API driver and a Wayland
compositor with YUV-buffer support. GNOME supports YUV-buffers
since the recent version 45 release
2023-10-14 18:29:33 +02:00