Go to the documentation of this file.
24 #ifndef AVCODEC_VDPAU_INTERNAL_H
25 #define AVCODEC_VDPAU_INTERNAL_H
28 #include <vdpau/vdpau.h>
40 return (uintptr_t)pic->
data[3];
45 VdpPictureInfoMPEG1Or2
mpeg;
46 VdpPictureInfoVC1
vc1;
48 #ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
49 VdpPictureInfoH264Predictive h264_predictive;
51 #ifdef VDP_DECODER_PROFILE_HEVC_MAIN
52 VdpPictureInfoHEVC hevc;
54 #ifdef VDP_YCBCR_FORMAT_Y_U_V_444
55 VdpPictureInfoHEVC444 hevc_444;
57 #ifdef VDP_DECODER_PROFILE_VP9_PROFILE_0
58 VdpPictureInfoVP9 vp9;
60 #ifdef VDP_DECODER_PROFILE_AV1_MAIN
61 VdpPictureInfoAV1 av1;
int ff_vdpau_common_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
This structure describes decoded (raw) audio or video data.
VdpGetProcAddress * get_proc_address
int bitstream_buffers_used
Useful bitstream buffers in the bitstream buffers table.
VdpPictureInfoMPEG1Or2 mpeg
VdpDecoderRender * render
VDPAU decoder render callback.
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
This structure is used to share data between the libavcodec library and the client video application.
int ff_vdpau_add_buffer(struct vdpau_picture_context *pic, const uint8_t *buf, uint32_t buf_size)
int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, int level)
static uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
Extract VdpVideoSurface from an AVFrame.
int ff_vdpau_common_end_frame(AVCodecContext *avctx, AVFrame *frame, struct vdpau_picture_context *pic)
VdpDevice device
VDPAU device handle.
int ff_vdpau_common_uninit(AVCodecContext *avctx)
VdpPictureInfoMPEG4Part2 mpeg4
VdpDecoder decoder
VDPAU decoder handle.
int ff_vdpau_mpeg_end_frame(AVCodecContext *avctx)
int ff_vdpau_common_start_frame(struct vdpau_picture_context *pic, const uint8_t *buffer, uint32_t size)
VdpBitstreamBuffer * bitstream_buffers
Table of bitstream buffers.
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
VdpGetProcAddress * get_proc_address
VDPAU device driver.
int bitstream_buffers_allocated
Allocated size of the bitstream_buffers table.
main external API structure.
union VDPAUPictureInfo info
VDPAU picture information.
the frame and frame reference mechanism is intended to as much as expensive copies of that data while still allowing the filters to produce correct results The data is stored in buffers represented by AVFrame structures Several references can point to the same frame buffer
A reference to a data buffer.