FFmpeg
libavcodec
videotoolbox.h
Go to the documentation of this file.
1
/*
2
* Videotoolbox hardware acceleration
3
*
4
* copyright (c) 2012 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_VIDEOTOOLBOX_H
24
#define AVCODEC_VIDEOTOOLBOX_H
25
26
/**
27
* @file
28
* @ingroup lavc_codec_hwaccel_videotoolbox
29
* Public libavcodec Videotoolbox header.
30
*/
31
32
#include <stdint.h>
33
34
#define Picture QuickdrawPicture
35
#include <VideoToolbox/VideoToolbox.h>
36
#undef Picture
37
38
#include "
libavcodec/avcodec.h
"
39
40
/**
41
* This struct holds all the information that needs to be passed
42
* between the caller and libavcodec for initializing Videotoolbox decoding.
43
* Its size is not a part of the public ABI, it must be allocated with
44
* av_videotoolbox_alloc_context() and freed with av_free().
45
*/
46
typedef
struct
AVVideotoolboxContext
{
47
/**
48
* Videotoolbox decompression session object.
49
* Created and freed the caller.
50
*/
51
VTDecompressionSessionRef
session
;
52
53
/**
54
* The output callback that must be passed to the session.
55
* Set by av_videottoolbox_default_init()
56
*/
57
VTDecompressionOutputCallback
output_callback
;
58
59
/**
60
* CVPixelBuffer Format Type that Videotoolbox will use for decoded frames.
61
* set by the caller. If this is set to 0, then no specific format is
62
* requested from the decoder, and its native format is output.
63
*/
64
OSType
cv_pix_fmt_type
;
65
66
/**
67
* CoreMedia Format Description that Videotoolbox will use to create the decompression session.
68
* Set by the caller.
69
*/
70
CMVideoFormatDescriptionRef
cm_fmt_desc
;
71
72
/**
73
* CoreMedia codec type that Videotoolbox will use to create the decompression session.
74
* Set by the caller.
75
*/
76
int
cm_codec_type
;
77
}
AVVideotoolboxContext
;
78
79
/**
80
* Allocate and initialize a Videotoolbox context.
81
*
82
* This function should be called from the get_format() callback when the caller
83
* selects the AV_PIX_FMT_VIDETOOLBOX format. The caller must then create
84
* the decoder object (using the output callback provided by libavcodec) that
85
* will be used for Videotoolbox-accelerated decoding.
86
*
87
* When decoding with Videotoolbox is finished, the caller must destroy the decoder
88
* object and free the Videotoolbox context using av_free().
89
*
90
* @return the newly allocated context or NULL on failure
91
*/
92
AVVideotoolboxContext
*
av_videotoolbox_alloc_context
(
void
);
93
94
/**
95
* This is a convenience function that creates and sets up the Videotoolbox context using
96
* an internal implementation.
97
*
98
* @param avctx the corresponding codec context
99
*
100
* @return >= 0 on success, a negative AVERROR code on failure
101
*/
102
int
av_videotoolbox_default_init
(
AVCodecContext
*avctx);
103
104
/**
105
* This is a convenience function that creates and sets up the Videotoolbox context using
106
* an internal implementation.
107
*
108
* @param avctx the corresponding codec context
109
* @param vtctx the Videotoolbox context to use
110
*
111
* @return >= 0 on success, a negative AVERROR code on failure
112
*/
113
int
av_videotoolbox_default_init2
(
AVCodecContext
*avctx,
AVVideotoolboxContext
*vtctx);
114
115
/**
116
* This function must be called to free the Videotoolbox context initialized with
117
* av_videotoolbox_default_init().
118
*
119
* @param avctx the corresponding codec context
120
*/
121
void
av_videotoolbox_default_free
(
AVCodecContext
*avctx);
122
123
/**
124
* @}
125
*/
126
127
#endif
/* AVCODEC_VIDEOTOOLBOX_H */
AVVideotoolboxContext::cm_codec_type
int cm_codec_type
CoreMedia codec type that Videotoolbox will use to create the decompression session.
Definition:
videotoolbox.h:76
av_videotoolbox_alloc_context
AVVideotoolboxContext * av_videotoolbox_alloc_context(void)
Allocate and initialize a Videotoolbox context.
av_videotoolbox_default_free
void av_videotoolbox_default_free(AVCodecContext *avctx)
This function must be called to free the Videotoolbox context initialized with av_videotoolbox_defaul...
AVVideotoolboxContext
This struct holds all the information that needs to be passed between the caller and libavcodec for i...
Definition:
videotoolbox.h:46
av_videotoolbox_default_init
int av_videotoolbox_default_init(AVCodecContext *avctx)
This is a convenience function that creates and sets up the Videotoolbox context using an internal im...
AVVideotoolboxContext::session
VTDecompressionSessionRef session
Videotoolbox decompression session object.
Definition:
videotoolbox.h:51
AVVideotoolboxContext::cm_fmt_desc
CMVideoFormatDescriptionRef cm_fmt_desc
CoreMedia Format Description that Videotoolbox will use to create the decompression session.
Definition:
videotoolbox.h:70
av_videotoolbox_default_init2
int av_videotoolbox_default_init2(AVCodecContext *avctx, AVVideotoolboxContext *vtctx)
This is a convenience function that creates and sets up the Videotoolbox context using an internal im...
AVVideotoolboxContext::output_callback
VTDecompressionOutputCallback output_callback
The output callback that must be passed to the session.
Definition:
videotoolbox.h:57
avcodec.h
AVCodecContext
main external API structure.
Definition:
avcodec.h:536
AVVideotoolboxContext::cv_pix_fmt_type
OSType cv_pix_fmt_type
CVPixelBuffer Format Type that Videotoolbox will use for decoded frames.
Definition:
videotoolbox.h:64
Generated on Wed Aug 24 2022 21:34:19 for FFmpeg by
1.8.17