FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
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 "
qsv_internal.h
"
37
38
typedef
struct
QSVContext
{
39
// the session used for decoding
40
mfxSession
session
;
41
42
// the session we allocated internally, in case the caller did not provide
43
// one
44
QSVSession
internal_qs
;
45
46
/**
47
* a linked list of frames currently being used by QSV
48
*/
49
QSVFrame
*
work_frames
;
50
51
AVFifoBuffer
*
async_fifo
;
52
AVFifoBuffer
*
input_fifo
;
53
54
// we should to buffer input packets at some cases
55
// else it is not possible to handle dynamic stream changes correctly
56
// this fifo uses for input packets buffering
57
AVFifoBuffer
*
pkt_fifo
;
58
59
// this flag indicates that header parsed,
60
// decoder instance created and ready to general decoding
61
int
engine_ready
;
62
63
// we can not just re-init decoder if different sequence header arrived
64
// we should to deliver all buffered frames but we can not decode new packets
65
// this time. So when reinit_pending is non-zero we flushing decoder and
66
// accumulate new arrived packets into pkt_fifo
67
int
reinit_pending
;
68
69
// options set by the caller
70
int
async_depth
;
71
int
iopattern
;
72
73
char
*
load_plugins
;
74
75
mfxExtBuffer **
ext_buffers
;
76
int
nb_ext_buffers
;
77
}
QSVContext
;
78
79
int
ff_qsv_map_pixfmt
(
enum
AVPixelFormat
format
);
80
81
int
ff_qsv_decode
(
AVCodecContext
*
s
,
QSVContext
*q,
82
AVFrame
*
frame
,
int
*got_frame,
83
AVPacket
*avpkt);
84
85
void
ff_qsv_decode_reset
(
AVCodecContext
*avctx,
QSVContext
*q);
86
87
int
ff_qsv_decode_close
(
QSVContext
*q);
88
89
#endif
/* AVCODEC_QSVDEC_H */
QSVContext::iopattern
int iopattern
Definition:
qsvdec.h:71
s
const char * s
Definition:
avisynth_c.h:631
QSVContext::reinit_pending
int reinit_pending
Definition:
qsvdec.h:67
QSVContext::pkt_fifo
AVFifoBuffer * pkt_fifo
Definition:
qsvdec.h:57
QSVContext::input_fifo
AVFifoBuffer * input_fifo
Definition:
qsvdec.h:52
AVFrame
This structure describes decoded (raw) audio or video data.
Definition:
frame.h:184
QSVContext::ext_buffers
mfxExtBuffer ** ext_buffers
Definition:
qsvdec.h:75
QSVContext::internal_qs
QSVSession internal_qs
Definition:
qsvdec.h:44
qsv_internal.h
QSVFrame
Definition:
qsv_internal.h:56
frame
static AVFrame * frame
Definition:
demuxing_decoding.c:53
QSVContext
Definition:
ffmpeg_qsv.c:29
frame.h
reference-counted frame API
ff_qsv_decode_reset
void ff_qsv_decode_reset(AVCodecContext *avctx, QSVContext *q)
Definition:
qsvdec.c:549
QSVSession
Definition:
qsv_internal.h:68
QSVContext::engine_ready
int engine_ready
Definition:
qsvdec.h:61
AVFifoBuffer
Definition:
fifo.h:31
ff_qsv_map_pixfmt
int ff_qsv_map_pixfmt(enum AVPixelFormat format)
Definition:
qsvdec.c:41
avcodec.h
Libavcodec external API header.
AVCodecContext
main external API structure.
Definition:
avcodec.h:1649
fifo.h
a very simple circular buffer FIFO implementation
format
static const char * format
Definition:
movenc.c:47
QSVContext::load_plugins
char * load_plugins
Definition:
qsvdec.h:73
ff_qsv_decode_close
int ff_qsv_decode_close(QSVContext *q)
Definition:
qsvdec.c:592
ff_qsv_decode
int ff_qsv_decode(AVCodecContext *s, QSVContext *q, AVFrame *frame, int *got_frame, AVPacket *avpkt)
Definition:
qsvdec.c:493
pixfmt.h
pixel format definitions
QSVContext::session
mfxSession session
Definition:
ffmpeg_qsv.c:32
QSVContext::async_fifo
AVFifoBuffer * async_fifo
Definition:
qsvdec.h:51
QSVContext::async_depth
int async_depth
Definition:
qsvdec.h:70
QSVContext::work_frames
QSVFrame * work_frames
a linked list of frames currently being used by QSV
Definition:
qsvdec.h:49
AVPixelFormat
AVPixelFormat
Pixel format.
Definition:
pixfmt.h:60
AVPacket
This structure stores compressed data.
Definition:
avcodec.h:1557
QSVContext::nb_ext_buffers
int nb_ext_buffers
Definition:
qsvdec.h:76
Generated on Mon Jun 27 2016 02:34:39 for FFmpeg by
1.8.6