... | ... |
@@ -10,7 +10,7 @@ version <next>: |
10 | 10 |
- curves filter doesn't automatically insert points at x=0 and x=1 anymore |
11 | 11 |
- 16-bit support in curves filter and selectivecolor filter |
12 | 12 |
- OpenH264 decoder wrapper |
13 |
-- MediaCodec H.264/HEVC/VP8/VP9 hwaccel |
|
13 |
+- MediaCodec H.264/HEVC/MPEG-4/VP8/VP9 hwaccel |
|
14 | 14 |
- True Audio (TTA) muxer |
15 | 15 |
- crystalizer audio filter |
16 | 16 |
- acrusher audio filter |
... | ... |
@@ -28,7 +28,7 @@ version <next>: |
28 | 28 |
- gblur filter |
29 | 29 |
- avgblur filter |
30 | 30 |
- sobel and prewitt filter |
31 |
-- MediaCodec HEVC/VP8/VP9 decoding |
|
31 |
+- MediaCodec HEVC/MPEG-4/VP8/VP9 decoding |
|
32 | 32 |
- Meridian Lossless Packing (MLP) / TrueHD encoder |
33 | 33 |
- Non-Local Means (nlmeans) denoising filter |
34 | 34 |
- sdl2 output device and ffplay support |
... | ... |
@@ -2630,6 +2630,8 @@ mpeg2_xvmc_hwaccel_deps="xvmc" |
2630 | 2630 |
mpeg2_xvmc_hwaccel_select="mpeg2video_decoder" |
2631 | 2631 |
mpeg4_crystalhd_decoder_select="crystalhd" |
2632 | 2632 |
mpeg4_cuvid_hwaccel_deps="cuda cuvid" |
2633 |
+mpeg4_mediacodec_decoder_deps="mediacodec" |
|
2634 |
+mpeg4_mediacodec_hwaccel_deps="mediacodec" |
|
2633 | 2635 |
mpeg4_mmal_decoder_deps="mmal" |
2634 | 2636 |
mpeg4_mmal_decoder_select="mmal" |
2635 | 2637 |
mpeg4_mmal_hwaccel_deps="mmal" |
... | ... |
@@ -413,6 +413,7 @@ OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o |
413 | 413 |
OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o |
414 | 414 |
OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpeg12.o |
415 | 415 |
OBJS-$(CONFIG_MPEG4_DECODER) += xvididct.o |
416 |
+OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec_h2645.o |
|
416 | 417 |
OBJS-$(CONFIG_MPEG4_OMX_ENCODER) += omx.o |
417 | 418 |
OBJS-$(CONFIG_MPL2_DECODER) += mpl2dec.o ass.o |
418 | 419 |
OBJS-$(CONFIG_MSA1_DECODER) += mss3.o |
... | ... |
@@ -103,6 +103,7 @@ void avcodec_register_all(void) |
103 | 103 |
REGISTER_HWACCEL(MPEG2_VDPAU, mpeg2_vdpau); |
104 | 104 |
REGISTER_HWACCEL(MPEG2_VIDEOTOOLBOX, mpeg2_videotoolbox); |
105 | 105 |
REGISTER_HWACCEL(MPEG4_CUVID, mpeg4_cuvid); |
106 |
+ REGISTER_HWACCEL(MPEG4_MEDIACODEC, mpeg4_mediacodec); |
|
106 | 107 |
REGISTER_HWACCEL(MPEG4_MMAL, mpeg4_mmal); |
107 | 108 |
REGISTER_HWACCEL(MPEG4_VAAPI, mpeg4_vaapi); |
108 | 109 |
REGISTER_HWACCEL(MPEG4_VDPAU, mpeg4_vdpau); |
... | ... |
@@ -657,6 +658,7 @@ void avcodec_register_all(void) |
657 | 657 |
REGISTER_DECODER(MPEG2_CUVID, mpeg2_cuvid); |
658 | 658 |
REGISTER_ENCODER(MPEG2_QSV, mpeg2_qsv); |
659 | 659 |
REGISTER_DECODER(MPEG4_CUVID, mpeg4_cuvid); |
660 |
+ REGISTER_DECODER(MPEG4_MEDIACODEC, mpeg4_mediacodec); |
|
660 | 661 |
REGISTER_DECODER(VC1_CUVID, vc1_cuvid); |
661 | 662 |
REGISTER_DECODER(VP8_CUVID, vp8_cuvid); |
662 | 663 |
REGISTER_DECODER(VP8_MEDIACODEC, vp8_mediacodec); |
... | ... |
@@ -767,6 +767,13 @@ AVHWAccel ff_hevc_mediacodec_hwaccel = { |
767 | 767 |
.pix_fmt = AV_PIX_FMT_MEDIACODEC, |
768 | 768 |
}; |
769 | 769 |
|
770 |
+AVHWAccel ff_mpeg4_mediacodec_hwaccel = { |
|
771 |
+ .name = "mediacodec", |
|
772 |
+ .type = AVMEDIA_TYPE_VIDEO, |
|
773 |
+ .id = AV_CODEC_ID_MPEG4, |
|
774 |
+ .pix_fmt = AV_PIX_FMT_MEDIACODEC, |
|
775 |
+}; |
|
776 |
+ |
|
770 | 777 |
AVHWAccel ff_vp8_mediacodec_hwaccel = { |
771 | 778 |
.name = "mediacodec", |
772 | 779 |
.type = AVMEDIA_TYPE_VIDEO, |
... | ... |
@@ -1,5 +1,5 @@ |
1 | 1 |
/* |
2 |
- * Android MediaCodec H.264 / H.265 / VP8 / VP9 decoders |
|
2 |
+ * Android MediaCodec H.264 / H.265 / MPEG-4 / VP8 / VP9 decoders |
|
3 | 3 |
* |
4 | 4 |
* Copyright (c) 2015-2016 Matthieu Bouron <matthieu.bouron stupeflix.com> |
5 | 5 |
* |
... | ... |
@@ -266,6 +266,19 @@ done: |
266 | 266 |
} |
267 | 267 |
#endif |
268 | 268 |
|
269 |
+#if CONFIG_MPEG4_MEDIACODEC_DECODER |
|
270 |
+static int mpeg4_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) |
|
271 |
+{ |
|
272 |
+ int ret = 0; |
|
273 |
+ |
|
274 |
+ if (avctx->extradata) { |
|
275 |
+ ff_AMediaFormat_setBuffer(format, "csd-0", avctx->extradata, avctx->extradata_size); |
|
276 |
+ } |
|
277 |
+ |
|
278 |
+ return ret; |
|
279 |
+} |
|
280 |
+#endif |
|
281 |
+ |
|
269 | 282 |
#if CONFIG_VP8_MEDIACODEC_DECODER || CONFIG_VP9_MEDIACODEC_DECODER |
270 | 283 |
static int vpx_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) |
271 | 284 |
{ |
... | ... |
@@ -319,6 +332,15 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx) |
319 | 319 |
goto done; |
320 | 320 |
break; |
321 | 321 |
#endif |
322 |
+#if CONFIG_MPEG4_MEDIACODEC_DECODER |
|
323 |
+ case AV_CODEC_ID_MPEG4: |
|
324 |
+ codec_mime = "video/mp4v-es", |
|
325 |
+ |
|
326 |
+ ret = mpeg4_set_extradata(avctx, format); |
|
327 |
+ if (ret < 0) |
|
328 |
+ goto done; |
|
329 |
+ break; |
|
330 |
+#endif |
|
322 | 331 |
#if CONFIG_VP8_MEDIACODEC_DECODER |
323 | 332 |
case AV_CODEC_ID_VP8: |
324 | 333 |
codec_mime = "video/x-vnd.on2.vp8"; |
... | ... |
@@ -552,6 +574,22 @@ AVCodec ff_hevc_mediacodec_decoder = { |
552 | 552 |
}; |
553 | 553 |
#endif |
554 | 554 |
|
555 |
+#if CONFIG_MPEG4_MEDIACODEC_DECODER |
|
556 |
+AVCodec ff_mpeg4_mediacodec_decoder = { |
|
557 |
+ .name = "mpeg4_mediacodec", |
|
558 |
+ .long_name = NULL_IF_CONFIG_SMALL("MPEG-4 Android MediaCodec decoder"), |
|
559 |
+ .type = AVMEDIA_TYPE_VIDEO, |
|
560 |
+ .id = AV_CODEC_ID_MPEG4, |
|
561 |
+ .priv_data_size = sizeof(MediaCodecH264DecContext), |
|
562 |
+ .init = mediacodec_decode_init, |
|
563 |
+ .decode = mediacodec_decode_frame, |
|
564 |
+ .flush = mediacodec_decode_flush, |
|
565 |
+ .close = mediacodec_decode_close, |
|
566 |
+ .capabilities = CODEC_CAP_DELAY, |
|
567 |
+ .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, |
|
568 |
+}; |
|
569 |
+#endif |
|
570 |
+ |
|
555 | 571 |
#if CONFIG_VP8_MEDIACODEC_DECODER |
556 | 572 |
AVCodec ff_vp8_mediacodec_decoder = { |
557 | 573 |
.name = "vp8_mediacodec", |
... | ... |
@@ -28,7 +28,7 @@ |
28 | 28 |
#include "libavutil/version.h" |
29 | 29 |
|
30 | 30 |
#define LIBAVCODEC_VERSION_MAJOR 57 |
31 |
-#define LIBAVCODEC_VERSION_MINOR 62 |
|
31 |
+#define LIBAVCODEC_VERSION_MINOR 63 |
|
32 | 32 |
#define LIBAVCODEC_VERSION_MICRO 103 |
33 | 33 |
|
34 | 34 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |