From cad3148ea3da5fd389eb5192ec13c668cf4008e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= <Reimar.Doeffinger@gmx.de>
Date: Sat, 22 Nov 2014 23:29:58 +0100
Subject: [PATCH] xface: reduce stack usage by directly storing 2 bytes data
 instead of pointers.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
---
 libavcodec/xfaceenc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavcodec/xfaceenc.c b/libavcodec/xfaceenc.c
index 0ade302c468..7edef1ec726 100644
--- a/libavcodec/xfaceenc.c
+++ b/libavcodec/xfaceenc.c
@@ -74,7 +74,7 @@ static int all_white(char *bitmap, int w, int h)
 }
 
 typedef struct {
-    const ProbRange *prob_ranges[XFACE_PIXELS*2];
+    ProbRange prob_ranges[XFACE_PIXELS*2];
     int prob_ranges_idx;
 } ProbRangesQueue;
 
@@ -82,7 +82,7 @@ static inline int pq_push(ProbRangesQueue *pq, const ProbRange *p)
 {
     if (pq->prob_ranges_idx >= XFACE_PIXELS * 2 - 1)
         return -1;
-    pq->prob_ranges[pq->prob_ranges_idx++] = p;
+    pq->prob_ranges[pq->prob_ranges_idx++] = *p;
     return 0;
 }
 
@@ -147,7 +147,7 @@ static int xface_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
                               const AVFrame *frame, int *got_packet)
 {
     XFaceContext *xface = avctx->priv_data;
-    ProbRangesQueue pq = {{ 0 }, 0};
+    ProbRangesQueue pq = {{{ 0 }}, 0};
     uint8_t bitmap_copy[XFACE_PIXELS];
     BigInt b = {0};
     int i, j, k, ret = 0;
@@ -193,7 +193,7 @@ static int xface_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     encode_block(xface->bitmap + XFACE_WIDTH * 32 + 32, 16, 16, 0, &pq);
 
     while (pq.prob_ranges_idx > 0)
-        push_integer(&b, pq.prob_ranges[--pq.prob_ranges_idx]);
+        push_integer(&b, &pq.prob_ranges[--pq.prob_ranges_idx]);
 
     /* write the inverted big integer in b to intbuf */
     i = 0;
-- 
GitLab