diff -Nru vdr-plugin-softhddevice-vaapi-2.1.2/README.txt vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/README.txt --- vdr-plugin-softhddevice-vaapi-2.1.2/README.txt 2024-03-16 13:58:05.000000000 +0000 +++ vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/README.txt 2024-04-30 10:20:14.000000000 +0000 @@ -16,7 +16,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. -$Id: 64693160868823ac99196742733fce813569ab85 $ +$Id: 373d288c3602207891497d3cf5393cdc57e7cd43 $ A software and GPU emulated UHD output device plugin for VDR. Only 8-bit output now. @@ -360,6 +360,8 @@ @softhddevice Blue 2 3 disable auto-crop @softhddevice Blue 2 4 enable auto-crop @softhddevice Blue 2 5 toggle auto-crop + @softhddevice Blue 2 6 suspend + @softhddevice Blue 2 7 resume @softhddevice Blue 3 0 stretch 4:3 to 16:9 @softhddevice Blue 3 1 letter box 4:3 in 16:9 @softhddevice Blue 3 2 center cut-out 4:3 to 16:9 diff -Nru vdr-plugin-softhddevice-vaapi-2.1.2/audio.c vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/audio.c --- vdr-plugin-softhddevice-vaapi-2.1.2/audio.c 2024-03-16 13:58:05.000000000 +0000 +++ vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/audio.c 2024-04-30 10:20:14.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: d4bcd076850ab43cf7966342c0fb64f221f88e54 $ +/// $Id: 21ca6718071cdf664c558ff159e9bce4821fa358 $ ////////////////////////////////////////////////////////////////////////////// /// @@ -2426,6 +2426,13 @@ if (remain <= AUDIO_MIN_BUFFER_FREE) { Debug(3, "audio: force start\n"); } + // forced start if no video module + if (!strcasecmp(VideoGetDriverName(), "noop")) { + Debug (3,"audio: start with noop video module\n"); + AudioRunning=1; + AudioStarted=1; + pthread_cond_signal(&AudioStartCond); + } if ((AudioStartThreshold * 4 < n && VideoSoftStartSync < 2) || remain <= AUDIO_MIN_BUFFER_FREE || // early audio ((AudioVideoIsReady || !SoftIsPlayingVideo) && AudioStartThreshold < n && (!AudioSkip || VideoSoftStartSync < 2))) { // enough audio, early audio diff -Nru vdr-plugin-softhddevice-vaapi-2.1.2/debian/changelog vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/debian/changelog --- vdr-plugin-softhddevice-vaapi-2.1.2/debian/changelog 2024-03-20 12:18:53.000000000 +0000 +++ vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/debian/changelog 2024-04-30 21:43:03.000000000 +0000 @@ -1,3 +1,9 @@ +vdr-plugin-softhddevice-vaapi (1:2.1.2+git20240430-0easyVDR0~focal) focal; urgency=medium + + * new upstream snapshot + + -- Wolfi Mangold Tue, 30 Apr 2024 23:43:03 +0200 + vdr-plugin-softhddevice-vaapi (1:2.1.2-0easyVDR0~focal) focal; urgency=medium * new upstream release diff -Nru vdr-plugin-softhddevice-vaapi-2.1.2/softhddevice.cpp vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/softhddevice.cpp --- vdr-plugin-softhddevice-vaapi-2.1.2/softhddevice.cpp 2024-03-16 13:58:05.000000000 +0000 +++ vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/softhddevice.cpp 2024-04-30 21:29:23.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: 4a655171e9fbb2f65182d545990a5127ffe45635 $ +/// $Id: a6cb3d3636225d1d0da26239b357e6a1e9ed1026 $ ////////////////////////////////////////////////////////////////////////////// #define __STDC_CONSTANT_MACROS ///< needed for ffmpeg UINT64_C @@ -2571,6 +2571,40 @@ tr("auto-crop disabled and freezed")); } break; + case 26: // suspend + if (cSoftHdControl::Player) { // already suspended + break; + } + if (SuspendMode != NOT_SUSPENDED) { + break; + } + cControl::Launch(new cSoftHdControl); + cControl::Attach(); +#ifdef USE_OPENGLOSD + dsyslog("[softhddev]stopping Ogl Thread SUSP"); + cSoftOsdProvider::StopOpenGlThread(); +#endif + Suspend(ConfigSuspendClose, ConfigSuspendClose, ConfigSuspendX11); + SuspendMode = SUSPEND_NORMAL; + //system("systemctl stop X"); + break; + case 27: // resume + //system("systemctl start X"); + if (SuspendMode == NOT_SUSPENDED) { + break; + } + if (SuspendMode != SUSPEND_NORMAL) { + break; + } + if (ShutdownHandler.GetUserInactiveTime()) { + ShutdownHandler.SetUserInactiveTimeout(); + } + if (cSoftHdControl::Player) { // suspended + cControl::Shutdown(); // not need, if not suspended + } + Resume(); + SuspendMode = NOT_SUSPENDED; + break; case 30: // change 4:3 -> window mode case 31: case 32: @@ -4033,18 +4067,30 @@ " 11: enable audio pass-through\n" " 12: toggle audio pass-through\n" " 13: decrease audio delay by 10ms\n" - " 14: increase audio delay by 10ms\n" " 15: toggle ac3 mixdown\n" + " 14: increase audio delay by 10ms\n" + " 15: toggle ac3 mixdown\n" " 20: disable fullscreen\n\040 21: enable fullscreen\n" " 22: toggle fullscreen\n" " 23: disable auto-crop\n\040 24: enable auto-crop\n" " 25: toggle auto-crop\n" + " 26: suspend\n" + " 27: resume\n" " 30: stretch 4:3 to display\n\040 31: pillar box 4:3 in display\n" " 32: center cut-out 4:3 to display\n" " 39: rotate 4:3 to display zoom mode\n" " 40: stretch other aspect ratios to display\n" " 41: letter box other aspect ratios in display\n" " 42: center cut-out other aspect ratios to display\n" - " 49: rotate other aspect ratios to display zoom mode\n", + " 49: rotate other aspect ratios to display zoom mode\n" +#ifdef USE_PIP + " 102: toggle Pip\n" + " 104: Pip next available channel +\n" + " 105: Pip next available channel -\n" + " 106: Swap Pip channels\n" + " 107: Swap Pip position\n" + " 108: Close Pip\n" +#endif + , "STAT\n" "\040 Display SuspendMode of the plugin.\n\n" " reply code is 910 + SuspendMode\n" " SUSPEND_EXTERNAL == -1 (909)\n" diff -Nru vdr-plugin-softhddevice-vaapi-2.1.2/video.c vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/video.c --- vdr-plugin-softhddevice-vaapi-2.1.2/video.c 2024-03-16 13:58:05.000000000 +0000 +++ vdr-plugin-softhddevice-vaapi-2.1.2+git20240430/video.c 2024-04-30 10:20:14.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: 15fa55e2d02b2cbd96891267f29cf0f5aaa82ad5 $ +/// $Id: d258a17c479df437270f73dfef05168ac3146935 $ ////////////////////////////////////////////////////////////////////////////// /// @@ -1980,11 +1980,19 @@ if (eglGetCurrentContext()) { // if currently used, set to none eglMakeCurrent(EglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + EglCheck(); + } + + if (EglThreadContext) { + eglDestroyContext(EglDisplay, EglThreadContext); + EglCheck(); + EglThreadContext = NULL; } if (EglSharedContext) { eglDestroyContext(EglDisplay, EglSharedContext); EglCheck(); + EglSharedContext = NULL; } if (EglContext) { @@ -1993,11 +2001,16 @@ EglContext = NULL; } + if (EglSurface) { + eglDestroySurface(EglDisplay, EglSurface); + EglCheck(); + EglSurface = NULL; + } + eglTerminate(EglDisplay); + EglDisplay = NULL; - if (OsdGlTexture) - OsdGlTexture = 0; - EglThreadContext = NULL; + OsdGlTexture = 0; } #endif @@ -3504,6 +3517,7 @@ } if (!GlxEnabled) { Error(_("video/glx: glx error\n")); + return 0; } return VaapiInit(display_name); @@ -3531,6 +3545,7 @@ } if (!EglEnabled) { Error(_("video/egl: eglx error\n")); + return 0; } return VaapiInit(display_name); @@ -3563,7 +3578,7 @@ lastWindowWidth = 0; lastWindowHeight = 0; - if (!VaDisplay) { + if (VaDisplay) { vaTerminate(VaDisplay); VaDisplay = NULL; }