Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (C) 2012 Intel Corporation
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a
  5.  * copy of this software and associated documentation files (the
  6.  * "Software"), to deal in the Software without restriction, including
  7.  * without limitation the rights to use, copy, modify, merge, publish,
  8.  * distribute, sub license, and/or sell copies of the Software, and to
  9.  * permit persons to whom the Software is furnished to do so, subject to
  10.  * the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice (including the
  13.  * next paragraph) shall be included in all copies or substantial portions
  14.  * of the Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  17.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  19.  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
  20.  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  21.  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  22.  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23.  */
  24.  
  25. #ifndef I965_DECODER_H
  26. #define I965_DECODER_H
  27.  
  28. #include <stdint.h>
  29. #include <stdlib.h>
  30.  
  31. #include <va/va.h>
  32. #include <va/va_dec_vp8.h>
  33. #include <intel_bufmgr.h>
  34.  
  35. #define MAX_GEN_REFERENCE_FRAMES 16
  36.  
  37. typedef struct gen_frame_store GenFrameStore;
  38. struct gen_frame_store {
  39.     VASurfaceID surface_id;
  40.     int         frame_store_id;
  41.     struct      object_surface *obj_surface;
  42.  
  43.     /* This represents the time when this frame store was last used to
  44.        hold a reference frame. This is not connected to a presentation
  45.        timestamp (PTS), and this is not a common decoding time stamp
  46.        (DTS) either. It serves the purpose of tracking retired
  47.        reference frame candidates.
  48.  
  49.        This is only used for H.264 decoding on platforms before Haswell */
  50.     uint64_t    ref_age;
  51. };
  52.  
  53. typedef struct gen_frame_store_context GenFrameStoreContext;
  54. struct gen_frame_store_context {
  55.     uint64_t    age;
  56.     int         prev_poc;
  57. };
  58.  
  59. typedef struct gen_buffer GenBuffer;
  60. struct gen_buffer {
  61.     dri_bo     *bo;
  62.     int         valid;
  63. };
  64.  
  65. struct hw_context *
  66. gen75_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
  67.  
  68. extern struct hw_context *
  69. gen8_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
  70. #endif /* I965_DECODER_H */
  71.