[FFmpeg-devel] [PATCH 2/2] xface: reduce stack usage by directly storing 2 bytes data instead of pointers.

Stefano Sabatini stefasab at gmail.com
Sun Nov 23 00:22:38 CET 2014


On date Saturday 2014-11-22 23:31:59 +0100, Reimar Döffinger encoded:
> Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
> ---
>  libavcodec/xfaceenc.c | 8 ++++----
>  1 file 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;

LGTM.
-- 
FFmpeg = Fiendish Fundamentalist Mastodontic Practical Exuberant Gospel


More information about the ffmpeg-devel mailing list