FFmpeg
4.3.8
libavcodec
qsvdec.h
Go to the documentation of this file.
1
/*
2
* Intel MediaSDK QSV utility functions
3
*
4
* copyright (c) 2013 Luca Barbato
5
*
6
* This file is part of FFmpeg.
7
*
8
* FFmpeg is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License as published by the Free Software Foundation; either
11
* version 2.1 of the License, or (at your option) any later version.
12
*
13
* FFmpeg is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Lesser General Public License for more details.
17
*
18
* You should have received a copy of the GNU Lesser General Public
19
* License along with FFmpeg; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*/
22
23
#ifndef AVCODEC_QSVDEC_H
24
#define AVCODEC_QSVDEC_H
25
26
#include <stdint.h>
27
#include <sys/types.h>
28
29
#include <mfx/mfxvideo.h>
30
31
#include "
libavutil/fifo.h
"
32
#include "
libavutil/frame.h
"
33
#include "
libavutil/pixfmt.h
"
34
35
#include "
avcodec.h
"
36
#include "
hwconfig.h
"
37
#include "
qsv_internal.h
"
38
39
typedef
struct
QSVContext
{
40
// the session used for decoding
41
mfxSession
session
;
42
43
// the session we allocated internally, in case the caller did not provide
44
// one
45
QSVSession
internal_qs
;
46
47
QSVFramesContext
frames_ctx
;
48
49
/**
50
* a linked list of frames currently being used by QSV
51
*/
52
QSVFrame
*
work_frames
;
53
54
AVFifoBuffer
*
async_fifo
;
55
int
zero_consume_run
;
56
int
buffered_count
;
57
int
reinit_flag
;
58
59
enum
AVPixelFormat
orig_pix_fmt
;
60
uint32_t
fourcc
;
61
mfxFrameInfo
frame_info
;
62
AVBufferPool
*
pool
;
63
64
int
initialized
;
65
66
// options set by the caller
67
int
async_depth
;
68
int
iopattern
;
69
int
gpu_copy
;
70
71
char
*
load_plugins
;
72
73
mfxExtBuffer **
ext_buffers
;
74
int
nb_ext_buffers
;
75
}
QSVContext
;
76
77
extern
const
AVCodecHWConfigInternal
*
ff_qsv_hw_configs
[];
78
79
int
ff_qsv_process_data
(
AVCodecContext
*avctx,
QSVContext
*q,
80
AVFrame
*
frame
,
int
*got_frame,
AVPacket
*
pkt
);
81
82
void
ff_qsv_decode_flush
(
AVCodecContext
*avctx,
QSVContext
*q);
83
84
int
ff_qsv_decode_close
(
QSVContext
*q);
85
86
#endif
/* AVCODEC_QSVDEC_H */
QSVContext::iopattern
int iopattern
Definition:
qsvdec.h:68
AVFrame
This structure describes decoded (raw) audio or video data.
Definition:
frame.h:300
QSVContext::ext_buffers
mfxExtBuffer ** ext_buffers
Definition:
qsvdec.h:73
ff_qsv_hw_configs
const AVCodecHWConfigInternal * ff_qsv_hw_configs[]
Definition:
qsvdec.c:46
pkt
static AVPacket pkt
Definition:
demuxing_decoding.c:54
QSVContext::internal_qs
QSVSession internal_qs
Definition:
qsvdec.h:45
qsv_internal.h
QSVFrame
Definition:
qsv_internal.h:70
frame
static AVFrame * frame
Definition:
demuxing_decoding.c:53
QSVContext
Definition:
qsvdec.h:39
AVBufferPool
The buffer pool.
Definition:
buffer_internal.h:77
QSVContext::reinit_flag
int reinit_flag
Definition:
qsvdec.h:57
AVCodecHWConfigInternal
Definition:
hwconfig.h:29
frame.h
reference-counted frame API
QSVContext::buffered_count
int buffered_count
Definition:
qsvdec.h:56
QSVContext::zero_consume_run
int zero_consume_run
Definition:
qsvdec.h:55
QSVContext::pool
AVBufferPool * pool
Definition:
qsvdec.h:62
ff_qsv_decode_flush
void ff_qsv_decode_flush(AVCodecContext *avctx, QSVContext *q)
Definition:
qsvdec.c:634
QSVSession
Definition:
qsv_internal.h:83
AVFifoBuffer
Definition:
fifo.h:31
QSVContext::orig_pix_fmt
enum AVPixelFormat orig_pix_fmt
Definition:
qsvdec.h:59
avcodec.h
Libavcodec external API header.
AVCodecContext
main external API structure.
Definition:
avcodec.h:526
fifo.h
a very simple circular buffer FIFO implementation
QSVContext::gpu_copy
int gpu_copy
Definition:
qsvdec.h:69
QSVContext::load_plugins
char * load_plugins
Definition:
qsvdec.h:71
ff_qsv_decode_close
int ff_qsv_decode_close(QSVContext *q)
Definition:
qsvdec.c:536
QSVContext::frame_info
mfxFrameInfo frame_info
Definition:
qsvdec.h:61
hwconfig.h
pixfmt.h
pixel format definitions
QSVFramesContext
Definition:
qsv_internal.h:91
QSVContext::frames_ctx
QSVFramesContext frames_ctx
Definition:
qsvdec.h:47
QSVContext::session
mfxSession session
Definition:
qsvdec.h:41
QSVContext::async_fifo
AVFifoBuffer * async_fifo
Definition:
qsvdec.h:54
QSVContext::fourcc
uint32_t fourcc
Definition:
qsvdec.h:60
QSVContext::initialized
int initialized
Definition:
qsvdec.h:64
QSVContext::async_depth
int async_depth
Definition:
qsvdec.h:67
ff_qsv_process_data
int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q, AVFrame *frame, int *got_frame, AVPacket *pkt)
Definition:
qsvdec.c:572
QSVContext::work_frames
QSVFrame * work_frames
a linked list of frames currently being used by QSV
Definition:
qsvdec.h:52
AVPixelFormat
AVPixelFormat
Pixel format.
Definition:
pixfmt.h:64
AVPacket
This structure stores compressed data.
Definition:
packet.h:332
QSVContext::nb_ext_buffers
int nb_ext_buffers
Definition:
qsvdec.h:74
Generated on Tue Aug 6 2024 10:36:59 for FFmpeg by
1.8.13