FFmpeg
|
#include <string.h>
#include <initguid.h>
#include "libavutil/common.h"
#include "libavutil/log.h"
#include "libavutil/mem.h"
#include "libavutil/time.h"
#include "libavutil/imgutils.h"
#include "libavutil/hwcontext_d3d12va_internal.h"
#include "libavutil/hwcontext_d3d12va.h"
#include "avcodec.h"
#include "decode.h"
#include "d3d12va_decode.h"
#include "dxva2_internal.h"
Go to the source code of this file.
Data Structures | |
struct | HelperObjects |
Functions | |
int | ff_d3d12va_get_suitable_max_bitstream_size (AVCodecContext *avctx) |
Get a suitable maximum bitstream size. More... | |
unsigned | ff_d3d12va_get_surface_index (const AVCodecContext *avctx, D3D12VADecodeContext *ctx, const AVFrame *frame, int curr) |
static int | d3d12va_get_valid_helper_objects (AVCodecContext *avctx, ID3D12CommandAllocator **ppAllocator, ID3D12Resource **ppBuffer) |
static int | d3d12va_discard_helper_objects (AVCodecContext *avctx, ID3D12CommandAllocator *pAllocator, ID3D12Resource *pBuffer, uint64_t fence_value) |
static int | d3d12va_fence_completion (AVD3D12VASyncContext *psync_ctx) |
static void | bufref_free_interface (void *opaque, uint8_t *data) |
static AVBufferRef * | bufref_wrap_interface (IUnknown *iface) |
static int | d3d12va_sync_with_gpu (AVCodecContext *avctx) |
static int | d3d12va_create_decoder_heap (AVCodecContext *avctx) |
static int | d3d12va_create_decoder (AVCodecContext *avctx) |
int | ff_d3d12va_common_frame_params (AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) |
d3d12va common frame params More... | |
int | ff_d3d12va_decode_init (AVCodecContext *avctx) |
init D3D12VADecodeContext More... | |
int | ff_d3d12va_decode_uninit (AVCodecContext *avctx) |
uninit D3D12VADecodeContext More... | |
static int | d3d12va_update_reference_frames_state (AVCodecContext *avctx, D3D12_RESOURCE_BARRIER *barriers, ID3D12Resource *current_resource, int state_before, int state_end) |
int | ff_d3d12va_common_end_frame (AVCodecContext *avctx, AVFrame *frame, const void *pp, unsigned pp_size, const void *qm, unsigned qm_size, int(*update_input_arguments)(AVCodecContext *, D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *, ID3D12Resource *)) |
d3d12va common end frame More... | |
int ff_d3d12va_get_suitable_max_bitstream_size | ( | AVCodecContext * | avctx | ) |
Get a suitable maximum bitstream size.
Creating and destroying a resource on d3d12 needs sync and reallocation, so use this function to help allocate a big enough bitstream buffer to avoid recreating resources when decoding.
Definition at line 44 of file d3d12va_decode.c.
Referenced by d3d12va_av1_decode_init(), and ff_d3d12va_decode_init().
unsigned ff_d3d12va_get_surface_index | ( | const AVCodecContext * | avctx, |
D3D12VADecodeContext * | ctx, | ||
const AVFrame * | frame, | ||
int | curr | ||
) |
Definition at line 50 of file d3d12va_decode.c.
Referenced by ff_dxva2_get_surface_index().
|
static |
Definition at line 87 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame(), and ff_d3d12va_decode_init().
|
static |
Definition at line 137 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame(), and ff_d3d12va_decode_init().
|
static |
Definition at line 157 of file d3d12va_decode.c.
Referenced by d3d12va_sync_with_gpu(), and ff_d3d12va_common_end_frame().
|
static |
Definition at line 170 of file d3d12va_decode.c.
Referenced by bufref_wrap_interface().
|
static |
Definition at line 175 of file d3d12va_decode.c.
Referenced by d3d12va_create_decoder().
|
static |
Definition at line 180 of file d3d12va_decode.c.
Referenced by ff_d3d12va_decode_init(), and ff_d3d12va_decode_uninit().
|
static |
Definition at line 191 of file d3d12va_decode.c.
Referenced by ff_d3d12va_decode_init().
|
static |
Definition at line 223 of file d3d12va_decode.c.
Referenced by ff_d3d12va_decode_init().
int ff_d3d12va_common_frame_params | ( | AVCodecContext * | avctx, |
AVBufferRef * | hw_frames_ctx | ||
) |
d3d12va common frame params
Definition at line 271 of file d3d12va_decode.c.
int ff_d3d12va_decode_init | ( | AVCodecContext * | avctx | ) |
init D3D12VADecodeContext
Definition at line 283 of file d3d12va_decode.c.
Referenced by d3d12va_av1_decode_init(), d3d12va_h264_decode_init(), d3d12va_hevc_decode_init(), d3d12va_mpeg2_decode_init(), d3d12va_vc1_decode_init(), and d3d12va_vp9_decode_init().
int ff_d3d12va_decode_uninit | ( | AVCodecContext * | avctx | ) |
uninit D3D12VADecodeContext
Definition at line 373 of file d3d12va_decode.c.
Referenced by d3d12va_av1_decode_uninit(), and ff_d3d12va_decode_init().
|
inlinestatic |
Definition at line 411 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame().
int ff_d3d12va_common_end_frame | ( | AVCodecContext * | avctx, |
AVFrame * | frame, | ||
const void * | pp, | ||
unsigned | pp_size, | ||
const void * | qm, | ||
unsigned | qm_size, | ||
int(*)(AVCodecContext *, D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *, ID3D12Resource *) | |||
) |
d3d12va common end frame
avctx | codec context |
frame | current output frame |
pp | picture parameters |
pp_size | the size of the picture parameters |
qm | quantization matrix |
qm_size | the size of the quantization matrix |
callback | update decoder-specified input stream arguments |
Definition at line 434 of file d3d12va_decode.c.
Referenced by d3d12va_av1_end_frame(), d3d12va_h264_end_frame(), d3d12va_hevc_end_frame(), d3d12va_mpeg2_end_frame(), d3d12va_vc1_end_frame(), and d3d12va_vp9_end_frame().