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:181
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:54
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:527
QSVSession
Definition:
qsv_internal.h:66
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:1532
format
static const char * format
Definition:
movenc-test.c:47
fifo.h
a very simple circular buffer FIFO implementation
QSVContext::load_plugins
char * load_plugins
Definition:
qsvdec.h:73
ff_qsv_decode_close
int ff_qsv_decode_close(QSVContext *q)
Definition:
qsvdec.c:570
ff_qsv_decode
int ff_qsv_decode(AVCodecContext *s, QSVContext *q, AVFrame *frame, int *got_frame, AVPacket *avpkt)
Definition:
qsvdec.c:471
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:61
AVPacket
This structure stores compressed data.
Definition:
avcodec.h:1444
QSVContext::nb_ext_buffers
int nb_ext_buffers
Definition:
qsvdec.h:76
Generated on Mon Feb 15 2016 15:20:41 for FFmpeg by
1.8.6