diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2014-11-22 23:29:58 +0100 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2014-11-23 06:51:18 +0100 |
commit | cad3148ea3da5fd389eb5192ec13c668cf4008e1 (patch) | |
tree | 6f9c7af82e90956505423decf8004e0b01ee0d9a | |
parent | dfc6f56c5a6a4b0470407ab44bf8cf91b1c9b012 (diff) | |
download | ffmpeg-streaming-cad3148ea3da5fd389eb5192ec13c668cf4008e1.zip ffmpeg-streaming-cad3148ea3da5fd389eb5192ec13c668cf4008e1.tar.gz |
xface: reduce stack usage by directly storing 2 bytes data instead of pointers.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
-rw-r--r-- | libavcodec/xfaceenc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/xfaceenc.c b/libavcodec/xfaceenc.c index 0ade302..7edef1e 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; |