[libav-devel] [PATCH] dwt: return errors from ff_slice_buffer_init()

Kostya Shishkov kostya.shishkov at gmail.com
Tue May 22 13:58:18 CEST 2012


On Tue, May 22, 2012 at 01:51:48PM +0200, Diego Biurrun wrote:
> ---
>  libavcodec/dwt.c     |    7 ++++---
>  libavcodec/dwt.h     |    6 +++---
>  libavcodec/snowdec.c |    7 ++++++-
>  3 files changed, 13 insertions(+), 7 deletions(-)
> 
> diff --git a/libavcodec/dwt.c b/libavcodec/dwt.c
> index 675644d..d3d4f3b 100644
> --- a/libavcodec/dwt.c
> +++ b/libavcodec/dwt.c
> @@ -22,9 +22,9 @@
>  #include "dsputil.h"
>  #include "dwt.h"
>  
> -void ff_slice_buffer_init(slice_buffer *buf, int line_count,
> -                          int max_allocated_lines, int line_width,
> -                          IDWTELEM *base_buffer)
> +int ff_slice_buffer_init(slice_buffer *buf, int line_count,
> +                         int max_allocated_lines, int line_width,
> +                         IDWTELEM *base_buffer)
>  {
>      int i;
>  
> @@ -53,6 +53,7 @@ void ff_slice_buffer_init(slice_buffer *buf, int line_count,
>      }
>  
>      buf->data_stack_top = max_allocated_lines - 1;
> +    return 0;
>  }
>  
>  IDWTELEM *ff_slice_buffer_load_line(slice_buffer *buf, int line)
> diff --git a/libavcodec/dwt.h b/libavcodec/dwt.h
> index 6c28447..9229928 100644
> --- a/libavcodec/dwt.h
> +++ b/libavcodec/dwt.h
> @@ -137,9 +137,9 @@ typedef struct DWTContext {
>                                   : ff_slice_buffer_load_line((slice_buf),   \
>                                                               (line_num)))
>  
> -void ff_slice_buffer_init(slice_buffer *buf, int line_count,
> -                          int max_allocated_lines, int line_width,
> -                          IDWTELEM *base_buffer);
> +int ff_slice_buffer_init(slice_buffer *buf, int line_count,
> +                         int max_allocated_lines, int line_width,
> +                         IDWTELEM *base_buffer);
>  void ff_slice_buffer_release(slice_buffer *buf, int line);
>  void ff_slice_buffer_flush(slice_buffer *buf);
>  void ff_slice_buffer_destroy(slice_buffer *buf);
> diff --git a/libavcodec/snowdec.c b/libavcodec/snowdec.c
> index ef5205d..62ef5f1 100644
> --- a/libavcodec/snowdec.c
> +++ b/libavcodec/snowdec.c
> @@ -396,7 +396,12 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
>  
>      // realloc slice buffer for the case that spatial_decomposition_count changed
>      ff_slice_buffer_destroy(&s->sb);
> -    ff_slice_buffer_init(&s->sb, s->plane[0].height, (MB_SIZE >> s->block_max_depth) + s->spatial_decomposition_count * 8 + 1, s->plane[0].width, s->spatial_idwt_buffer);
> +    if ((res = ff_slice_buffer_init(&s->sb, s->plane[0].height,
> +                                    (MB_SIZE >> s->block_max_depth) +
> +                                    s->spatial_decomposition_count * 8 + 1,
> +                                    s->plane[0].width,
> +                                    s->spatial_idwt_buffer)) < 0)
> +        return res;
>  
>      for(plane_index=0; plane_index<3; plane_index++){
>          Plane *p= &s->plane[plane_index];
> -- 

LGTM


More information about the libav-devel mailing list