X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fnvdec.h;h=66f3ca59e719bcf45c3f91b88730f353d29ef37e;hb=1c7f252783aec37e4ff8049476386f63afe91756;hp=90578d5a1c4ee851a01c6289021030dc1c880682;hpb=20608261f7818fc034f96034a089e755f095716e;p=ffmpeg diff --git a/libavcodec/nvdec.h b/libavcodec/nvdec.h index 90578d5a1c4..66f3ca59e71 100644 --- a/libavcodec/nvdec.h +++ b/libavcodec/nvdec.h @@ -32,9 +32,20 @@ #include "avcodec.h" +#if defined(NVDECAPI_MAJOR_VERSION) && defined(NVDECAPI_MINOR_VERSION) +# define NVDECAPI_CHECK_VERSION(major, minor) \ + ((major) < NVDECAPI_MAJOR_VERSION || ((major) == NVDECAPI_MAJOR_VERSION && (minor) <= NVDECAPI_MINOR_VERSION)) +#else +/* version macros were added in SDK 8.1 ffnvcodec */ +# define NVDECAPI_CHECK_VERSION(major, minor) \ + ((major) < 8 || ((major) == 8 && (minor) <= 0)) +#endif + typedef struct NVDECFrame { unsigned int idx; + unsigned int ref_idx; AVBufferRef *idx_ref; + AVBufferRef *ref_idx_ref; AVBufferRef *decoder_ref; } NVDECFrame; @@ -48,22 +59,27 @@ typedef struct NVDECContext { uint8_t *bitstream; int bitstream_len; unsigned int bitstream_allocated; + uint8_t *bitstream_internal; unsigned *slice_offsets; int nb_slices; unsigned int slice_offsets_allocated; + + int supports_444; } NVDECContext; int ff_nvdec_decode_init(AVCodecContext *avctx); int ff_nvdec_decode_uninit(AVCodecContext *avctx); int ff_nvdec_start_frame(AVCodecContext *avctx, AVFrame *frame); +int ff_nvdec_start_frame_sep_ref(AVCodecContext *avctx, AVFrame *frame, int has_sep_ref); int ff_nvdec_end_frame(AVCodecContext *avctx); int ff_nvdec_simple_end_frame(AVCodecContext *avctx); int ff_nvdec_simple_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size); int ff_nvdec_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx, - int dpb_size); + int dpb_size, + int supports_444); int ff_nvdec_get_ref_idx(AVFrame *frame); #endif /* AVCODEC_NVDEC_H */