4 Commits
V3.30 ... 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
3 changed files with 9 additions and 12 deletions

View File

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

View File

@@ -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.30"
static const char *const VERSION = "3.33"
#ifdef GIT_REV
"-GIT" GIT_REV
#endif

12
video.c
View File

@@ -2893,7 +2893,11 @@ static enum AVPixelFormat Cuvid_get_format(CuvidDecoder *decoder, AVCodecContext
bitformat16 = 1;
}
#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)
#endif
bitformat16 = 1;
#endif
@@ -6099,15 +6103,7 @@ void VideoReleaseSurface(VideoHwDecoder *hw_decoder, unsigned surface) {
///
enum AVPixelFormat Video_get_format(VideoHwDecoder *hw_decoder, AVCodecContext *video_ctx,
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);
}