|
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 |
| struct | ReferenceFrame |
Functions | |
| static ID3D12Resource * | get_reference_only_resource (AVCodecContext *avctx, ID3D12Resource *output_resource) |
| static void | free_reference_only_resources (AVCodecContext *avctx) |
| static void | prepare_reference_only_resources (AVCodecContext *avctx) |
| 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... | |
| av_cold int | ff_d3d12va_decode_init (AVCodecContext *avctx) |
| init D3D12VADecodeContext More... | |
| av_cold 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... | |
|
static |
Definition at line 50 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame().
|
static |
Definition at line 102 of file d3d12va_decode.c.
Referenced by ff_d3d12va_decode_uninit().
|
static |
Definition at line 118 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame().
| 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 138 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 144 of file d3d12va_decode.c.
Referenced by ff_dxva2_get_surface_index().
|
static |
Definition at line 181 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame(), and ff_d3d12va_decode_init().
|
static |
Definition at line 231 of file d3d12va_decode.c.
Referenced by ff_d3d12va_common_end_frame(), and ff_d3d12va_decode_init().
|
static |
Definition at line 251 of file d3d12va_decode.c.
Referenced by d3d12va_sync_with_gpu(), and ff_d3d12va_common_end_frame().
|
static |
Definition at line 264 of file d3d12va_decode.c.
Referenced by bufref_wrap_interface().
|
static |
Definition at line 269 of file d3d12va_decode.c.
Referenced by d3d12va_create_decoder().
|
static |
Definition at line 274 of file d3d12va_decode.c.
Referenced by ff_d3d12va_decode_init(), and ff_d3d12va_decode_uninit().
|
static |
Definition at line 285 of file d3d12va_decode.c.
Referenced by ff_d3d12va_decode_init().
|
static |
Definition at line 317 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 377 of file d3d12va_decode.c.
| av_cold int ff_d3d12va_decode_init | ( | AVCodecContext * | avctx | ) |
init D3D12VADecodeContext
Definition at line 389 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().
| av_cold int ff_d3d12va_decode_uninit | ( | AVCodecContext * | avctx | ) |
uninit D3D12VADecodeContext
Definition at line 479 of file d3d12va_decode.c.
Referenced by d3d12va_av1_decode_uninit(), and ff_d3d12va_decode_init().
|
inlinestatic |
Definition at line 518 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 542 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().
1.8.17