fc0263cabce8fafe8fdbff1c1b4c37f5659c3972
[platform/upstream/ffmpeg.git] / libavutil / hwcontext_mediacodec.h
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18
19 #ifndef AVUTIL_HWCONTEXT_MEDIACODEC_H
20 #define AVUTIL_HWCONTEXT_MEDIACODEC_H
21
22 /**
23  * MediaCodec details.
24  *
25  * Allocated as AVHWDeviceContext.hwctx
26  */
27 typedef struct AVMediaCodecDeviceContext {
28     /**
29      * android/view/Surface handle, to be filled by the user.
30      *
31      * This is the default surface used by decoders on this device.
32      */
33     void *surface;
34
35     /**
36      * Pointer to ANativeWindow.
37      *
38      * It both surface and native_window is NULL, try to create it
39      * automatically if create_window is true and OS support
40      * createPersistentInputSurface.
41      *
42      * It can be used as output surface for decoder and input surface for
43      * encoder.
44      */
45     void *native_window;
46
47     /**
48      * Enable createPersistentInputSurface automatically.
49      *
50      * Disabled by default.
51      *
52      * It can be enabled by setting this flag directly, or by setting
53      * AVDictionary of av_hwdevice_ctx_create(), with "create_window" as key.
54      * The second method is useful for ffmpeg cmdline, e.g., we can enable it
55      * via:
56      *   -init_hw_device mediacodec=mediacodec,create_window=1
57      */
58     int create_window;
59 } AVMediaCodecDeviceContext;
60
61 #endif /* AVUTIL_HWCONTEXT_MEDIACODEC_H */