tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

vda.h (3356B)


      1 /*
      2 * VDA HW acceleration
      3 *
      4 * copyright (c) 2011 Sebastien Zwickert
      5 *
      6 * This file is part of Libav.
      7 *
      8 * Libav is free software; you can redistribute it and/or
      9 * modify it under the terms of the GNU Lesser General Public
     10 * License as published by the Free Software Foundation; either
     11 * version 2.1 of the License, or (at your option) any later version.
     12 *
     13 * Libav is distributed in the hope that it will be useful,
     14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     16 * Lesser General Public License for more details.
     17 *
     18 * You should have received a copy of the GNU Lesser General Public
     19 * License along with Libav; if not, write to the Free Software
     20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     21 */
     22 
     23 #ifndef AVCODEC_VDA_H
     24 #define AVCODEC_VDA_H
     25 
     26 /**
     27 * @file
     28 * @ingroup lavc_codec_hwaccel_vda
     29 * Public libavcodec VDA header.
     30 */
     31 
     32 #include "libavcodec/version.h"
     33 
     34 #include <stdint.h>
     35 
     36 // emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
     37 // http://openradar.appspot.com/8026390
     38 #undef __GNUC_STDC_INLINE__
     39 
     40 #define Picture QuickdrawPicture
     41 #include <VideoDecodeAcceleration/VDADecoder.h>
     42 #undef Picture
     43 
     44 /**
     45 * @defgroup lavc_codec_hwaccel_vda VDA
     46 * @ingroup lavc_codec_hwaccel
     47 *
     48 * @{
     49 */
     50 
     51 /**
     52 * This structure is used to provide the necessary configurations and data
     53 * to the VDA Libav HWAccel implementation.
     54 *
     55 * The application must make it available as AVCodecContext.hwaccel_context.
     56 */
     57 struct vda_context {
     58    /**
     59     * VDA decoder object.
     60     *
     61     * - encoding: unused
     62     * - decoding: Set/Unset by libavcodec.
     63     */
     64    VDADecoder          decoder;
     65 
     66    /**
     67     * The Core Video pixel buffer that contains the current image data.
     68     *
     69     * encoding: unused
     70     * decoding: Set by libavcodec. Unset by user.
     71     */
     72    CVPixelBufferRef    cv_buffer;
     73 
     74    /**
     75     * Use the hardware decoder in synchronous mode.
     76     *
     77     * encoding: unused
     78     * decoding: Set by user.
     79     */
     80    int                 use_sync_decoding;
     81 
     82    /**
     83     * The frame width.
     84     *
     85     * - encoding: unused
     86     * - decoding: Set/Unset by user.
     87     */
     88    int                 width;
     89 
     90    /**
     91     * The frame height.
     92     *
     93     * - encoding: unused
     94     * - decoding: Set/Unset by user.
     95     */
     96    int                 height;
     97 
     98    /**
     99     * The frame format.
    100     *
    101     * - encoding: unused
    102     * - decoding: Set/Unset by user.
    103     */
    104    int                 format;
    105 
    106    /**
    107     * The pixel format for output image buffers.
    108     *
    109     * - encoding: unused
    110     * - decoding: Set/Unset by user.
    111     */
    112    OSType              cv_pix_fmt_type;
    113 
    114    /**
    115     * The current bitstream buffer.
    116     */
    117    uint8_t             *priv_bitstream;
    118 
    119    /**
    120     * The current size of the bitstream.
    121     */
    122    int                 priv_bitstream_size;
    123 
    124    /**
    125     * The reference size used for fast reallocation.
    126     */
    127    int                 priv_allocated_size;
    128 };
    129 
    130 /** Create the video decoder. */
    131 int ff_vda_create_decoder(struct vda_context *vda_ctx,
    132                          uint8_t *extradata,
    133                          int extradata_size);
    134 
    135 /** Destroy the video decoder. */
    136 int ff_vda_destroy_decoder(struct vda_context *vda_ctx);
    137 
    138 /**
    139 * @}
    140 */
    141 
    142 #endif /* AVCODEC_VDA_H */