Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
e4d9f05c
Commit
e4d9f05c
authored
Dec 04, 2017
by
Aman Gupta
Committed by
Matthieu Bouron
Dec 15, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavu/hwcontext: add AV_HWDEVICE_TYPE_MEDIACODEC
Signed-off-by:
Matthieu Bouron
<
matthieu.bouron@gmail.com
>
parent
5450972b
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
99 additions
and
1 deletion
+99
-1
APIchanges
doc/APIchanges
+4
-0
Makefile
libavutil/Makefile
+2
-0
hwcontext.c
libavutil/hwcontext.c
+4
-0
hwcontext.h
libavutil/hwcontext.h
+1
-0
hwcontext_internal.h
libavutil/hwcontext_internal.h
+1
-0
hwcontext_mediacodec.c
libavutil/hwcontext_mediacodec.c
+50
-0
hwcontext_mediacodec.h
libavutil/hwcontext_mediacodec.h
+36
-0
version.h
libavutil/version.h
+1
-1
No files found.
doc/APIchanges
View file @
e4d9f05c
...
...
@@ -15,6 +15,10 @@ libavutil: 2017-10-21
API changes, most recent first:
2017-xx-xx - xxxxxxx - lavu 56.6.100 - hwcontext.h hwcontext_mediacodec.h
Add AV_HWDEVICE_TYPE_MEDIACODEC and a new installed header with
MediaCodec-specific hwcontext definitions.
2017-xx-xx - xxxxxxc - lavc 58.7.100 - avcodec.h
Add AV_CODEC_CAP_HARDWARE, AV_CODEC_CAP_HYBRID, and AVCodec.wrapper_name,
and mark all AVCodecs accordingly.
...
...
libavutil/Makefile
View file @
e4d9f05c
...
...
@@ -37,6 +37,7 @@ HEADERS = adler32.h \
hwcontext_drm.h
\
hwcontext_dxva2.h
\
hwcontext_qsv.h
\
hwcontext_mediacodec.h
\
hwcontext_vaapi.h
\
hwcontext_videotoolbox.h
\
hwcontext_vdpau.h
\
...
...
@@ -166,6 +167,7 @@ OBJS-$(CONFIG_OPENCL) += hwcontext_opencl.o
OBJS-$(CONFIG_VAAPI)
+=
hwcontext_vaapi.o
OBJS-$(CONFIG_VIDEOTOOLBOX)
+=
hwcontext_videotoolbox.o
OBJS-$(CONFIG_VDPAU)
+=
hwcontext_vdpau.o
OBJS-$(CONFIG_MEDIACODEC)
+=
hwcontext_mediacodec.o
OBJS
+=
$
(
COMPAT_OBJS:%
=
../compat/%
)
...
...
libavutil/hwcontext.c
View file @
e4d9f05c
...
...
@@ -55,6 +55,9 @@ static const HWContextType * const hw_table[] = {
#endif
#if CONFIG_VIDEOTOOLBOX
&
ff_hwcontext_type_videotoolbox
,
#endif
#if CONFIG_MEDIACODEC
&
ff_hwcontext_type_mediacodec
,
#endif
NULL
,
};
...
...
@@ -69,6 +72,7 @@ static const char *const hw_type_names[] = {
[
AV_HWDEVICE_TYPE_VAAPI
]
=
"vaapi"
,
[
AV_HWDEVICE_TYPE_VDPAU
]
=
"vdpau"
,
[
AV_HWDEVICE_TYPE_VIDEOTOOLBOX
]
=
"videotoolbox"
,
[
AV_HWDEVICE_TYPE_MEDIACODEC
]
=
"mediacodec"
,
};
enum
AVHWDeviceType
av_hwdevice_find_type_by_name
(
const
char
*
name
)
...
...
libavutil/hwcontext.h
View file @
e4d9f05c
...
...
@@ -35,6 +35,7 @@ enum AVHWDeviceType {
AV_HWDEVICE_TYPE_D3D11VA
,
AV_HWDEVICE_TYPE_DRM
,
AV_HWDEVICE_TYPE_OPENCL
,
AV_HWDEVICE_TYPE_MEDIACODEC
,
};
typedef
struct
AVHWDeviceInternal
AVHWDeviceInternal
;
...
...
libavutil/hwcontext_internal.h
View file @
e4d9f05c
...
...
@@ -166,5 +166,6 @@ extern const HWContextType ff_hwcontext_type_qsv;
extern
const
HWContextType
ff_hwcontext_type_vaapi
;
extern
const
HWContextType
ff_hwcontext_type_vdpau
;
extern
const
HWContextType
ff_hwcontext_type_videotoolbox
;
extern
const
HWContextType
ff_hwcontext_type_mediacodec
;
#endif
/* AVUTIL_HWCONTEXT_INTERNAL_H */
libavutil/hwcontext_mediacodec.c
0 → 100644
View file @
e4d9f05c
/*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "config.h"
#include "buffer.h"
#include "common.h"
#include "hwcontext.h"
#include "hwcontext_internal.h"
#include "hwcontext_mediacodec.h"
static
int
mc_device_create
(
AVHWDeviceContext
*
ctx
,
const
char
*
device
,
AVDictionary
*
opts
,
int
flags
)
{
if
(
device
&&
device
[
0
])
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Device selection unsupported.
\n
"
);
return
AVERROR_UNKNOWN
;
}
return
0
;
}
const
HWContextType
ff_hwcontext_type_mediacodec
=
{
.
type
=
AV_HWDEVICE_TYPE_MEDIACODEC
,
.
name
=
"mediacodec"
,
.
device_hwctx_size
=
sizeof
(
AVMediaCodecDeviceContext
),
.
device_create
=
mc_device_create
,
.
pix_fmts
=
(
const
enum
AVPixelFormat
[]){
AV_PIX_FMT_MEDIACODEC
,
AV_PIX_FMT_NONE
},
};
libavutil/hwcontext_mediacodec.h
0 → 100644
View file @
e4d9f05c
/*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVUTIL_HWCONTEXT_MEDIACODEC_H
#define AVUTIL_HWCONTEXT_MEDIACODEC_H
/**
* MediaCodec details.
*
* Allocated as AVHWDeviceContext.hwctx
*/
typedef
struct
AVMediaCodecDeviceContext
{
/**
* android/view/Surface handle, to be filled by the user.
*
* This is the default surface used by decoders on this device.
*/
void
*
surface
;
}
AVMediaCodecDeviceContext
;
#endif
/* AVUTIL_HWCONTEXT_MEDIACODEC_H */
libavutil/version.h
View file @
e4d9f05c
...
...
@@ -79,7 +79,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
#define LIBAVUTIL_VERSION_MINOR
5
#define LIBAVUTIL_VERSION_MINOR
6
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment