5 Commits
V3.29 ... V3.33

Author SHA1 Message Date
jojo61
9682e5f9a3 Update Version 2025-10-19 15:36:06 +02:00
jojo61
22faf96cf2 Support FFMPEG Version 8.1 2025-10-19 15:34:28 +02:00
jojo61
f902347cc3 Honor Interlaced Flag. But not for SD Content 2025-05-07 13:38:38 +02:00
jojo61
4c48e91156 Reverse trust on interlace flag 2025-03-18 15:31:57 +01:00
jojo61
eb94d75584 Remove MainThreadHook 2025-03-01 14:22:06 +01:00
5 changed files with 9 additions and 42 deletions

View File

@@ -488,8 +488,9 @@ void CodecVideoDecode(VideoDecoder *decoder, const AVPacket *avpkt) {
return; return;
} }
if (ret >= 0) { if (ret >= 0) {
//printf("Videosize %d:%d ttf %d\n",frame->width,frame->height,frame->interlaced_frame); //printf("Videosize %d:%d interlaced %d Flag %x\n",frame->width,frame->height,frame->interlaced_frame,frame->flags & AV_FRAME_FLAG_INTERLACED);
if ((frame->flags & AV_FRAME_FLAG_INTERLACED) && decoder->filter) { if (((frame->flags & AV_FRAME_FLAG_INTERLACED) || (frame->height == 576)) && decoder->filter) {
//if ( decoder->filter) {
if (decoder->filter == 1) { if (decoder->filter == 1) {
if (init_filters(video_ctx, decoder->HwDecoder, frame) < 0) { if (init_filters(video_ctx, decoder->HwDecoder, frame) < 0) {
Debug(3, "video: Init of VAAPI deint Filter failed\n"); Debug(3, "video: Init of VAAPI deint Filter failed\n");
@@ -560,7 +561,7 @@ next_part:
// printf("video frame pts %#012" PRIx64 " // printf("video frame pts %#012" PRIx64 "
//%dms\n",frame->pts,(int)(apts - frame->pts) / 90); //%dms\n",frame->pts,(int)(apts - frame->pts) / 90);
#ifdef YADIF #ifdef YADIF
if ((frame->flags & AV_FRAME_FLAG_INTERLACED) && decoder->filter) { if (((frame->flags & AV_FRAME_FLAG_INTERLACED) || (frame->height == 576)) && decoder->filter) {
if (decoder->filter == 1) { if (decoder->filter == 1) {
if (init_filters(video_ctx, decoder->HwDecoder, frame) < 0) { if (init_filters(video_ctx, decoder->HwDecoder, frame) < 0) {
Debug(3,"video: Init of YADIF Filter failed\n"); Debug(3,"video: Init of YADIF Filter failed\n");

View File

@@ -61,7 +61,7 @@ extern void ToggleLUT();
/// vdr-plugin version number. /// vdr-plugin version number.
/// Makefile extracts the version number for generating the file name /// Makefile extracts the version number for generating the file name
/// for the distribution archive. /// for the distribution archive.
static const char *const VERSION = "3.29" static const char *const VERSION = "3.33"
#ifdef GIT_REV #ifdef GIT_REV
"-GIT" GIT_REV "-GIT" GIT_REV
#endif #endif
@@ -2960,7 +2960,6 @@ class cPluginSoftHdDevice : public cPlugin {
virtual bool Start(void); virtual bool Start(void);
virtual void Stop(void); virtual void Stop(void);
virtual void Housekeeping(void); virtual void Housekeeping(void);
virtual void MainThreadHook(void);
virtual const char *MainMenuEntry(void); virtual const char *MainMenuEntry(void);
virtual cOsdObject *MainMenuAction(void); virtual cOsdObject *MainMenuAction(void);
virtual cMenuSetupPage *SetupMenu(void); virtual cMenuSetupPage *SetupMenu(void);
@@ -3129,21 +3128,6 @@ cOsdObject *cPluginSoftHdDevice::MainMenuAction(void) {
return new cSoftHdMenu("SoftHdDevice"); return new cSoftHdMenu("SoftHdDevice");
} }
/**
** Called for every plugin once during every cycle of VDR's main program
** loop.
*/
void cPluginSoftHdDevice::MainThreadHook(void) {
// dsyslog("[softhddev]%s:\n", __FUNCTION__);
if (DoMakePrimary) {
dsyslog("[softhddev]%s: switching primary device to %d\n", __FUNCTION__, DoMakePrimary);
cDevice::SetPrimaryDevice(DoMakePrimary);
DoMakePrimary = 0;
}
::MainThreadHook();
}
/** /**
** Return our setup menu. ** Return our setup menu.

View File

@@ -3211,18 +3211,6 @@ void Housekeeping(void) {
} }
} }
/**
** Main thread hook, periodic called from main thread.
*/
void MainThreadHook(void) {
if (Usr1Signal) { // x11 server ready
// FIYME: x11 server keeps sending sigusr1 signals
signal(SIGUSR1, SIG_IGN); // ignore further signals
Usr1Signal = 0;
StartVideo();
VideoDisplayWakeup();
}
}
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// Suspend/Resume // Suspend/Resume

View File

@@ -86,8 +86,6 @@ extern int Start(void);
extern void Stop(void); extern void Stop(void);
/// C plugin house keeping /// C plugin house keeping
extern void Housekeeping(void); extern void Housekeeping(void);
/// C plugin main thread hook
extern void MainThreadHook(void);
/// Suspend plugin /// Suspend plugin
extern void Suspend(int, int, int); extern void Suspend(int, int, int);

12
video.c
View File

@@ -2893,7 +2893,11 @@ static enum AVPixelFormat Cuvid_get_format(CuvidDecoder *decoder, AVCodecContext
bitformat16 = 1; bitformat16 = 1;
} }
#ifdef VAAPI #ifdef VAAPI
#if (LIBAVCODEC_VERSION_INT > AV_VERSION_INT(62, 11, 100))
if (video_ctx->profile == AV_PROFILE_HEVC_MAIN_10)
#else
if (video_ctx->profile == FF_PROFILE_HEVC_MAIN_10) if (video_ctx->profile == FF_PROFILE_HEVC_MAIN_10)
#endif
bitformat16 = 1; bitformat16 = 1;
#endif #endif
@@ -6099,15 +6103,7 @@ void VideoReleaseSurface(VideoHwDecoder *hw_decoder, unsigned surface) {
/// ///
enum AVPixelFormat Video_get_format(VideoHwDecoder *hw_decoder, AVCodecContext *video_ctx, enum AVPixelFormat Video_get_format(VideoHwDecoder *hw_decoder, AVCodecContext *video_ctx,
const enum AVPixelFormat *fmt) { const enum AVPixelFormat *fmt) {
#ifdef DEBUG
int ms_delay;
// FIXME: use frame time
ms_delay = (1000 * video_ctx->time_base.num * video_ctx->ticks_per_frame) / video_ctx->time_base.den;
Debug(3, "video: ready %s %2dms/frame %dms\n", Timestamp2String(VideoGetClock(hw_decoder)), ms_delay,
GetMsTicks() - VideoSwitch);
#endif
return VideoUsedModule->get_format(hw_decoder, video_ctx, fmt); return VideoUsedModule->get_format(hw_decoder, video_ctx, fmt);
} }