11b362b15af34006e6a11974088a46d42b903418eJohann/*
21b362b15af34006e6a11974088a46d42b903418eJohann *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
31b362b15af34006e6a11974088a46d42b903418eJohann *
41b362b15af34006e6a11974088a46d42b903418eJohann *  Use of this source code is governed by a BSD-style license
51b362b15af34006e6a11974088a46d42b903418eJohann *  that can be found in the LICENSE file in the root of the source
61b362b15af34006e6a11974088a46d42b903418eJohann *  tree. An additional intellectual property rights grant can be found
71b362b15af34006e6a11974088a46d42b903418eJohann *  in the file PATENTS.  All contributing project authors may
81b362b15af34006e6a11974088a46d42b903418eJohann *  be found in the AUTHORS file in the root of the source tree.
91b362b15af34006e6a11974088a46d42b903418eJohann */
101b362b15af34006e6a11974088a46d42b903418eJohann
111b362b15af34006e6a11974088a46d42b903418eJohann
12b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifndef VP8_COMMON_ONYXD_H_
13b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#define VP8_COMMON_ONYXD_H_
141b362b15af34006e6a11974088a46d42b903418eJohann
151b362b15af34006e6a11974088a46d42b903418eJohann
161b362b15af34006e6a11974088a46d42b903418eJohann/* Create/destroy static data structures. */
171b362b15af34006e6a11974088a46d42b903418eJohann#ifdef __cplusplus
181b362b15af34006e6a11974088a46d42b903418eJohannextern "C"
191b362b15af34006e6a11974088a46d42b903418eJohann{
201b362b15af34006e6a11974088a46d42b903418eJohann#endif
211b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_scale/yv12config.h"
221b362b15af34006e6a11974088a46d42b903418eJohann#include "ppflags.h"
231b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_ports/mem.h"
241b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx/vpx_codec.h"
251b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx/vp8.h"
261b362b15af34006e6a11974088a46d42b903418eJohann
271b362b15af34006e6a11974088a46d42b903418eJohann    struct VP8D_COMP;
281b362b15af34006e6a11974088a46d42b903418eJohann
291b362b15af34006e6a11974088a46d42b903418eJohann    typedef struct
301b362b15af34006e6a11974088a46d42b903418eJohann    {
311b362b15af34006e6a11974088a46d42b903418eJohann        int     Width;
321b362b15af34006e6a11974088a46d42b903418eJohann        int     Height;
331b362b15af34006e6a11974088a46d42b903418eJohann        int     Version;
341b362b15af34006e6a11974088a46d42b903418eJohann        int     postprocess;
351b362b15af34006e6a11974088a46d42b903418eJohann        int     max_threads;
361b362b15af34006e6a11974088a46d42b903418eJohann        int     error_concealment;
371b362b15af34006e6a11974088a46d42b903418eJohann    } VP8D_CONFIG;
381b362b15af34006e6a11974088a46d42b903418eJohann
391b362b15af34006e6a11974088a46d42b903418eJohann    typedef enum
401b362b15af34006e6a11974088a46d42b903418eJohann    {
411b362b15af34006e6a11974088a46d42b903418eJohann        VP8D_OK = 0
421b362b15af34006e6a11974088a46d42b903418eJohann    } VP8D_SETTING;
431b362b15af34006e6a11974088a46d42b903418eJohann
441b362b15af34006e6a11974088a46d42b903418eJohann    void vp8dx_initialize(void);
451b362b15af34006e6a11974088a46d42b903418eJohann
461b362b15af34006e6a11974088a46d42b903418eJohann    void vp8dx_set_setting(struct VP8D_COMP* comp, VP8D_SETTING oxst, int x);
471b362b15af34006e6a11974088a46d42b903418eJohann
481b362b15af34006e6a11974088a46d42b903418eJohann    int vp8dx_get_setting(struct VP8D_COMP* comp, VP8D_SETTING oxst);
491b362b15af34006e6a11974088a46d42b903418eJohann
501b362b15af34006e6a11974088a46d42b903418eJohann    int vp8dx_receive_compressed_data(struct VP8D_COMP* comp,
511b362b15af34006e6a11974088a46d42b903418eJohann                                      size_t size, const uint8_t *dest,
521b362b15af34006e6a11974088a46d42b903418eJohann                                      int64_t time_stamp);
531b362b15af34006e6a11974088a46d42b903418eJohann    int vp8dx_get_raw_frame(struct VP8D_COMP* comp, YV12_BUFFER_CONFIG *sd, int64_t *time_stamp, int64_t *time_end_stamp, vp8_ppflags_t *flags);
541b362b15af34006e6a11974088a46d42b903418eJohann
551b362b15af34006e6a11974088a46d42b903418eJohann    vpx_codec_err_t vp8dx_get_reference(struct VP8D_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd);
561b362b15af34006e6a11974088a46d42b903418eJohann    vpx_codec_err_t vp8dx_set_reference(struct VP8D_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd);
571b362b15af34006e6a11974088a46d42b903418eJohann
581b362b15af34006e6a11974088a46d42b903418eJohann#ifdef __cplusplus
591b362b15af34006e6a11974088a46d42b903418eJohann}
601b362b15af34006e6a11974088a46d42b903418eJohann#endif
611b362b15af34006e6a11974088a46d42b903418eJohann
621b362b15af34006e6a11974088a46d42b903418eJohann
63b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif  // VP8_COMMON_ONYXD_H_
64