yading@10: /* yading@10: * Video Acceleration API (shared data between FFmpeg and the video player) yading@10: * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 yading@10: * yading@10: * Copyright (C) 2008-2009 Splitted-Desktop Systems yading@10: * yading@10: * This file is part of FFmpeg. yading@10: * yading@10: * FFmpeg is free software; you can redistribute it and/or yading@10: * modify it under the terms of the GNU Lesser General Public yading@10: * License as published by the Free Software Foundation; either yading@10: * version 2.1 of the License, or (at your option) any later version. yading@10: * yading@10: * FFmpeg is distributed in the hope that it will be useful, yading@10: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@10: * Lesser General Public License for more details. yading@10: * yading@10: * You should have received a copy of the GNU Lesser General Public yading@10: * License along with FFmpeg; if not, write to the Free Software yading@10: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@10: */ yading@10: yading@10: #ifndef AVCODEC_VAAPI_H yading@10: #define AVCODEC_VAAPI_H yading@10: yading@10: /** yading@10: * @file yading@10: * @ingroup lavc_codec_hwaccel_vaapi yading@10: * Public libavcodec VA API header. yading@10: */ yading@10: yading@10: #include yading@10: yading@10: /** yading@10: * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding yading@10: * @ingroup lavc_codec_hwaccel yading@10: * @{ yading@10: */ yading@10: yading@10: /** yading@10: * This structure is used to share data between the FFmpeg library and yading@10: * the client video application. yading@10: * This shall be zero-allocated and available as yading@10: * AVCodecContext.hwaccel_context. All user members can be set once yading@10: * during initialization or through each AVCodecContext.get_buffer() yading@10: * function call. In any case, they must be valid prior to calling yading@10: * decoding functions. yading@10: */ yading@10: struct vaapi_context { yading@10: /** yading@10: * Window system dependent data yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by user yading@10: */ yading@10: void *display; yading@10: yading@10: /** yading@10: * Configuration ID yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by user yading@10: */ yading@10: uint32_t config_id; yading@10: yading@10: /** yading@10: * Context ID (video decode pipeline) yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by user yading@10: */ yading@10: uint32_t context_id; yading@10: yading@10: /** yading@10: * VAPictureParameterBuffer ID yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: uint32_t pic_param_buf_id; yading@10: yading@10: /** yading@10: * VAIQMatrixBuffer ID yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: uint32_t iq_matrix_buf_id; yading@10: yading@10: /** yading@10: * VABitPlaneBuffer ID (for VC-1 decoding) yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: uint32_t bitplane_buf_id; yading@10: yading@10: /** yading@10: * Slice parameter/data buffer IDs yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: uint32_t *slice_buf_ids; yading@10: yading@10: /** yading@10: * Number of effective slice buffer IDs to send to the HW yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: unsigned int n_slice_buf_ids; yading@10: yading@10: /** yading@10: * Size of pre-allocated slice_buf_ids yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: unsigned int slice_buf_ids_alloc; yading@10: yading@10: /** yading@10: * Pointer to VASliceParameterBuffers yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: void *slice_params; yading@10: yading@10: /** yading@10: * Size of a VASliceParameterBuffer element yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: unsigned int slice_param_size; yading@10: yading@10: /** yading@10: * Size of pre-allocated slice_params yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: unsigned int slice_params_alloc; yading@10: yading@10: /** yading@10: * Number of slices currently filled in yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: unsigned int slice_count; yading@10: yading@10: /** yading@10: * Pointer to slice data buffer base yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: const uint8_t *slice_data; yading@10: yading@10: /** yading@10: * Current size of slice data yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set by libavcodec yading@10: */ yading@10: uint32_t slice_data_size; yading@10: }; yading@10: yading@10: /* @} */ yading@10: yading@10: #endif /* AVCODEC_VAAPI_H */