db032688df
Convert multimedia/mythtv-frontend to a slave port of multimedia/mythtv which should make future updates much easier. Upstream security patches have been added to address known vulnerabilities in the bundled ffmpeg 3.2. PR: 225652 (initial patches to update to 29.0) [1] Submitted by: <lucylangthorne55@gmail.com> [1] Differential Revision: https://reviews.freebsd.org/D14563
82 lines
3 KiB
Text
82 lines
3 KiB
Text
From da693f8daa62cb76a2aa05021d6c8d53a1b816b2 Mon Sep 17 00:00:00 2001
|
|
From: Paul B Mahol <onemda@gmail.com>
|
|
Date: Sun, 23 Apr 2017 11:53:57 +0200
|
|
Subject: [PATCH] avcodec/dnxhd_parser: fix parsing interlaced video, simplify
|
|
code
|
|
|
|
There appears to be no need to treat interlaced videos differently,
|
|
also that code is flawed, as for at least one input cur_field would
|
|
be always 0.
|
|
|
|
Fixes ticket #6344.
|
|
|
|
Signed-off-by: Paul B Mahol <onemda@gmail.com>
|
|
(cherry picked from commit ac30754a148df58822a272555d1f6f860e42037e)
|
|
---
|
|
libavcodec/dnxhd_parser.c | 14 +-------------
|
|
1 file changed, 1 insertion(+), 13 deletions(-)
|
|
|
|
diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c
|
|
index 4f9bbceeeb5..a1f632a620e 100644
|
|
--- external/FFmpeg/libavcodec/dnxhd_parser.c
|
|
+++ external/FFmpeg/libavcodec/dnxhd_parser.c
|
|
@@ -29,8 +29,6 @@
|
|
|
|
typedef struct {
|
|
ParseContext pc;
|
|
- int interlaced;
|
|
- int cur_field; /* first field is 0, second is 1 */
|
|
int cur_byte;
|
|
int remaining;
|
|
int w, h;
|
|
@@ -56,8 +54,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
|
|
uint64_t state = pc->state64;
|
|
int pic_found = pc->frame_start_found;
|
|
int i = 0;
|
|
- int interlaced = dctx->interlaced;
|
|
- int cur_field = dctx->cur_field;
|
|
|
|
if (!pic_found) {
|
|
for (i = 0; i < buf_size; i++) {
|
|
@@ -65,8 +61,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
|
|
if (ff_dnxhd_check_header_prefix(state & 0xffffffffff00LL) != 0) {
|
|
i++;
|
|
pic_found = 1;
|
|
- interlaced = (state&2)>>1; /* byte following the 5-byte header prefix */
|
|
- cur_field = state&1;
|
|
dctx->cur_byte = 0;
|
|
dctx->remaining = 0;
|
|
break;
|
|
@@ -97,13 +91,11 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
|
|
if (dctx->remaining <= 0)
|
|
return dctx->remaining;
|
|
}
|
|
- if (buf_size - i >= dctx->remaining && (!dctx->interlaced || dctx->cur_field)) {
|
|
+ if (buf_size - i + 47 >= dctx->remaining) {
|
|
int remaining = dctx->remaining;
|
|
|
|
pc->frame_start_found = 0;
|
|
pc->state64 = -1;
|
|
- dctx->interlaced = interlaced;
|
|
- dctx->cur_field = 0;
|
|
dctx->cur_byte = 0;
|
|
dctx->remaining = 0;
|
|
return remaining;
|
|
@@ -120,8 +112,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
|
|
|
|
pc->frame_start_found = 0;
|
|
pc->state64 = -1;
|
|
- dctx->interlaced = interlaced;
|
|
- dctx->cur_field = 0;
|
|
dctx->cur_byte = 0;
|
|
dctx->remaining = 0;
|
|
return remaining;
|
|
@@ -129,8 +119,6 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
|
|
}
|
|
pc->frame_start_found = pic_found;
|
|
pc->state64 = state;
|
|
- dctx->interlaced = interlaced;
|
|
- dctx->cur_field = cur_field;
|
|
return END_NOT_FOUND;
|
|
}
|
|
|