Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6148 serge 1
/*
2
 * VDA HW acceleration
3
 *
4
 * copyright (c) 2011 Sebastien Zwickert
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_VDA_H
24
#define AVCODEC_VDA_H
25
 
26
/**
27
 * @file
28
 * @ingroup lavc_codec_hwaccel_vda
29
 * Public libavcodec VDA header.
30
 */
31
 
32
#include 
33
 
34
// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
35
// http://openradar.appspot.com/8026390
36
#undef __GNUC_STDC_INLINE__
37
 
38
#define Picture QuickdrawPicture
39
#include 
40
#undef Picture
41
 
42
#include "libavcodec/version.h"
43
 
44
/**
45
 * @defgroup lavc_codec_hwaccel_vda VDA
46
 * @ingroup lavc_codec_hwaccel
47
 *
48
 * @{
49
 */
50
 
51
/**
52
 * This structure is used to provide the necessary configurations and data
53
 * to the VDA FFmpeg HWAccel implementation.
54
 *
55
 * The application must make it available as AVCodecContext.hwaccel_context.
56
 */
57
struct vda_context {
58
    /**
59
     * VDA decoder object.
60
     *
61
     * - encoding: unused
62
     * - decoding: Set/Unset by libavcodec.
63
     */
64
    VDADecoder          decoder;
65
 
66
    /**
67
     * The Core Video pixel buffer that contains the current image data.
68
     *
69
     * encoding: unused
70
     * decoding: Set by libavcodec. Unset by user.
71
     */
72
    CVPixelBufferRef    cv_buffer;
73
 
74
    /**
75
     * Use the hardware decoder in synchronous mode.
76
     *
77
     * encoding: unused
78
     * decoding: Set by user.
79
     */
80
    int                 use_sync_decoding;
81
 
82
    /**
83
     * The frame width.
84
     *
85
     * - encoding: unused
86
     * - decoding: Set/Unset by user.
87
     */
88
    int                 width;
89
 
90
    /**
91
     * The frame height.
92
     *
93
     * - encoding: unused
94
     * - decoding: Set/Unset by user.
95
     */
96
    int                 height;
97
 
98
    /**
99
     * The frame format.
100
     *
101
     * - encoding: unused
102
     * - decoding: Set/Unset by user.
103
     */
104
    int                 format;
105
 
106
    /**
107
     * The pixel format for output image buffers.
108
     *
109
     * - encoding: unused
110
     * - decoding: Set/Unset by user.
111
     */
112
    OSType              cv_pix_fmt_type;
113
 
114
    /**
115
     * The current bitstream buffer.
116
     *
117
     * - encoding: unused
118
     * - decoding: Set/Unset by libavcodec.
119
     */
120
    uint8_t             *priv_bitstream;
121
 
122
    /**
123
     * The current size of the bitstream.
124
     *
125
     * - encoding: unused
126
     * - decoding: Set/Unset by libavcodec.
127
     */
128
    int                 priv_bitstream_size;
129
 
130
    /**
131
     * The reference size used for fast reallocation.
132
     *
133
     * - encoding: unused
134
     * - decoding: Set/Unset by libavcodec.
135
     */
136
    int                 priv_allocated_size;
137
 
138
    /**
139
     * Use av_buffer to manage buffer.
140
     * When the flag is set, the CVPixelBuffers returned by the decoder will
141
     * be released automatically, so you have to retain them if necessary.
142
     * Not setting this flag may cause memory leak.
143
     *
144
     * encoding: unused
145
     * decoding: Set by user.
146
     */
147
    int                 use_ref_buffer;
148
};
149
 
150
/** Create the video decoder. */
151
int ff_vda_create_decoder(struct vda_context *vda_ctx,
152
                          uint8_t *extradata,
153
                          int extradata_size);
154
 
155
/** Destroy the video decoder. */
156
int ff_vda_destroy_decoder(struct vda_context *vda_ctx);
157
 
158
/**
159
 * @}
160
 */
161
 
162
#endif /* AVCODEC_VDA_H */