summaryrefslogtreecommitdiffstats
path: root/contrib/ffmpeg/A06-frame-threading-state.patch
blob: fef87b8082a2215d8c9ec0e72772261522b4499f (plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Received: from oboro.libav.org (77.109.144.72) by cas.jetheaddev.com
 (192.168.13.27) with Microsoft SMTP Server id 14.3.195.1; Fri, 22 Aug 2014
 04:13:09 -0700
Received: from oboro.libav.org (localhost [127.0.0.1])	by oboro.libav.org
 (Postfix) with ESMTP id 54F155DBA3;	Fri, 22 Aug 2014 13:13:06 +0200 (CEST)
X-Original-To: libav-commits@libav.org
Delivered-To: libav-commits@libav.org
Received: from localhost (localhost [127.0.0.1]) by oboro.libav.org (Postfix)
 with ESMTP id A5E705DBA3 for <libav-commits@libav.org>; Fri, 22 Aug 2014
 13:13:04 +0200 (CEST)
Received: from oboro.libav.org ([127.0.0.1]) by localhost (oboro.libav.org
 [127.0.0.1]) (amavisd-new, port 10024) with LMTP id q_DABqtOoALY for
 <libav-commits@libav.org>; Fri, 22 Aug 2014 13:13:04 +0200 (CEST)
Received: from aruru.libav.org (aruru.libav.org [77.109.144.70]) by
 oboro.libav.org (Postfix) with ESMTP id 8C8AA5DB88 for
 <libav-commits@libav.org>; Fri, 22 Aug 2014 13:13:04 +0200 (CEST)
Received: by aruru.libav.org (Postfix, from userid 106) id 8436F5DD71; Fri, 22
 Aug 2014 13:13:04 +0200 (CEST)
To: <libav-commits@libav.org>
From: "Janne Grunau " <git@libav.org>
Message-ID: <20140822111304.8436F5DD71@aruru.libav.org>
Date: Fri, 22 Aug 2014 13:13:04 +0200
Subject: [libav-commits] rv34: use ff_mpeg_update_thread_context only when
	decoder is fully initialized
X-BeenThere: libav-commits@libav.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: <libav-devel@libav.org>
List-Id: libav commit notifications <libav-commits.libav.org>
List-Unsubscribe: <https://lists.libav.org/mailman/options/libav-commits>,
 <mailto:libav-commits-request@libav.org?subject=unsubscribe>
List-Archive: <http://lists.libav.org/pipermail/libav-commits/>
List-Post: <mailto:libav-commits@libav.org>
List-Help: <mailto:libav-commits-request@libav.org?subject=help>
List-Subscribe: <https://lists.libav.org/mailman/listinfo/libav-commits>,
 <mailto:libav-commits-request@libav.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: libav-commits-bounces@libav.org
Sender: libav-commits <libav-commits-bounces@libav.org>
Return-Path: libav-commits-bounces@libav.org
X-MS-Exchange-Organization-AuthSource: cas.jetheaddev.com
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Exchange-Organization-PRD: libav.org
X-MS-Exchange-Organization-SenderIdResult: None
Received-SPF: None (cas.jetheaddev.com: libav-commits-bounces@libav.org does
 not designate permitted sender hosts)
X-MS-Exchange-Organization-SCL: 0
X-MS-Exchange-Organization-PCL: 2
X-MS-Exchange-Organization-Antispam-Report: DV:3.3.14004.476;SID:SenderIDStatus None;OrigIP:77.109.144.72
MIME-Version: 1.0

Module: libav
Branch: master
Commit: dc4b2e7d33903a6b9380e8a84b22b3a20facbb08

Author:    Janne Grunau <janne-libav@jannau.net>
Committer: Janne Grunau <janne-libav@jannau.net>
Date:      Thu Aug 21 13:26:33 2014 +0200

rv34: use ff_mpeg_update_thread_context only when decoder is fully initialized

MpegEncContext based decoders are only fully initialized after the first
ff_thread_get_buffer() call. The RV30/40 decoders may fail before a frame
buffer was requested. ff_mpeg_update_thread_context() fails on half
initialized MpegEncContexts. Since this can only happen before a the
first frame was decoded there is no need to call
ff_mpeg_update_thread_context().

Based on patches by John Stebbins and tested by John Stebbins.

CC: libav-stable@libav.org

---

 libavcodec/rv34.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c
index 4ed2a33..26ab7e4 100644
--- a/libavcodec/rv34.c
+++ b/libavcodec/rv34.c
@@ -1555,16 +1555,18 @@ int ff_rv34_decode_update_thread_context(AVCodecContext *dst, const AVCodecConte
             return err;
     }
 
-    if ((err = ff_mpeg_update_thread_context(dst, src)))
-        return err;
-
     r->cur_pts  = r1->cur_pts;
     r->last_pts = r1->last_pts;
     r->next_pts = r1->next_pts;
 
     memset(&r->si, 0, sizeof(r->si));
 
-    return 0;
+    // Do no call ff_mpeg_update_thread_context on a partially initialized
+    // decoder context.
+    if (!s1->linesize)
+        return 0;
+
+    return ff_mpeg_update_thread_context(dst, src);
 }
 
 static int get_slice_offset(AVCodecContext *avctx, const uint8_t *buf, int n)

_______________________________________________
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits