duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

videotoolbox.h (2445B)


      1 /*
      2  * Videotoolbox hardware acceleration
      3  *
      4  * copyright (c) 2012 Sebastien Zwickert
      5  *
      6  * This file is part of FFmpeg.
      7  *
      8  * FFmpeg 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  * FFmpeg 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 FFmpeg; 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_VIDEOTOOLBOX_H
     24 #define AVCODEC_VIDEOTOOLBOX_H
     25 
     26 /**
     27  * @file
     28  * @ingroup lavc_codec_hwaccel_videotoolbox
     29  * Public libavcodec Videotoolbox header.
     30  */
     31 
     32 /**
     33  * @defgroup lavc_codec_hwaccel_videotoolbox VideoToolbox Decoder
     34  * @ingroup lavc_codec_hwaccel
     35  *
     36  * Hardware accelerated decoding using VideoToolbox on Apple Platforms
     37  *
     38  * @{
     39  */
     40 
     41 #include <stdint.h>
     42 
     43 #define Picture QuickdrawPicture
     44 #include <VideoToolbox/VideoToolbox.h>
     45 #undef Picture
     46 
     47 #include "libavcodec/avcodec.h"
     48 
     49 #include "libavutil/attributes.h"
     50 
     51 /**
     52  * This struct holds all the information that needs to be passed
     53  * between the caller and libavcodec for initializing Videotoolbox decoding.
     54  * Its size is not a part of the public ABI, it must be allocated with
     55  * av_videotoolbox_alloc_context() and freed with av_free().
     56  */
     57 typedef struct AVVideotoolboxContext {
     58     /**
     59      * Videotoolbox decompression session object.
     60      */
     61     VTDecompressionSessionRef session;
     62 
     63     /**
     64      * CVPixelBuffer Format Type that Videotoolbox will use for decoded frames.
     65      * set by the caller. If this is set to 0, then no specific format is
     66      * requested from the decoder, and its native format is output.
     67      */
     68     OSType cv_pix_fmt_type;
     69 
     70     /**
     71      * CoreMedia Format Description that Videotoolbox will use to create the decompression session.
     72      */
     73     CMVideoFormatDescriptionRef cm_fmt_desc;
     74 
     75     /**
     76      * CoreMedia codec type that Videotoolbox will use to create the decompression session.
     77      */
     78     int cm_codec_type;
     79 } AVVideotoolboxContext;
     80 
     81 /**
     82  * @}
     83  */
     84 
     85 #endif /* AVCODEC_VIDEOTOOLBOX_H */