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 20 #ifndef AVUTIL_HWCONTEXT_CUDA_H 21 #define AVUTIL_HWCONTEXT_CUDA_H 22 23 #ifndef CUDA_VERSION 24 #include <cuda.h> 25 #endif 26 27 #include "pixfmt.h" 28 29 /** 30 * @file 31 * An API-specific header for AV_HWDEVICE_TYPE_CUDA. 32 * 33 * This API supports dynamic frame pools. AVHWFramesContext.pool must return 34 * AVBufferRefs whose data pointer is a CUdeviceptr. 35 */ 36 37 typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal; 38 39 /** 40 * This struct is allocated as AVHWDeviceContext.hwctx 41 */ 42 typedef struct AVCUDADeviceContext { 43 CUcontext cuda_ctx; 44 CUstream stream; 45 AVCUDADeviceContextInternal *internal; 46 } AVCUDADeviceContext; 47 48 /** 49 * AVHWFramesContext.hwctx is currently not used 50 */ 51 52 /** 53 * @defgroup hwcontext_cuda Device context creation flags 54 * 55 * Flags for av_hwdevice_ctx_create. 56 * 57 * @{ 58 */ 59 60 /** 61 * Use primary device context instead of creating a new one. 62 */ 63 #define AV_CUDA_USE_PRIMARY_CONTEXT (1 << 0) 64 65 /** 66 * @} 67 */ 68 69 #endif /* AVUTIL_HWCONTEXT_CUDA_H */ 70