From 45043b9ffca3386766f7ad8ff2cec5595a53406e Mon Sep 17 00:00:00 2001 From: jojo61 Date: Mon, 18 Sep 2023 11:52:03 +0200 Subject: [PATCH] Changes for NVIDIA 535 and more for PIP with placebo --- codec.c | 10 +++++----- softhdcuvid.cpp | 8 +++++++- video.c | 8 +++++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/codec.c b/codec.c index df760f6..ae124c8 100644 --- a/codec.c +++ b/codec.c @@ -307,12 +307,12 @@ void CodecVideoOpen(VideoDecoder *decoder, int codec_id) { #ifdef CUVID if (strcmp(decoder->VideoCodec->long_name, "Nvidia CUVID MPEG2VIDEO decoder") == 0) { // deinterlace for mpeg2 is somehow broken - if (av_opt_set_int(decoder->VideoCtx->priv_data, "deint", deint, 0) < 0) { // adaptive + if (av_opt_set_int(decoder->VideoCtx->priv_data, "deint", 1, 0) < 0) { // adaptive pthread_mutex_unlock(&CodecLockMutex); Fatal(_("codec: can't set option deint to video codec!\n")); } -#if 1 - if (av_opt_set_int(decoder->VideoCtx->priv_data, "surfaces", 9, 0) < 0) { +#if 0 + if (av_opt_set_int(decoder->VideoCtx->priv_data, "surfaces", 13, 0) < 0) { pthread_mutex_unlock(&CodecLockMutex); Fatal(_("codec: can't set option surfces to video codec!\n")); } @@ -558,7 +558,7 @@ next_part: if (decoder->filter) { if (decoder->filter == 1) { if (init_filters(video_ctx, decoder->HwDecoder, frame) < 0) { - Fatal(_("video: Init of YADIF Filter failed\n")); + Debug(3,"video: Init of YADIF Filter failed\n"); decoder->filter = 0; } else { Debug(3, "Init YADIF ok\n"); @@ -876,7 +876,7 @@ static int CodecAudioUpdateHelper(AudioDecoder *audio_decoder, int *passthrough) int err; audio_ctx = audio_decoder->AudioCtx; - Debug(3, "codec/audio: format change %s %dHz *%d channels%s%s%s%s%s\n", + Debug(3, "codec/audio: Chanlayout %lx format change %s %dHz *%d channels%s%s%s%s%s\n",audio_ctx->channel_layout, av_get_sample_fmt_name(audio_ctx->sample_fmt), audio_ctx->sample_rate, audio_ctx->channels, CodecPassthrough & CodecPCM ? " PCM" : "", CodecPassthrough & CodecMPA ? " MPA" : "", CodecPassthrough & CodecAC3 ? " AC-3" : "", CodecPassthrough & CodecEAC3 ? " E-AC-3" : "", diff --git a/softhdcuvid.cpp b/softhdcuvid.cpp index 718d08d..97e8e25 100644 --- a/softhdcuvid.cpp +++ b/softhdcuvid.cpp @@ -61,7 +61,7 @@ extern void ToggleLUT(); /// vdr-plugin version number. /// Makefile extracts the version number for generating the file name /// for the distribution archive. -static const char *const VERSION = "3.12" +static const char *const VERSION = "3.13" #ifdef GIT_REV "-GIT" GIT_REV #endif @@ -723,6 +723,12 @@ class cDummyOsd : public cOsd { public: cDummyOsd(int Left, int Top, uint Level) : cOsd(Left, Top, Level) {} virtual ~cDummyOsd() {} + static void SetOsdPosition(int Left, int Top, int Width, int Height) { + (void) Left; + (void) Top; + (void) Width; + (void) Height; + } virtual cPixmap *CreatePixmap(int Layer, const cRect &ViewPort, const cRect &DrawPort = cRect::Null) { p = new cDummyPixmap(Layer, ViewPort, DrawPort); return p; diff --git a/video.c b/video.c index 369623d..552cc7d 100644 --- a/video.c +++ b/video.c @@ -4151,7 +4151,8 @@ static void CuvidMixVideo(CuvidDecoder *decoder, __attribute__((unused)) int lev if (!pl_render_image(p->renderer, &decoder->pl_frames[current], target, &render_params)) { Debug(4, "Failed rendering frame!\n"); } - // pl_gpu_finish(p->gpu); + if (level) + pl_gpu_finish(p->gpu); // printf("Rendertime %ld -- \n,",GetusTicks() - tt); if (VideoScalerTest) { // left side test scaler @@ -4466,6 +4467,7 @@ static void CuvidDisplayFrame(void) { } } + #ifndef PLACEBO // add osd to surface @@ -6888,10 +6890,10 @@ void VideoSetAbove() { void VideoSetDeinterlace(int mode[VideoResolutionMax]) { #ifdef CUVID VideoDeinterlace[0] = mode[0]; // 576i - VideoDeinterlace[1] = 1; // mode[1]; // 720p + VideoDeinterlace[1] = 0; // mode[1]; // 720p VideoDeinterlace[2] = mode[2]; // fake 1080 VideoDeinterlace[3] = mode[3]; // 1080 - VideoDeinterlace[4] = 1; // mode[4]; 2160p + VideoDeinterlace[4] = 0; // mode[4]; 2160p #else VideoDeinterlace[0] = 1; // 576i VideoDeinterlace[1] = 0; // mode[1]; // 720p