18b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Copyright 2013 Google Inc. All Rights Reserved.
28b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora//
38b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Use of this source code is governed by a BSD-style license
48b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// that can be found in the COPYING file in the root of the source
58b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// tree. An additional intellectual property rights grant can be found
68b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// in the file PATENTS. All contributing project authors may
78b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// be found in the AUTHORS file in the root of the source tree.
88b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// -----------------------------------------------------------------------------
98b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora//
108b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Alpha decoder: internal header.
118b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora//
128b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Author: Urvang (urvang@google.com)
138b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
148b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#ifndef WEBP_DEC_ALPHAI_H_
158b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#define WEBP_DEC_ALPHAI_H_
168b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
178b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#include "./webpi.h"
188b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#include "../utils/filters.h"
198b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
208b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#ifdef __cplusplus
218b720228d581a84fd173b6dcb2fa295b59db489aVikas Aroraextern "C" {
228b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#endif
238b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
248b720228d581a84fd173b6dcb2fa295b59db489aVikas Arorastruct VP8LDecoder;  // Defined in dec/vp8li.h.
258b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
268b720228d581a84fd173b6dcb2fa295b59db489aVikas Aroratypedef struct ALPHDecoder ALPHDecoder;
278b720228d581a84fd173b6dcb2fa295b59db489aVikas Arorastruct ALPHDecoder {
288b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  int width_;
298b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  int height_;
308b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  int method_;
318b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  WEBP_FILTER_TYPE filter_;
328b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  int pre_processing_;
338b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  struct VP8LDecoder* vp8l_dec_;
348b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  VP8Io io_;
358b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora  int use_8b_decode;  // Although alpha channel requires only 1 byte per
368b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora                      // pixel, sometimes VP8LDecoder may need to allocate
378b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora                      // 4 bytes per pixel internally during decode.
388b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora};
398b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
408b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora//------------------------------------------------------------------------------
418b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// internal functions. Not public.
428b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
438b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Allocates a new alpha decoder instance.
448b720228d581a84fd173b6dcb2fa295b59db489aVikas AroraALPHDecoder* ALPHNew(void);
458b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
468b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora// Clears and deallocates an alpha decoder instance.
478b720228d581a84fd173b6dcb2fa295b59db489aVikas Aroravoid ALPHDelete(ALPHDecoder* const dec);
488b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
498b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora//------------------------------------------------------------------------------
508b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
518b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#ifdef __cplusplus
528b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora}    // extern "C"
538b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#endif
548b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora
558b720228d581a84fd173b6dcb2fa295b59db489aVikas Arora#endif  /* WEBP_DEC_ALPHAI_H_ */
56