| 27 | #include "snow_dwt.h" |
| 28 | |
| 29 | int ff_slice_buffer_init(slice_buffer *buf, int line_count, |
| 30 | int max_allocated_lines, int line_width, |
| 31 | IDWTELEM *base_buffer) |
| 32 | { |
| 33 | int i; |
| 34 | |
| 35 | buf->base_buffer = base_buffer; |
| 36 | buf->line_count = line_count; |
| 37 | buf->line_width = line_width; |
| 38 | buf->data_count = max_allocated_lines; |
| 39 | buf->line = av_calloc(line_count, sizeof(*buf->line)); |
| 40 | if (!buf->line) |
| 41 | return AVERROR(ENOMEM); |
| 42 | buf->data_stack = av_malloc_array(max_allocated_lines, sizeof(IDWTELEM *)); |
| 43 | if (!buf->data_stack) { |
| 44 | av_freep(&buf->line); |
| 45 | return AVERROR(ENOMEM); |
| 46 | } |
| 47 | |
| 48 | for (i = 0; i < max_allocated_lines; i++) { |
| 49 | buf->data_stack[i] = av_malloc_array(line_width, sizeof(IDWTELEM)); |
| 50 | if (!buf->data_stack[i]) { |
| 51 | for (i--; i >=0; i--) |
| 52 | av_freep(&buf->data_stack[i]); |
| 53 | av_freep(&buf->data_stack); |
| 54 | av_freep(&buf->line); |
| 55 | return AVERROR(ENOMEM); |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | buf->data_stack_top = max_allocated_lines - 1; |
| 60 | return 0; |
| 61 | } |
| 62 | |
| 63 | IDWTELEM *ff_slice_buffer_load_line(slice_buffer *buf, int line) |
| 64 | { |
no test coverage detected