FFmpeg
Loading...
Searching...
No Matches
utils.h
Go to the documentation of this file.
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 AVFILTER_METAL_UTILS_H
20#define AVFILTER_METAL_UTILS_H
21
22#include <Metal/Metal.h>
23
24#include <AvailabilityMacros.h>
25
26// CoreVideo accidentally(?) preprocessor-gates Metal functionality
27// on MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 (FB9816002).
28// There doesn't seem to be any particular reason for this,
29// so here we temporarily redefine it to at least that value
30// so CV will give us CVMetalTextureRef and the related functions.
31
32#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && (MAC_OS_X_VERSION_MIN_REQUIRED < 101100)
33#define ORIG_MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_MIN_REQUIRED
34#undef MAC_OS_X_VERSION_MIN_REQUIRED
35#define MAC_OS_X_VERSION_MIN_REQUIRED 101100
36#endif
37
38#include <CoreVideo/CoreVideo.h>
39
40#ifdef ORIG_MAC_OS_X_VERSION_MIN_REQUIRED
41#undef MAC_OS_X_VERSION_MIN_REQUIRED
42#define MAC_OS_X_VERSION_MIN_REQUIRED ORIG_MAC_OS_X_VERSION_MIN_REQUIRED
43#undef ORIG_MAC_OS_X_VERSION_MIN_REQUIRED
44#endif
45
49 NSUInteger width, NSUInteger height)
50 API_AVAILABLE(macos(10.11), ios(8.0));
51
52CVMetalTextureRef ff_metal_texture_from_pixbuf(void *avclass,
53 CVMetalTextureCacheRef textureCache,
54 CVPixelBufferRef pixbuf,
55 int plane,
56 MTLPixelFormat format)
57 API_AVAILABLE(macos(10.11), ios(8.0));
58
59#endif /* AVFILTER_METAL_UTILS_H */
static const char *const format[]
Definition af_aiir.c:444
enum AVCodecID id
Definition dts2pts.c:607
void ff_metal_compute_encoder_dispatch(id< MTLDevice > device, id< MTLComputePipelineState > pipeline, id< MTLComputeCommandEncoder > encoder, NSUInteger width, NSUInteger height) API_AVAILABLE(macos(10.11)
void ios(8.0))
CVMetalTextureRef ff_metal_texture_from_pixbuf(void *avclass, CVMetalTextureCacheRef textureCache, CVPixelBufferRef pixbuf, int plane, MTLPixelFormat format) API_AVAILABLE(macos(10.11)
#define height
Definition dsp.h:89
#define width
Definition dsp.h:89