yading@10: /* yading@10: * VDA HW acceleration yading@10: * yading@10: * copyright (c) 2011 Sebastien Zwickert 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_VDA_H yading@10: #define AVCODEC_VDA_H yading@10: yading@10: /** yading@10: * @file yading@10: * @ingroup lavc_codec_hwaccel_vda yading@10: * Public libavcodec VDA header. yading@10: */ yading@10: yading@10: #include yading@10: yading@10: // emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes yading@10: // http://openradar.appspot.com/8026390 yading@10: #undef __GNUC_STDC_INLINE__ yading@10: yading@10: #define Picture QuickdrawPicture yading@10: #include yading@10: #undef Picture yading@10: yading@10: #include "libavcodec/version.h" yading@10: yading@10: /** yading@10: * @defgroup lavc_codec_hwaccel_vda VDA yading@10: * @ingroup lavc_codec_hwaccel yading@10: * yading@10: * @{ yading@10: */ yading@10: yading@10: /** yading@10: * This structure is used to provide the necessary configurations and data yading@10: * to the VDA FFmpeg HWAccel implementation. yading@10: * yading@10: * The application must make it available as AVCodecContext.hwaccel_context. yading@10: */ yading@10: struct vda_context { yading@10: /** yading@10: * VDA decoder object. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by libavcodec. yading@10: */ yading@10: VDADecoder decoder; yading@10: yading@10: /** yading@10: * The Core Video pixel buffer that contains the current image data. yading@10: * yading@10: * encoding: unused yading@10: * decoding: Set by libavcodec. Unset by user. yading@10: */ yading@10: CVPixelBufferRef cv_buffer; yading@10: yading@10: /** yading@10: * Use the hardware decoder in synchronous mode. yading@10: * yading@10: * encoding: unused yading@10: * decoding: Set by user. yading@10: */ yading@10: int use_sync_decoding; yading@10: yading@10: /** yading@10: * The frame width. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by user. yading@10: */ yading@10: int width; yading@10: yading@10: /** yading@10: * The frame height. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by user. yading@10: */ yading@10: int height; yading@10: yading@10: /** yading@10: * The frame format. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by user. yading@10: */ yading@10: int format; yading@10: yading@10: /** yading@10: * The pixel format for output image buffers. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by user. yading@10: */ yading@10: OSType cv_pix_fmt_type; yading@10: yading@10: /** yading@10: * The current bitstream buffer. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by libavcodec. yading@10: */ yading@10: uint8_t *priv_bitstream; yading@10: yading@10: /** yading@10: * The current size of the bitstream. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by libavcodec. yading@10: */ yading@10: int priv_bitstream_size; yading@10: yading@10: /** yading@10: * The reference size used for fast reallocation. yading@10: * yading@10: * - encoding: unused yading@10: * - decoding: Set/Unset by libavcodec. yading@10: */ yading@10: int priv_allocated_size; yading@10: }; yading@10: yading@10: /** Create the video decoder. */ yading@10: int ff_vda_create_decoder(struct vda_context *vda_ctx, yading@10: uint8_t *extradata, yading@10: int extradata_size); yading@10: yading@10: /** Destroy the video decoder. */ yading@10: int ff_vda_destroy_decoder(struct vda_context *vda_ctx); yading@10: yading@10: /** yading@10: * @} yading@10: */ yading@10: yading@10: #endif /* AVCODEC_VDA_H */