mirror of https://github.com/FFmpeg/FFmpeg.git
parent
dcea618976
commit
7904859fd8
2 changed files with 1148 additions and 1148 deletions
File diff suppressed because it is too large
Load Diff
@ -1,321 +1,321 @@ |
||||
/*
|
||||
* This copyright notice applies to this header file only: |
||||
* |
||||
* Copyright (c) 2010-2016 NVIDIA Corporation |
||||
* |
||||
* Permission is hereby granted, free of charge, to any person |
||||
* obtaining a copy of this software and associated documentation |
||||
* files (the "Software"), to deal in the Software without |
||||
* restriction, including without limitation the rights to use, |
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
* copies of the software, and to permit persons to whom the |
||||
* software is furnished to do so, subject to the following |
||||
* conditions: |
||||
* |
||||
* The above copyright notice and this permission notice shall be |
||||
* included in all copies or substantial portions of the Software. |
||||
* |
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
||||
* OTHER DEALINGS IN THE SOFTWARE. |
||||
*/ |
||||
|
||||
/**
|
||||
* \file nvcuvid.h |
||||
* NvCuvid API provides Video Decoding interface to NVIDIA GPU devices. |
||||
* \date 2015-2015 |
||||
* This file contains the interface constants, structure definitions and function prototypes. |
||||
*/ |
||||
|
||||
#if !defined(__NVCUVID_H__) |
||||
#define __NVCUVID_H__ |
||||
|
||||
#include "compat/cuda/cuviddec.h" |
||||
|
||||
#if defined(__cplusplus) |
||||
extern "C" { |
||||
#endif /* __cplusplus */ |
||||
|
||||
/*********************************
|
||||
** Initialization |
||||
*********************************/ |
||||
CUresult CUDAAPI cuvidInit(unsigned int Flags); |
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// High-level helper APIs for video sources
|
||||
//
|
||||
|
||||
typedef void *CUvideosource; |
||||
typedef void *CUvideoparser; |
||||
typedef long long CUvideotimestamp; |
||||
|
||||
/**
|
||||
* \addtogroup VIDEO_PARSER Video Parser |
||||
* @{ |
||||
*/ |
||||
|
||||
/*!
|
||||
* \enum cudaVideoState |
||||
* Video Source State |
||||
*/ |
||||
typedef enum { |
||||
cudaVideoState_Error = -1, /**< Error state (invalid source) */ |
||||
cudaVideoState_Stopped = 0, /**< Source is stopped (or reached end-of-stream) */ |
||||
cudaVideoState_Started = 1 /**< Source is running and delivering data */ |
||||
} cudaVideoState; |
||||
|
||||
/*!
|
||||
* \enum cudaAudioCodec |
||||
* Audio compression |
||||
*/ |
||||
typedef enum { |
||||
cudaAudioCodec_MPEG1=0, /**< MPEG-1 Audio */ |
||||
cudaAudioCodec_MPEG2, /**< MPEG-2 Audio */ |
||||
cudaAudioCodec_MP3, /**< MPEG-1 Layer III Audio */ |
||||
cudaAudioCodec_AC3, /**< Dolby Digital (AC3) Audio */ |
||||
cudaAudioCodec_LPCM /**< PCM Audio */ |
||||
} cudaAudioCodec; |
||||
|
||||
/*!
|
||||
* \struct CUVIDEOFORMAT |
||||
* Video format |
||||
*/ |
||||
typedef struct |
||||
{ |
||||
cudaVideoCodec codec; /**< Compression format */ |
||||
/**
|
||||
* frame rate = numerator / denominator (for example: 30000/1001) |
||||
*/ |
||||
struct { |
||||
unsigned int numerator; /**< frame rate numerator (0 = unspecified or variable frame rate) */ |
||||
unsigned int denominator; /**< frame rate denominator (0 = unspecified or variable frame rate) */ |
||||
} frame_rate; |
||||
unsigned char progressive_sequence; /**< 0=interlaced, 1=progressive */ |
||||
unsigned char bit_depth_luma_minus8; /**< high bit depth Luma */ |
||||
unsigned char bit_depth_chroma_minus8; /**< high bit depth Chroma */ |
||||
unsigned char reserved1; /**< Reserved for future use */ |
||||
unsigned int coded_width; /**< coded frame width */ |
||||
unsigned int coded_height; /**< coded frame height */ |
||||
/**
|
||||
* area of the frame that should be displayed |
||||
* typical example: |
||||
* coded_width = 1920, coded_height = 1088 |
||||
* display_area = { 0,0,1920,1080 } |
||||
*/ |
||||
struct { |
||||
int left; /**< left position of display rect */ |
||||
int top; /**< top position of display rect */ |
||||
int right; /**< right position of display rect */ |
||||
int bottom; /**< bottom position of display rect */ |
||||
} display_area; |
||||
cudaVideoChromaFormat chroma_format; /**< Chroma format */ |
||||
unsigned int bitrate; /**< video bitrate (bps, 0=unknown) */ |
||||
/**
|
||||
* Display Aspect Ratio = x:y (4:3, 16:9, etc) |
||||
*/ |
||||
struct { |
||||
int x; |
||||
int y; |
||||
} display_aspect_ratio; |
||||
/**
|
||||
* Video Signal Description |
||||
*/ |
||||
struct { |
||||
unsigned char video_format : 3; |
||||
unsigned char video_full_range_flag : 1; |
||||
unsigned char reserved_zero_bits : 4; |
||||
unsigned char color_primaries; |
||||
unsigned char transfer_characteristics; |
||||
unsigned char matrix_coefficients; |
||||
} video_signal_description; |
||||
unsigned int seqhdr_data_length; /**< Additional bytes following (CUVIDEOFORMATEX) */ |
||||
} CUVIDEOFORMAT; |
||||
|
||||
/*!
|
||||
* \struct CUVIDEOFORMATEX |
||||
* Video format including raw sequence header information |
||||
*/ |
||||
typedef struct |
||||
{ |
||||
CUVIDEOFORMAT format; |
||||
unsigned char raw_seqhdr_data[1024]; |
||||
} CUVIDEOFORMATEX; |
||||
|
||||
/*!
|
||||
* \struct CUAUDIOFORMAT |
||||
* Audio Formats |
||||
*/ |
||||
typedef struct |
||||
{ |
||||
cudaAudioCodec codec; /**< Compression format */ |
||||
unsigned int channels; /**< number of audio channels */ |
||||
unsigned int samplespersec; /**< sampling frequency */ |
||||
unsigned int bitrate; /**< For uncompressed, can also be used to determine bits per sample */ |
||||
unsigned int reserved1; /**< Reserved for future use */ |
||||
unsigned int reserved2; /**< Reserved for future use */ |
||||
} CUAUDIOFORMAT; |
||||
|
||||
|
||||
/*!
|
||||
* \enum CUvideopacketflags |
||||
* Data packet flags |
||||
*/ |
||||
typedef enum { |
||||
CUVID_PKT_ENDOFSTREAM = 0x01, /**< Set when this is the last packet for this stream */ |
||||
CUVID_PKT_TIMESTAMP = 0x02, /**< Timestamp is valid */ |
||||
CUVID_PKT_DISCONTINUITY = 0x04 /**< Set when a discontinuity has to be signalled */ |
||||
} CUvideopacketflags; |
||||
|
||||
/*!
|
||||
* \struct CUVIDSOURCEDATAPACKET |
||||
* Data Packet |
||||
*/ |
||||
typedef struct _CUVIDSOURCEDATAPACKET |
||||
{ |
||||
unsigned long flags; /**< Combination of CUVID_PKT_XXX flags */ |
||||
unsigned long payload_size; /**< number of bytes in the payload (may be zero if EOS flag is set) */ |
||||
const unsigned char *payload; /**< Pointer to packet payload data (may be NULL if EOS flag is set) */ |
||||
CUvideotimestamp timestamp; /**< Presentation timestamp (10MHz clock), only valid if CUVID_PKT_TIMESTAMP flag is set */ |
||||
} CUVIDSOURCEDATAPACKET; |
||||
|
||||
// Callback for packet delivery
|
||||
typedef int (CUDAAPI *PFNVIDSOURCECALLBACK)(void *, CUVIDSOURCEDATAPACKET *); |
||||
|
||||
/*!
|
||||
* \struct CUVIDSOURCEPARAMS |
||||
* Source Params |
||||
*/ |
||||
typedef struct _CUVIDSOURCEPARAMS |
||||
{ |
||||
unsigned int ulClockRate; /**< Timestamp units in Hz (0=default=10000000Hz) */ |
||||
unsigned int uReserved1[7]; /**< Reserved for future use - set to zero */ |
||||
void *pUserData; /**< Parameter passed in to the data handlers */ |
||||
PFNVIDSOURCECALLBACK pfnVideoDataHandler; /**< Called to deliver audio packets */ |
||||
PFNVIDSOURCECALLBACK pfnAudioDataHandler; /**< Called to deliver video packets */ |
||||
void *pvReserved2[8]; /**< Reserved for future use - set to NULL */ |
||||
} CUVIDSOURCEPARAMS; |
||||
|
||||
/*!
|
||||
* \enum CUvideosourceformat_flags |
||||
* CUvideosourceformat_flags |
||||
*/ |
||||
typedef enum { |
||||
CUVID_FMT_EXTFORMATINFO = 0x100 /**< Return extended format structure (CUVIDEOFORMATEX) */ |
||||
} CUvideosourceformat_flags; |
||||
|
||||
#if !defined(__APPLE__) |
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidCreateVideoSource(CUvideosource *pObj, const char *pszFileName, CUVIDSOURCEPARAMS *pParams) |
||||
* Create Video Source |
||||
*/ |
||||
CUresult CUDAAPI cuvidCreateVideoSource(CUvideosource *pObj, const char *pszFileName, CUVIDSOURCEPARAMS *pParams); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidCreateVideoSourceW(CUvideosource *pObj, const wchar_t *pwszFileName, CUVIDSOURCEPARAMS *pParams) |
||||
* Create Video Source |
||||
*/ |
||||
CUresult CUDAAPI cuvidCreateVideoSourceW(CUvideosource *pObj, const wchar_t *pwszFileName, CUVIDSOURCEPARAMS *pParams); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidDestroyVideoSource(CUvideosource obj) |
||||
* Destroy Video Source |
||||
*/ |
||||
CUresult CUDAAPI cuvidDestroyVideoSource(CUvideosource obj); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidSetVideoSourceState(CUvideosource obj, cudaVideoState state) |
||||
* Set Video Source state |
||||
*/ |
||||
CUresult CUDAAPI cuvidSetVideoSourceState(CUvideosource obj, cudaVideoState state); |
||||
|
||||
/**
|
||||
* \fn cudaVideoState CUDAAPI cuvidGetVideoSourceState(CUvideosource obj) |
||||
* Get Video Source state |
||||
*/ |
||||
cudaVideoState CUDAAPI cuvidGetVideoSourceState(CUvideosource obj); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidGetSourceVideoFormat(CUvideosource obj, CUVIDEOFORMAT *pvidfmt, unsigned int flags) |
||||
* Get Video Source Format |
||||
*/ |
||||
CUresult CUDAAPI cuvidGetSourceVideoFormat(CUvideosource obj, CUVIDEOFORMAT *pvidfmt, unsigned int flags); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidGetSourceAudioFormat(CUvideosource obj, CUAUDIOFORMAT *paudfmt, unsigned int flags) |
||||
* Set Video Source state |
||||
*/ |
||||
CUresult CUDAAPI cuvidGetSourceAudioFormat(CUvideosource obj, CUAUDIOFORMAT *paudfmt, unsigned int flags); |
||||
|
||||
#endif |
||||
|
||||
/**
|
||||
* \struct CUVIDPARSERDISPINFO |
||||
*/ |
||||
typedef struct _CUVIDPARSERDISPINFO |
||||
{ |
||||
int picture_index; /**< */ |
||||
int progressive_frame; /**< */ |
||||
int top_field_first; /**< */ |
||||
int repeat_first_field; /**< Number of additional fields (1=ivtc, 2=frame doubling, 4=frame tripling, -1=unpaired field) */ |
||||
CUvideotimestamp timestamp; /**< */ |
||||
} CUVIDPARSERDISPINFO; |
||||
|
||||
//
|
||||
// Parser callbacks
|
||||
// The parser will call these synchronously from within cuvidParseVideoData(), whenever a picture is ready to
|
||||
// be decoded and/or displayed.
|
||||
//
|
||||
typedef int (CUDAAPI *PFNVIDSEQUENCECALLBACK)(void *, CUVIDEOFORMAT *); |
||||
typedef int (CUDAAPI *PFNVIDDECODECALLBACK)(void *, CUVIDPICPARAMS *); |
||||
typedef int (CUDAAPI *PFNVIDDISPLAYCALLBACK)(void *, CUVIDPARSERDISPINFO *); |
||||
|
||||
/**
|
||||
* \struct CUVIDPARSERPARAMS |
||||
*/ |
||||
typedef struct _CUVIDPARSERPARAMS |
||||
{ |
||||
cudaVideoCodec CodecType; /**< cudaVideoCodec_XXX */ |
||||
unsigned int ulMaxNumDecodeSurfaces; /**< Max # of decode surfaces (parser will cycle through these) */ |
||||
unsigned int ulClockRate; /**< Timestamp units in Hz (0=default=10000000Hz) */ |
||||
unsigned int ulErrorThreshold; /**< % Error threshold (0-100) for calling pfnDecodePicture (100=always call pfnDecodePicture even if picture bitstream is fully corrupted) */ |
||||
unsigned int ulMaxDisplayDelay; /**< Max display queue delay (improves pipelining of decode with display) - 0=no delay (recommended values: 2..4) */ |
||||
unsigned int uReserved1[5]; /**< Reserved for future use - set to 0 */ |
||||
void *pUserData; /**< User data for callbacks */ |
||||
PFNVIDSEQUENCECALLBACK pfnSequenceCallback; /**< Called before decoding frames and/or whenever there is a format change */ |
||||
PFNVIDDECODECALLBACK pfnDecodePicture; /**< Called when a picture is ready to be decoded (decode order) */ |
||||
PFNVIDDISPLAYCALLBACK pfnDisplayPicture; /**< Called whenever a picture is ready to be displayed (display order) */ |
||||
void *pvReserved2[7]; /**< Reserved for future use - set to NULL */ |
||||
CUVIDEOFORMATEX *pExtVideoInfo; /**< [Optional] sequence header data from system layer */ |
||||
} CUVIDPARSERPARAMS; |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidCreateVideoParser(CUvideoparser *pObj, CUVIDPARSERPARAMS *pParams) |
||||
*/ |
||||
CUresult CUDAAPI cuvidCreateVideoParser(CUvideoparser *pObj, CUVIDPARSERPARAMS *pParams); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidParseVideoData(CUvideoparser obj, CUVIDSOURCEDATAPACKET *pPacket) |
||||
*/ |
||||
CUresult CUDAAPI cuvidParseVideoData(CUvideoparser obj, CUVIDSOURCEDATAPACKET *pPacket); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidDestroyVideoParser(CUvideoparser obj) |
||||
*/ |
||||
CUresult CUDAAPI cuvidDestroyVideoParser(CUvideoparser obj); |
||||
|
||||
/** @} */ /* END VIDEO_PARSER */ |
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(__cplusplus) |
||||
} |
||||
#endif /* __cplusplus */ |
||||
|
||||
#endif // __NVCUVID_H__
|
||||
|
||||
|
||||
/*
|
||||
* This copyright notice applies to this header file only: |
||||
* |
||||
* Copyright (c) 2010-2016 NVIDIA Corporation |
||||
* |
||||
* Permission is hereby granted, free of charge, to any person |
||||
* obtaining a copy of this software and associated documentation |
||||
* files (the "Software"), to deal in the Software without |
||||
* restriction, including without limitation the rights to use, |
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
* copies of the software, and to permit persons to whom the |
||||
* software is furnished to do so, subject to the following |
||||
* conditions: |
||||
* |
||||
* The above copyright notice and this permission notice shall be |
||||
* included in all copies or substantial portions of the Software. |
||||
* |
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
||||
* OTHER DEALINGS IN THE SOFTWARE. |
||||
*/ |
||||
|
||||
/**
|
||||
* \file nvcuvid.h |
||||
* NvCuvid API provides Video Decoding interface to NVIDIA GPU devices. |
||||
* \date 2015-2015 |
||||
* This file contains the interface constants, structure definitions and function prototypes. |
||||
*/ |
||||
|
||||
#if !defined(__NVCUVID_H__) |
||||
#define __NVCUVID_H__ |
||||
|
||||
#include "compat/cuda/cuviddec.h" |
||||
|
||||
#if defined(__cplusplus) |
||||
extern "C" { |
||||
#endif /* __cplusplus */ |
||||
|
||||
/*********************************
|
||||
** Initialization |
||||
*********************************/ |
||||
CUresult CUDAAPI cuvidInit(unsigned int Flags); |
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// High-level helper APIs for video sources
|
||||
//
|
||||
|
||||
typedef void *CUvideosource; |
||||
typedef void *CUvideoparser; |
||||
typedef long long CUvideotimestamp; |
||||
|
||||
/**
|
||||
* \addtogroup VIDEO_PARSER Video Parser |
||||
* @{ |
||||
*/ |
||||
|
||||
/*!
|
||||
* \enum cudaVideoState |
||||
* Video Source State |
||||
*/ |
||||
typedef enum { |
||||
cudaVideoState_Error = -1, /**< Error state (invalid source) */ |
||||
cudaVideoState_Stopped = 0, /**< Source is stopped (or reached end-of-stream) */ |
||||
cudaVideoState_Started = 1 /**< Source is running and delivering data */ |
||||
} cudaVideoState; |
||||
|
||||
/*!
|
||||
* \enum cudaAudioCodec |
||||
* Audio compression |
||||
*/ |
||||
typedef enum { |
||||
cudaAudioCodec_MPEG1=0, /**< MPEG-1 Audio */ |
||||
cudaAudioCodec_MPEG2, /**< MPEG-2 Audio */ |
||||
cudaAudioCodec_MP3, /**< MPEG-1 Layer III Audio */ |
||||
cudaAudioCodec_AC3, /**< Dolby Digital (AC3) Audio */ |
||||
cudaAudioCodec_LPCM /**< PCM Audio */ |
||||
} cudaAudioCodec; |
||||
|
||||
/*!
|
||||
* \struct CUVIDEOFORMAT |
||||
* Video format |
||||
*/ |
||||
typedef struct |
||||
{ |
||||
cudaVideoCodec codec; /**< Compression format */ |
||||
/**
|
||||
* frame rate = numerator / denominator (for example: 30000/1001) |
||||
*/ |
||||
struct { |
||||
unsigned int numerator; /**< frame rate numerator (0 = unspecified or variable frame rate) */ |
||||
unsigned int denominator; /**< frame rate denominator (0 = unspecified or variable frame rate) */ |
||||
} frame_rate; |
||||
unsigned char progressive_sequence; /**< 0=interlaced, 1=progressive */ |
||||
unsigned char bit_depth_luma_minus8; /**< high bit depth Luma */ |
||||
unsigned char bit_depth_chroma_minus8; /**< high bit depth Chroma */ |
||||
unsigned char reserved1; /**< Reserved for future use */ |
||||
unsigned int coded_width; /**< coded frame width */ |
||||
unsigned int coded_height; /**< coded frame height */ |
||||
/**
|
||||
* area of the frame that should be displayed |
||||
* typical example: |
||||
* coded_width = 1920, coded_height = 1088 |
||||
* display_area = { 0,0,1920,1080 } |
||||
*/ |
||||
struct { |
||||
int left; /**< left position of display rect */ |
||||
int top; /**< top position of display rect */ |
||||
int right; /**< right position of display rect */ |
||||
int bottom; /**< bottom position of display rect */ |
||||
} display_area; |
||||
cudaVideoChromaFormat chroma_format; /**< Chroma format */ |
||||
unsigned int bitrate; /**< video bitrate (bps, 0=unknown) */ |
||||
/**
|
||||
* Display Aspect Ratio = x:y (4:3, 16:9, etc) |
||||
*/ |
||||
struct { |
||||
int x; |
||||
int y; |
||||
} display_aspect_ratio; |
||||
/**
|
||||
* Video Signal Description |
||||
*/ |
||||
struct { |
||||
unsigned char video_format : 3; |
||||
unsigned char video_full_range_flag : 1; |
||||
unsigned char reserved_zero_bits : 4; |
||||
unsigned char color_primaries; |
||||
unsigned char transfer_characteristics; |
||||
unsigned char matrix_coefficients; |
||||
} video_signal_description; |
||||
unsigned int seqhdr_data_length; /**< Additional bytes following (CUVIDEOFORMATEX) */ |
||||
} CUVIDEOFORMAT; |
||||
|
||||
/*!
|
||||
* \struct CUVIDEOFORMATEX |
||||
* Video format including raw sequence header information |
||||
*/ |
||||
typedef struct |
||||
{ |
||||
CUVIDEOFORMAT format; |
||||
unsigned char raw_seqhdr_data[1024]; |
||||
} CUVIDEOFORMATEX; |
||||
|
||||
/*!
|
||||
* \struct CUAUDIOFORMAT |
||||
* Audio Formats |
||||
*/ |
||||
typedef struct |
||||
{ |
||||
cudaAudioCodec codec; /**< Compression format */ |
||||
unsigned int channels; /**< number of audio channels */ |
||||
unsigned int samplespersec; /**< sampling frequency */ |
||||
unsigned int bitrate; /**< For uncompressed, can also be used to determine bits per sample */ |
||||
unsigned int reserved1; /**< Reserved for future use */ |
||||
unsigned int reserved2; /**< Reserved for future use */ |
||||
} CUAUDIOFORMAT; |
||||
|
||||
|
||||
/*!
|
||||
* \enum CUvideopacketflags |
||||
* Data packet flags |
||||
*/ |
||||
typedef enum { |
||||
CUVID_PKT_ENDOFSTREAM = 0x01, /**< Set when this is the last packet for this stream */ |
||||
CUVID_PKT_TIMESTAMP = 0x02, /**< Timestamp is valid */ |
||||
CUVID_PKT_DISCONTINUITY = 0x04 /**< Set when a discontinuity has to be signalled */ |
||||
} CUvideopacketflags; |
||||
|
||||
/*!
|
||||
* \struct CUVIDSOURCEDATAPACKET |
||||
* Data Packet |
||||
*/ |
||||
typedef struct _CUVIDSOURCEDATAPACKET |
||||
{ |
||||
unsigned long flags; /**< Combination of CUVID_PKT_XXX flags */ |
||||
unsigned long payload_size; /**< number of bytes in the payload (may be zero if EOS flag is set) */ |
||||
const unsigned char *payload; /**< Pointer to packet payload data (may be NULL if EOS flag is set) */ |
||||
CUvideotimestamp timestamp; /**< Presentation timestamp (10MHz clock), only valid if CUVID_PKT_TIMESTAMP flag is set */ |
||||
} CUVIDSOURCEDATAPACKET; |
||||
|
||||
// Callback for packet delivery
|
||||
typedef int (CUDAAPI *PFNVIDSOURCECALLBACK)(void *, CUVIDSOURCEDATAPACKET *); |
||||
|
||||
/*!
|
||||
* \struct CUVIDSOURCEPARAMS |
||||
* Source Params |
||||
*/ |
||||
typedef struct _CUVIDSOURCEPARAMS |
||||
{ |
||||
unsigned int ulClockRate; /**< Timestamp units in Hz (0=default=10000000Hz) */ |
||||
unsigned int uReserved1[7]; /**< Reserved for future use - set to zero */ |
||||
void *pUserData; /**< Parameter passed in to the data handlers */ |
||||
PFNVIDSOURCECALLBACK pfnVideoDataHandler; /**< Called to deliver audio packets */ |
||||
PFNVIDSOURCECALLBACK pfnAudioDataHandler; /**< Called to deliver video packets */ |
||||
void *pvReserved2[8]; /**< Reserved for future use - set to NULL */ |
||||
} CUVIDSOURCEPARAMS; |
||||
|
||||
/*!
|
||||
* \enum CUvideosourceformat_flags |
||||
* CUvideosourceformat_flags |
||||
*/ |
||||
typedef enum { |
||||
CUVID_FMT_EXTFORMATINFO = 0x100 /**< Return extended format structure (CUVIDEOFORMATEX) */ |
||||
} CUvideosourceformat_flags; |
||||
|
||||
#if !defined(__APPLE__) |
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidCreateVideoSource(CUvideosource *pObj, const char *pszFileName, CUVIDSOURCEPARAMS *pParams) |
||||
* Create Video Source |
||||
*/ |
||||
CUresult CUDAAPI cuvidCreateVideoSource(CUvideosource *pObj, const char *pszFileName, CUVIDSOURCEPARAMS *pParams); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidCreateVideoSourceW(CUvideosource *pObj, const wchar_t *pwszFileName, CUVIDSOURCEPARAMS *pParams) |
||||
* Create Video Source |
||||
*/ |
||||
CUresult CUDAAPI cuvidCreateVideoSourceW(CUvideosource *pObj, const wchar_t *pwszFileName, CUVIDSOURCEPARAMS *pParams); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidDestroyVideoSource(CUvideosource obj) |
||||
* Destroy Video Source |
||||
*/ |
||||
CUresult CUDAAPI cuvidDestroyVideoSource(CUvideosource obj); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidSetVideoSourceState(CUvideosource obj, cudaVideoState state) |
||||
* Set Video Source state |
||||
*/ |
||||
CUresult CUDAAPI cuvidSetVideoSourceState(CUvideosource obj, cudaVideoState state); |
||||
|
||||
/**
|
||||
* \fn cudaVideoState CUDAAPI cuvidGetVideoSourceState(CUvideosource obj) |
||||
* Get Video Source state |
||||
*/ |
||||
cudaVideoState CUDAAPI cuvidGetVideoSourceState(CUvideosource obj); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidGetSourceVideoFormat(CUvideosource obj, CUVIDEOFORMAT *pvidfmt, unsigned int flags) |
||||
* Get Video Source Format |
||||
*/ |
||||
CUresult CUDAAPI cuvidGetSourceVideoFormat(CUvideosource obj, CUVIDEOFORMAT *pvidfmt, unsigned int flags); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidGetSourceAudioFormat(CUvideosource obj, CUAUDIOFORMAT *paudfmt, unsigned int flags) |
||||
* Set Video Source state |
||||
*/ |
||||
CUresult CUDAAPI cuvidGetSourceAudioFormat(CUvideosource obj, CUAUDIOFORMAT *paudfmt, unsigned int flags); |
||||
|
||||
#endif |
||||
|
||||
/**
|
||||
* \struct CUVIDPARSERDISPINFO |
||||
*/ |
||||
typedef struct _CUVIDPARSERDISPINFO |
||||
{ |
||||
int picture_index; /**< */ |
||||
int progressive_frame; /**< */ |
||||
int top_field_first; /**< */ |
||||
int repeat_first_field; /**< Number of additional fields (1=ivtc, 2=frame doubling, 4=frame tripling, -1=unpaired field) */ |
||||
CUvideotimestamp timestamp; /**< */ |
||||
} CUVIDPARSERDISPINFO; |
||||
|
||||
//
|
||||
// Parser callbacks
|
||||
// The parser will call these synchronously from within cuvidParseVideoData(), whenever a picture is ready to
|
||||
// be decoded and/or displayed.
|
||||
//
|
||||
typedef int (CUDAAPI *PFNVIDSEQUENCECALLBACK)(void *, CUVIDEOFORMAT *); |
||||
typedef int (CUDAAPI *PFNVIDDECODECALLBACK)(void *, CUVIDPICPARAMS *); |
||||
typedef int (CUDAAPI *PFNVIDDISPLAYCALLBACK)(void *, CUVIDPARSERDISPINFO *); |
||||
|
||||
/**
|
||||
* \struct CUVIDPARSERPARAMS |
||||
*/ |
||||
typedef struct _CUVIDPARSERPARAMS |
||||
{ |
||||
cudaVideoCodec CodecType; /**< cudaVideoCodec_XXX */ |
||||
unsigned int ulMaxNumDecodeSurfaces; /**< Max # of decode surfaces (parser will cycle through these) */ |
||||
unsigned int ulClockRate; /**< Timestamp units in Hz (0=default=10000000Hz) */ |
||||
unsigned int ulErrorThreshold; /**< % Error threshold (0-100) for calling pfnDecodePicture (100=always call pfnDecodePicture even if picture bitstream is fully corrupted) */ |
||||
unsigned int ulMaxDisplayDelay; /**< Max display queue delay (improves pipelining of decode with display) - 0=no delay (recommended values: 2..4) */ |
||||
unsigned int uReserved1[5]; /**< Reserved for future use - set to 0 */ |
||||
void *pUserData; /**< User data for callbacks */ |
||||
PFNVIDSEQUENCECALLBACK pfnSequenceCallback; /**< Called before decoding frames and/or whenever there is a format change */ |
||||
PFNVIDDECODECALLBACK pfnDecodePicture; /**< Called when a picture is ready to be decoded (decode order) */ |
||||
PFNVIDDISPLAYCALLBACK pfnDisplayPicture; /**< Called whenever a picture is ready to be displayed (display order) */ |
||||
void *pvReserved2[7]; /**< Reserved for future use - set to NULL */ |
||||
CUVIDEOFORMATEX *pExtVideoInfo; /**< [Optional] sequence header data from system layer */ |
||||
} CUVIDPARSERPARAMS; |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidCreateVideoParser(CUvideoparser *pObj, CUVIDPARSERPARAMS *pParams) |
||||
*/ |
||||
CUresult CUDAAPI cuvidCreateVideoParser(CUvideoparser *pObj, CUVIDPARSERPARAMS *pParams); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidParseVideoData(CUvideoparser obj, CUVIDSOURCEDATAPACKET *pPacket) |
||||
*/ |
||||
CUresult CUDAAPI cuvidParseVideoData(CUvideoparser obj, CUVIDSOURCEDATAPACKET *pPacket); |
||||
|
||||
/**
|
||||
* \fn CUresult CUDAAPI cuvidDestroyVideoParser(CUvideoparser obj) |
||||
*/ |
||||
CUresult CUDAAPI cuvidDestroyVideoParser(CUvideoparser obj); |
||||
|
||||
/** @} */ /* END VIDEO_PARSER */ |
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(__cplusplus) |
||||
} |
||||
#endif /* __cplusplus */ |
||||
|
||||
#endif // __NVCUVID_H__
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue