-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfix.patch
30 lines (26 loc) · 1.23 KB
/
fix.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c
index 2aecb45..671fc8c 100644
--- a/libavcodec/cuviddec.c
+++ b/libavcodec/cuviddec.c
@@ -77,6 +77,7 @@ typedef struct CuvidContext
int deint_mode;
int deint_mode_current;
int64_t prev_pts;
+ unsigned char progressive_sequence;
int internal_error;
int decoder_flushing;
@@ -216,6 +217,8 @@ static int CUDAAPI cuvid_handle_video_sequence(void *opaque, CUVIDEOFORMAT* form
? cudaVideoDeinterlaceMode_Weave
: ctx->deint_mode;
+ ctx->progressive_sequence = format->progressive_sequence;
+
if (!format->progressive_sequence && ctx->deint_mode_current == cudaVideoDeinterlaceMode_Weave)
avctx->flags |= AV_CODEC_FLAG_INTERLACED_DCT;
else
@@ -509,6 +512,8 @@ static int cuvid_output_frame(AVCodecContext *avctx, AVFrame *frame)
av_fifo_generic_read(ctx->frame_queue, &parsed_frame, sizeof(CuvidParsedFrame), NULL);
+ parsed_frame.dispinfo.progressive_frame = ctx->progressive_sequence;
+
memset(¶ms, 0, sizeof(params));
params.progressive_frame = parsed_frame.dispinfo.progressive_frame;
params.second_field = parsed_frame.second_field;