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

hwcontext_videotoolbox.h (3492B)


      1 /*
      2  * This file is part of FFmpeg.
      3  *
      4  * FFmpeg is free software; you can redistribute it and/or
      5  * modify it under the terms of the GNU Lesser General Public
      6  * License as published by the Free Software Foundation; either
      7  * version 2.1 of the License, or (at your option) any later version.
      8  *
      9  * FFmpeg is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12  * Lesser General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU Lesser General Public
     15  * License along with FFmpeg; if not, write to the Free Software
     16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     17  */
     18 
     19 #ifndef AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H
     20 #define AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H
     21 
     22 #include <stdint.h>
     23 
     24 #include <VideoToolbox/VideoToolbox.h>
     25 
     26 #include "frame.h"
     27 #include "pixfmt.h"
     28 
     29 /**
     30  * @file
     31  * An API-specific header for AV_HWDEVICE_TYPE_VIDEOTOOLBOX.
     32  *
     33  * This API supports frame allocation using a native CVPixelBufferPool
     34  * instead of an AVBufferPool.
     35  *
     36  * If the API user sets a custom pool, AVHWFramesContext.pool must return
     37  * AVBufferRefs whose data pointer is a CVImageBufferRef or CVPixelBufferRef.
     38  * Note that the underlying CVPixelBuffer could be retained by OS frameworks
     39  * depending on application usage, so it is preferable to let CoreVideo manage
     40  * the pool using the default implementation.
     41  *
     42  * Currently AVHWDeviceContext.hwctx are always NULL.
     43  */
     44 
     45 typedef struct AVVTFramesContext {
     46     enum AVColorRange color_range;
     47 } AVVTFramesContext;
     48 
     49 /**
     50  * Convert a VideoToolbox (actually CoreVideo) format to AVPixelFormat.
     51  * Returns AV_PIX_FMT_NONE if no known equivalent was found.
     52  */
     53 enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt);
     54 
     55 /**
     56  * Convert an AVPixelFormat to a VideoToolbox (actually CoreVideo) format.
     57  * Returns 0 if no known equivalent was found.
     58  */
     59 uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt);
     60 
     61 /**
     62  * Same as av_map_videotoolbox_format_from_pixfmt function, but can map and
     63  * return full range pixel formats via a flag.
     64  */
     65 uint32_t av_map_videotoolbox_format_from_pixfmt2(enum AVPixelFormat pix_fmt, bool full_range);
     66 
     67 /**
     68  * Convert an AVChromaLocation to a VideoToolbox/CoreVideo chroma location string.
     69  * Returns 0 if no known equivalent was found.
     70  */
     71 CFStringRef av_map_videotoolbox_chroma_loc_from_av(enum AVChromaLocation loc);
     72 
     73 /**
     74  * Convert an AVColorSpace to a VideoToolbox/CoreVideo color matrix string.
     75  * Returns 0 if no known equivalent was found.
     76  */
     77 CFStringRef av_map_videotoolbox_color_matrix_from_av(enum AVColorSpace space);
     78 
     79 /**
     80  * Convert an AVColorPrimaries to a VideoToolbox/CoreVideo color primaries string.
     81  * Returns 0 if no known equivalent was found.
     82  */
     83 CFStringRef av_map_videotoolbox_color_primaries_from_av(enum AVColorPrimaries pri);
     84 
     85 /**
     86  * Convert an AVColorTransferCharacteristic to a VideoToolbox/CoreVideo color transfer
     87  * function string.
     88  * Returns 0 if no known equivalent was found.
     89  */
     90 CFStringRef av_map_videotoolbox_color_trc_from_av(enum AVColorTransferCharacteristic trc);
     91 
     92 /**
     93  * Update a CVPixelBufferRef's metadata to based on an AVFrame.
     94  * Returns 0 if no known equivalent was found.
     95  */
     96 int av_vt_pixbuf_set_attachments(void *log_ctx,
     97                                  CVPixelBufferRef pixbuf, const struct AVFrame *src);
     98 
     99 #endif /* AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H */