[FFmpeg-cvslog] avfilter/firequalizer: add cubic_interpolate function on gain

2016-10-19 Thread Muhammad Faiz
ffmpeg | branch: master | Muhammad Faiz  | Tue Oct 18 
22:55:39 2016 +0700| [23b6f880d6d7418ca75783767e7f7c02af7cf456] | committer: 
Muhammad Faiz

avfilter/firequalizer: add cubic_interpolate function on gain

smoother version of gain_interpolate

Signed-off-by: Muhammad Faiz 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=23b6f880d6d7418ca75783767e7f7c02af7cf456
---

 doc/filters.texi  |  2 ++
 libavfilter/af_firequalizer.c | 49 +--
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 9fc8c4f..14c9b07 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -2508,6 +2508,8 @@ and functions:
 @table @option
 @item gain_interpolate(f)
 interpolate gain on frequency f based on gain_entry
+@item cubic_interpolate(f)
+same as gain_interpolate, but smoother
 @end table
 This option is also available as command. Default is 
@code{gain_interpolate(f)}.
 
diff --git a/libavfilter/af_firequalizer.c b/libavfilter/af_firequalizer.c
index 6868066..e799e34 100644
--- a/libavfilter/af_firequalizer.c
+++ b/libavfilter/af_firequalizer.c
@@ -354,6 +354,51 @@ static double gain_interpolate_func(void *p, double freq)
 return res[0].gain;
 }
 
+static double cubic_interpolate_func(void *p, double freq)
+{
+AVFilterContext *ctx = p;
+FIREqualizerContext *s = ctx->priv;
+GainEntry *res;
+double x, x2, x3;
+double a, b, c, d;
+double m0, m1, m2, msum, unit;
+
+if (!s->nb_gain_entry)
+return 0;
+
+if (freq <= s->gain_entry_tbl[0].freq)
+return s->gain_entry_tbl[0].gain;
+
+if (freq >= s->gain_entry_tbl[s->nb_gain_entry-1].freq)
+return s->gain_entry_tbl[s->nb_gain_entry-1].gain;
+
+res = bsearch(&freq, &s->gain_entry_tbl, s->nb_gain_entry - 1, 
sizeof(*res), gain_entry_compare);
+av_assert0(res);
+
+unit = res[1].freq - res[0].freq;
+m0 = res != s->gain_entry_tbl ?
+ unit * (res[0].gain - res[-1].gain) / (res[0].freq - res[-1].freq) : 
0;
+m1 = res[1].gain - res[0].gain;
+m2 = res != s->gain_entry_tbl + s->nb_gain_entry - 2 ?
+ unit * (res[2].gain - res[1].gain) / (res[2].freq - res[1].freq) : 0;
+
+msum = fabs(m0) + fabs(m1);
+m0 = msum > 0 ? (fabs(m0) * m1 + fabs(m1) * m0) / msum : 0;
+msum = fabs(m1) + fabs(m2);
+m1 = msum > 0 ? (fabs(m1) * m2 + fabs(m2) * m1) / msum : 0;
+
+d = res[0].gain;
+c = m0;
+b = 3 * res[1].gain - m1 - 2 * c - 3 * d;
+a = res[1].gain - b - c - d;
+
+x = (freq - res[0].freq) / unit;
+x2 = x * x;
+x3 = x2 * x;
+
+return a * x3 + b * x2 + c * x + d;
+}
+
 static const char *const var_names[] = {
 "f",
 "sr",
@@ -379,9 +424,9 @@ static int generate_kernel(AVFilterContext *ctx, const char 
*gain, const char *g
 FIREqualizerContext *s = ctx->priv;
 AVFilterLink *inlink = ctx->inputs[0];
 const char *gain_entry_func_names[] = { "entry", NULL };
-const char *gain_func_names[] = { "gain_interpolate", NULL };
+const char *gain_func_names[] = { "gain_interpolate", "cubic_interpolate", 
NULL };
 double (*gain_entry_funcs[])(void *, double, double) = { entry_func, NULL 
};
-double (*gain_funcs[])(void *, double) = { gain_interpolate_func, NULL };
+double (*gain_funcs[])(void *, double) = { gain_interpolate_func, 
cubic_interpolate_func, NULL };
 double vars[VAR_NB];
 AVExpr *gain_expr;
 int ret, k, center, ch;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] lavc/mediacodec_wrapper: do not discard codecs reporting they do not support any profile

2016-10-19 Thread Matthieu Bouron
ffmpeg | branch: master | Matthieu Bouron  | Fri 
Oct  7 11:20:33 2016 +0200| [b8c158a4eddb79ba3964dbe51b0e1db01454f96a] | 
committer: Matthieu Bouron

lavc/mediacodec_wrapper: do not discard codecs reporting they do not support 
any profile

Depending on the device, some (VP8/VP9/...) decoders report that they do
not support any profiles.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b8c158a4eddb79ba3964dbe51b0e1db01454f96a
---

 libavcodec/mediacodec_wrapper.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/mediacodec_wrapper.c b/libavcodec/mediacodec_wrapper.c
index 97e3a29..c2af950 100644
--- a/libavcodec/mediacodec_wrapper.c
+++ b/libavcodec/mediacodec_wrapper.c
@@ -480,6 +480,9 @@ char *ff_AMediaCodecList_getCodecNameByType(const char 
*mime, int profile, int e
 }
 
 profile_count = (*env)->GetArrayLength(env, profile_levels);
+if (!profile_count) {
+found_codec = 1;
+}
 for (k = 0; k < profile_count; k++) {
 int supported_profile = 0;
 

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] lavc: add mpeg4 mediacodec decoder

2016-10-19 Thread Matthieu Bouron
ffmpeg | branch: master | Matthieu Bouron  | Tue 
Oct  4 17:47:44 2016 +0200| [f62c54456db0fdd3ff82397f9142715d5c479354] | 
committer: Matthieu Bouron

lavc: add mpeg4 mediacodec decoder

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f62c54456db0fdd3ff82397f9142715d5c479354
---

 Changelog|  4 ++--
 configure|  2 ++
 libavcodec/Makefile  |  1 +
 libavcodec/allcodecs.c   |  2 ++
 libavcodec/mediacodecdec.c   |  7 +++
 libavcodec/mediacodecdec_h2645.c | 40 +++-
 libavcodec/version.h |  2 +-
 7 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/Changelog b/Changelog
index 9f1b8e5..c319388 100644
--- a/Changelog
+++ b/Changelog
@@ -10,7 +10,7 @@ version :
 - curves filter doesn't automatically insert points at x=0 and x=1 anymore
 - 16-bit support in curves filter and selectivecolor filter
 - OpenH264 decoder wrapper
-- MediaCodec H.264/HEVC/VP8/VP9 hwaccel
+- MediaCodec H.264/HEVC/MPEG-4/VP8/VP9 hwaccel
 - True Audio (TTA) muxer
 - crystalizer audio filter
 - acrusher audio filter
@@ -28,7 +28,7 @@ version :
 - gblur filter
 - avgblur filter
 - sobel and prewitt filter
-- MediaCodec HEVC/VP8/VP9 decoding
+- MediaCodec HEVC/MPEG-4/VP8/VP9 decoding
 - Meridian Lossless Packing (MLP) / TrueHD encoder
 - Non-Local Means (nlmeans) denoising filter
 - sdl2 output device and ffplay support
diff --git a/configure b/configure
index 294ff64..1e6834f 100755
--- a/configure
+++ b/configure
@@ -2630,6 +2630,8 @@ mpeg2_xvmc_hwaccel_deps="xvmc"
 mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
 mpeg4_crystalhd_decoder_select="crystalhd"
 mpeg4_cuvid_hwaccel_deps="cuda cuvid"
+mpeg4_mediacodec_decoder_deps="mediacodec"
+mpeg4_mediacodec_hwaccel_deps="mediacodec"
 mpeg4_mmal_decoder_deps="mmal"
 mpeg4_mmal_decoder_select="mmal"
 mpeg4_mmal_hwaccel_deps="mmal"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 734c79d..e8b1b00 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -413,6 +413,7 @@ OBJS-$(CONFIG_MPEG2_QSV_ENCODER)   += qsvenc_mpeg2.o
 OBJS-$(CONFIG_MPEG2VIDEO_DECODER)  += mpeg12dec.o mpeg12.o mpeg12data.o
 OBJS-$(CONFIG_MPEG2VIDEO_ENCODER)  += mpeg12enc.o mpeg12.o
 OBJS-$(CONFIG_MPEG4_DECODER)   += xvididct.o
+OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec_h2645.o
 OBJS-$(CONFIG_MPEG4_OMX_ENCODER)   += omx.o
 OBJS-$(CONFIG_MPL2_DECODER)+= mpl2dec.o ass.o
 OBJS-$(CONFIG_MSA1_DECODER)+= mss3.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 44f7205..b592aa3 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -103,6 +103,7 @@ void avcodec_register_all(void)
 REGISTER_HWACCEL(MPEG2_VDPAU,   mpeg2_vdpau);
 REGISTER_HWACCEL(MPEG2_VIDEOTOOLBOX, mpeg2_videotoolbox);
 REGISTER_HWACCEL(MPEG4_CUVID,   mpeg4_cuvid);
+REGISTER_HWACCEL(MPEG4_MEDIACODEC,  mpeg4_mediacodec);
 REGISTER_HWACCEL(MPEG4_MMAL,mpeg4_mmal);
 REGISTER_HWACCEL(MPEG4_VAAPI,   mpeg4_vaapi);
 REGISTER_HWACCEL(MPEG4_VDPAU,   mpeg4_vdpau);
@@ -657,6 +658,7 @@ void avcodec_register_all(void)
 REGISTER_DECODER(MPEG2_CUVID,   mpeg2_cuvid);
 REGISTER_ENCODER(MPEG2_QSV, mpeg2_qsv);
 REGISTER_DECODER(MPEG4_CUVID,   mpeg4_cuvid);
+REGISTER_DECODER(MPEG4_MEDIACODEC,  mpeg4_mediacodec);
 REGISTER_DECODER(VC1_CUVID, vc1_cuvid);
 REGISTER_DECODER(VP8_CUVID, vp8_cuvid);
 REGISTER_DECODER(VP8_MEDIACODEC,vp8_mediacodec);
diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c
index e5a8dbc..c031de8 100644
--- a/libavcodec/mediacodecdec.c
+++ b/libavcodec/mediacodecdec.c
@@ -767,6 +767,13 @@ AVHWAccel ff_hevc_mediacodec_hwaccel = {
 .pix_fmt = AV_PIX_FMT_MEDIACODEC,
 };
 
+AVHWAccel ff_mpeg4_mediacodec_hwaccel = {
+.name= "mediacodec",
+.type= AVMEDIA_TYPE_VIDEO,
+.id  = AV_CODEC_ID_MPEG4,
+.pix_fmt = AV_PIX_FMT_MEDIACODEC,
+};
+
 AVHWAccel ff_vp8_mediacodec_hwaccel = {
 .name= "mediacodec",
 .type= AVMEDIA_TYPE_VIDEO,
diff --git a/libavcodec/mediacodecdec_h2645.c b/libavcodec/mediacodecdec_h2645.c
index c5f5af2..578b10d 100644
--- a/libavcodec/mediacodecdec_h2645.c
+++ b/libavcodec/mediacodecdec_h2645.c
@@ -1,5 +1,5 @@
 /*
- * Android MediaCodec H.264 / H.265 / VP8 / VP9 decoders
+ * Android MediaCodec H.264 / H.265 / MPEG-4 / VP8 / VP9 decoders
  *
  * Copyright (c) 2015-2016 Matthieu Bouron 
  *
@@ -266,6 +266,19 @@ done:
 }
 #endif
 
+#if CONFIG_MPEG4_MEDIACODEC_DECODER
+static int mpeg4_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
+{
+int ret = 0;
+
+if (avctx->extradata) {
+ff_AMediaFormat_setBuffer(format, "csd-0", avctx->extradata, 
avctx->extradata_size);
+}
+
+return ret;
+}
+#endif
+
 #if CONFIG_VP8_MEDIACODEC_DECODER || CONFIG_VP9_MEDIACODEC_DECODER
 static int vpx_set_extradata(AVCodecContext *a

[FFmpeg-cvslog] lavc: add vp8/vp9 mediacodec decoders

2016-10-19 Thread Matthieu Bouron
ffmpeg | branch: master | Matthieu Bouron  | Tue 
Oct  4 16:02:59 2016 +0200| [0f7fce87ea9842261076f93bd0f28557fcd065bb] | 
committer: Matthieu Bouron

lavc: add vp8/vp9 mediacodec decoders

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0f7fce87ea9842261076f93bd0f28557fcd065bb
---

 Changelog|  4 +--
 configure|  4 +++
 libavcodec/Makefile  |  2 ++
 libavcodec/allcodecs.c   |  4 +++
 libavcodec/mediacodecdec.c   | 14 
 libavcodec/mediacodecdec_h2645.c | 73 +++-
 libavcodec/version.h |  2 +-
 7 files changed, 99 insertions(+), 4 deletions(-)

diff --git a/Changelog b/Changelog
index 32f0bd4..9f1b8e5 100644
--- a/Changelog
+++ b/Changelog
@@ -10,7 +10,7 @@ version :
 - curves filter doesn't automatically insert points at x=0 and x=1 anymore
 - 16-bit support in curves filter and selectivecolor filter
 - OpenH264 decoder wrapper
-- MediaCodec H.264 and HEVC hwaccel
+- MediaCodec H.264/HEVC/VP8/VP9 hwaccel
 - True Audio (TTA) muxer
 - crystalizer audio filter
 - acrusher audio filter
@@ -28,7 +28,7 @@ version :
 - gblur filter
 - avgblur filter
 - sobel and prewitt filter
-- MediaCodec HEVC decoding
+- MediaCodec HEVC/VP8/VP9 decoding
 - Meridian Lossless Packing (MLP) / TrueHD encoder
 - Non-Local Means (nlmeans) denoising filter
 - sdl2 output device and ffplay support
diff --git a/configure b/configure
index 96f575f..294ff64 100755
--- a/configure
+++ b/configure
@@ -2662,10 +2662,14 @@ vc1_vdpau_hwaccel_deps="vdpau"
 vc1_vdpau_hwaccel_select="vc1_decoder"
 vp8_cuvid_hwaccel_deps="cuda cuvid"
 vp9_cuvid_hwaccel_deps="cuda cuvid"
+vp8_mediacodec_decoder_deps="mediacodec"
+vp8_mediacodec_hwaccel_deps="mediacodec"
 vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
 vp9_d3d11va_hwaccel_select="vp9_decoder"
 vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
 vp9_dxva2_hwaccel_select="vp9_decoder"
+vp9_mediacodec_decoder_deps="mediacodec"
+vp9_mediacodec_hwaccel_deps="mediacodec"
 vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9"
 vp9_vaapi_hwaccel_select="vp9_decoder"
 wmv3_crystalhd_decoder_select="crystalhd"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index a1560ba..734c79d 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -595,9 +595,11 @@ OBJS-$(CONFIG_VP6_DECODER) += vp6.o vp56.o 
vp56data.o \
 OBJS-$(CONFIG_VP7_DECODER) += vp8.o vp56rac.o
 OBJS-$(CONFIG_VP8_DECODER) += vp8.o vp56rac.o
 OBJS-$(CONFIG_VP8_CUVID_DECODER)   += cuvid.o
+OBJS-$(CONFIG_VP8_MEDIACODEC_DECODER)  += mediacodecdec_h2645.o
 OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9dsp.o vp56rac.o 
vp9dsp_8bpp.o \
   vp9dsp_10bpp.o vp9dsp_12bpp.o
 OBJS-$(CONFIG_VP9_CUVID_DECODER)   += cuvid.o
+OBJS-$(CONFIG_VP9_MEDIACODEC_DECODER)  += mediacodecdec_h2645.o
 OBJS-$(CONFIG_VPLAYER_DECODER) += textdec.o ass.o
 OBJS-$(CONFIG_VQA_DECODER) += vqavideo.o
 OBJS-$(CONFIG_WAVPACK_DECODER) += wavpack.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index fed740a..44f7205 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -115,9 +115,11 @@ void avcodec_register_all(void)
 REGISTER_HWACCEL(VC1_MMAL,  vc1_mmal);
 REGISTER_HWACCEL(VC1_QSV,   vc1_qsv);
 REGISTER_HWACCEL(VP8_CUVID, vp8_cuvid);
+REGISTER_HWACCEL(VP8_MEDIACODEC,vp8_mediacodec);
 REGISTER_HWACCEL(VP9_CUVID, vp9_cuvid);
 REGISTER_HWACCEL(VP9_D3D11VA,   vp9_d3d11va);
 REGISTER_HWACCEL(VP9_DXVA2, vp9_dxva2);
+REGISTER_HWACCEL(VP9_MEDIACODEC,vp9_mediacodec);
 REGISTER_HWACCEL(VP9_VAAPI, vp9_vaapi);
 REGISTER_HWACCEL(WMV3_D3D11VA,  wmv3_d3d11va);
 REGISTER_HWACCEL(WMV3_DXVA2,wmv3_dxva2);
@@ -657,7 +659,9 @@ void avcodec_register_all(void)
 REGISTER_DECODER(MPEG4_CUVID,   mpeg4_cuvid);
 REGISTER_DECODER(VC1_CUVID, vc1_cuvid);
 REGISTER_DECODER(VP8_CUVID, vp8_cuvid);
+REGISTER_DECODER(VP8_MEDIACODEC,vp8_mediacodec);
 REGISTER_DECODER(VP9_CUVID, vp9_cuvid);
+REGISTER_DECODER(VP9_MEDIACODEC,vp9_mediacodec);
 
 /* parsers */
 REGISTER_PARSER(AAC,aac);
diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c
index 8ff1138..e5a8dbc 100644
--- a/libavcodec/mediacodecdec.c
+++ b/libavcodec/mediacodecdec.c
@@ -766,3 +766,17 @@ AVHWAccel ff_hevc_mediacodec_hwaccel = {
 .id  = AV_CODEC_ID_HEVC,
 .pix_fmt = AV_PIX_FMT_MEDIACODEC,
 };
+
+AVHWAccel ff_vp8_mediacodec_hwaccel = {
+.name= "mediacodec",
+.type= AVMEDIA_TYPE_VIDEO,
+.id  = AV_CODEC_ID_VP8,
+.pix_fmt = AV_PIX_FMT_MEDIACODEC,
+};
+
+AVHWAccel ff_vp9_mediacodec_hwaccel = {
+.name= "mediacodec",
+.type= AVMEDIA_TYPE_VIDEO,
+.id  = AV_CODEC_ID_VP9,
+.pix_fmt = AV_PI

[FFmpeg-cvslog] lavc/mediacodec: use more meaningful filenames

2016-10-19 Thread Matthieu Bouron
ffmpeg | branch: master | Matthieu Bouron  | Wed 
Oct 12 14:44:08 2016 +0200| [d5082a2ce776a2e43e25998aa07541c9ab7af0d3] | 
committer: Matthieu Bouron

lavc/mediacodec: use more meaningful filenames

Adds the following changes:
  * mediacodecdec.{c,h} -> mediacodecdec_common.{c,h}
  * mediacodecdec_h2645.c -> mediacodecdec.c

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d5082a2ce776a2e43e25998aa07541c9ab7af0d3
---

 libavcodec/Makefile|   14 +-
 libavcodec/mediacodec.c|3 +-
 libavcodec/mediacodec_sw_buffer.c  |2 +-
 libavcodec/mediacodec_sw_buffer.h  |2 +-
 libavcodec/mediacodecdec.c | 1064 +---
 libavcodec/mediacodecdec_common.c  |  789 +++
 .../{mediacodecdec.h => mediacodecdec_common.h}|6 +-
 libavcodec/mediacodecdec_h2645.c   |  623 
 8 files changed, 1252 insertions(+), 1251 deletions(-)

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index e8b1b00..f1d5bf1 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -94,7 +94,7 @@ OBJS-$(CONFIG_LSP) += lsp.o
 OBJS-$(CONFIG_LZF) += lzf.o
 OBJS-$(CONFIG_MDCT)+= mdct_fixed.o mdct_float.o 
mdct_fixed_32.o
 OBJS-$(CONFIG_ME_CMP)  += me_cmp.o
-OBJS-$(CONFIG_MEDIACODEC)  += mediacodecdec.o mediacodec_surface.o 
mediacodec_wrapper.o mediacodec_sw_buffer.o
+OBJS-$(CONFIG_MEDIACODEC)  += mediacodecdec_common.o 
mediacodec_surface.o mediacodec_wrapper.o mediacodec_sw_buffer.o
 OBJS-$(CONFIG_MPEG_ER) += mpeg_er.o
 OBJS-$(CONFIG_MPEGAUDIO)   += mpegaudio.o mpegaudiodata.o   \
   mpegaudiodecheader.o
@@ -316,7 +316,7 @@ OBJS-$(CONFIG_H264_DECODER)+= h264dec.o 
h264_cabac.o h264_cavlc.o \
   h264_slice.o h264data.o h264_parse.o 
\
   h2645_parse.o
 OBJS-$(CONFIG_H264_CUVID_DECODER)  += cuvid.o
-OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec_h2645.o
+OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec.o
 OBJS-$(CONFIG_H264_MMAL_DECODER)   += mmaldec.o
 OBJS-$(CONFIG_H264_NVENC_ENCODER)  += nvenc_h264.o
 OBJS-$(CONFIG_NVENC_ENCODER)   += nvenc_h264.o
@@ -333,7 +333,7 @@ OBJS-$(CONFIG_HEVC_DECODER)+= hevc.o hevc_mvs.o 
hevc_ps.o hevc_sei.o
   hevc_cabac.o hevc_refs.o hevcpred.o  
  \
   hevcdsp.o hevc_filter.o 
h2645_parse.o hevc_data.o
 OBJS-$(CONFIG_HEVC_CUVID_DECODER)  += cuvid.o
-OBJS-$(CONFIG_HEVC_MEDIACODEC_DECODER) += mediacodecdec_h2645.o hevc_parse.o
+OBJS-$(CONFIG_HEVC_MEDIACODEC_DECODER) += mediacodecdec.o hevc_parse.o
 OBJS-$(CONFIG_HEVC_NVENC_ENCODER)  += nvenc_hevc.o
 OBJS-$(CONFIG_NVENC_HEVC_ENCODER)  += nvenc_hevc.o
 OBJS-$(CONFIG_HEVC_QSV_DECODER)+= qsvdec_h2645.o
@@ -413,7 +413,7 @@ OBJS-$(CONFIG_MPEG2_QSV_ENCODER)   += qsvenc_mpeg2.o
 OBJS-$(CONFIG_MPEG2VIDEO_DECODER)  += mpeg12dec.o mpeg12.o mpeg12data.o
 OBJS-$(CONFIG_MPEG2VIDEO_ENCODER)  += mpeg12enc.o mpeg12.o
 OBJS-$(CONFIG_MPEG4_DECODER)   += xvididct.o
-OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec_h2645.o
+OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec.o
 OBJS-$(CONFIG_MPEG4_OMX_ENCODER)   += omx.o
 OBJS-$(CONFIG_MPL2_DECODER)+= mpl2dec.o ass.o
 OBJS-$(CONFIG_MSA1_DECODER)+= mss3.o
@@ -596,11 +596,11 @@ OBJS-$(CONFIG_VP6_DECODER) += vp6.o vp56.o 
vp56data.o \
 OBJS-$(CONFIG_VP7_DECODER) += vp8.o vp56rac.o
 OBJS-$(CONFIG_VP8_DECODER) += vp8.o vp56rac.o
 OBJS-$(CONFIG_VP8_CUVID_DECODER)   += cuvid.o
-OBJS-$(CONFIG_VP8_MEDIACODEC_DECODER)  += mediacodecdec_h2645.o
+OBJS-$(CONFIG_VP8_MEDIACODEC_DECODER)  += mediacodecdec.o
 OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9dsp.o vp56rac.o 
vp9dsp_8bpp.o \
   vp9dsp_10bpp.o vp9dsp_12bpp.o
 OBJS-$(CONFIG_VP9_CUVID_DECODER)   += cuvid.o
-OBJS-$(CONFIG_VP9_MEDIACODEC_DECODER)  += mediacodecdec_h2645.o
+OBJS-$(CONFIG_VP9_MEDIACODEC_DECODER)  += mediacodecdec.o
 OBJS-$(CONFIG_VPLAYER_DECODER) += textdec.o ass.o
 OBJS-$(CONFIG_VQA_DECODER) += vqavideo.o
 OBJS-$(CONFIG_WAVPACK_DECODER) += wavpack.o
@@ -1008,7 +1008,7 @@ SKIPHEADERS-$(CONFIG_JNI)  += ffjni.h
 SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER)  += libschroedinger.h
 SKIPHEADERS-$(CONFIG_LIBVPX)   += libvpx.h
 SKIPHEADERS-$(CONFIG_LIBWEBP_ENCODER)  += libwebpenc_common.h
-SKIPHEADERS-$(CONFIG_MEDIACODEC)   += mediacodecdec.h mediacodec_surface.h 
mediacodec_wrapper.h mediacodec_sw_buffer.h
+SKIPHEADERS-$(CONFIG_MEDIACODEC)   += mediacodecdec_common.h 
mediacodec_surface.h

[FFmpeg-cvslog] avcodec/nvenc: add test for Temporal AQ support

2016-10-19 Thread Sven C. Dack
ffmpeg | branch: master | Sven C. Dack  | Fri Oct 14 
16:02:54 2016 +0100| [da4d0fa86b48d79398b0ccf7ecadc6ff69e3c947] | committer: 
Timo Rothenpieler

avcodec/nvenc: add test for Temporal AQ support

Adds a check to see if the hardware supports temporal aq.

Signed-off-by: Timo Rothenpieler 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=da4d0fa86b48d79398b0ccf7ecadc6ff69e3c947
---

 libavcodec/nvenc.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index e6c1c94..2505c3d 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -356,6 +356,12 @@ static int nvenc_check_capabilities(AVCodecContext *avctx)
 return AVERROR(ENOSYS);
 }
 
+ret = nvenc_check_cap(avctx, NV_ENC_CAPS_SUPPORT_TEMPORAL_AQ);
+if (ctx->temporal_aq > 0 && ret <= 0) {
+av_log(avctx, AV_LOG_VERBOSE, "Temporal AQ not supported\n");
+return AVERROR(ENOSYS);
+}
+
 return 0;
 }
 

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] avfilter/vf_scale_npp: select cubic and lanczos as alternative where super-sampling is not supported

2016-10-19 Thread Sven C. Dack
ffmpeg | branch: master | Sven C. Dack  | Wed Oct 19 
12:51:21 2016 +0200| [1aa8fa418a82211df447099a61c50bacde97be09] | committer: 
Timo Rothenpieler

avfilter/vf_scale_npp: select cubic and lanczos as alternative where 
super-sampling is not supported

Signed-off-by: Timo Rothenpieler 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1aa8fa418a82211df447099a61c50bacde97be09
---

 libavfilter/vf_scale_npp.c | 14 +-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/libavfilter/vf_scale_npp.c b/libavfilter/vf_scale_npp.c
index 68cee39..35abe39 100644
--- a/libavfilter/vf_scale_npp.c
+++ b/libavfilter/vf_scale_npp.c
@@ -294,9 +294,21 @@ static int init_processing_chain(AVFilterContext *ctx, int 
in_width, int in_heig
 
 /* figure out which stages need to be done */
 if (in_width != out_width || in_height != out_height ||
-in_deinterleaved_format != out_deinterleaved_format)
+in_deinterleaved_format != out_deinterleaved_format) {
 s->stages[STAGE_RESIZE].stage_needed = 1;
 
+if (s->interp_algo == NPPI_INTER_SUPER &&
+(out_width > in_width && out_height > in_height)) {
+s->interp_algo = NPPI_INTER_LANCZOS;
+av_log(ctx, AV_LOG_WARNING, "super-sampling not supported for 
output dimensions, using lanczos instead.\n");
+}
+if (s->interp_algo == NPPI_INTER_SUPER &&
+!(out_width < in_width && out_height < in_height)) {
+s->interp_algo = NPPI_INTER_CUBIC;
+av_log(ctx, AV_LOG_WARNING, "super-sampling not supported for 
output dimensions, using cubic instead.\n");
+}
+}
+
 if (!s->stages[STAGE_RESIZE].stage_needed && in_format == out_format)
 s->passthrough = 1;
 

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] avcodec/nvenc_hevc: Added missing option -temporal_aq

2016-10-19 Thread Sven C. Dack
ffmpeg | branch: master | Sven C. Dack  | Thu Oct 13 
18:06:09 2016 +0100| [aebbcb2706ab0bc5ca4feec8e7ae1e91c57cd67a] | committer: 
Timo Rothenpieler

avcodec/nvenc_hevc: Added missing option -temporal_aq

The option is present in h264_nvenc, but was missing from hevc_nvenc.

Signed-off-by: Timo Rothenpieler 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aebbcb2706ab0bc5ca4feec8e7ae1e91c57cd67a
---

 libavcodec/nvenc_hevc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavcodec/nvenc_hevc.c b/libavcodec/nvenc_hevc.c
index 320f290..0fec77a 100644
--- a/libavcodec/nvenc_hevc.c
+++ b/libavcodec/nvenc_hevc.c
@@ -93,6 +93,7 @@ static const AVOption options[] = {
 { "forced-idr",   "If forcing keyframes, force them as IDR frames.",
 
OFFSET(forced_idr),   AV_OPT_TYPE_BOOL,  { .i64 = -1 }, -1, 1, VE },
 { "spatial_aq",   "set to 1 to enable Spatial AQ",  OFFSET(aq),
   AV_OPT_TYPE_BOOL,  { .i64 = 0 }, 0, 1, VE },
+{ "temporal_aq",  "set to 1 to enable Temporal AQ", 
OFFSET(temporal_aq),  AV_OPT_TYPE_BOOL,  { .i64 = 0 }, 0, 1, VE },
 { "zerolatency",  "Set 1 to indicate zero latency operation (no reordering 
delay)",
 
OFFSET(zerolatency),  AV_OPT_TYPE_BOOL,  { .i64 = 0 }, 0, 1, VE },
 { "nonref_p", "Set this to 1 to enable automatic insertion of 
non-reference P-frames",

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] FATE: Add test for muxing discontinuous MP4 fragments with large timestamps

2016-10-19 Thread Derek Buitenhuis
ffmpeg | branch: master | Derek Buitenhuis  | Tue 
Oct 18 16:30:08 2016 +0100| [dfe7e5501d4acf007f66f7ad8606499f7d7dc2cb] | 
committer: Michael Niedermayer

FATE: Add test for muxing discontinuous MP4 fragments with large timestamps

Signed-off-by: Derek Buitenhuis 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dfe7e5501d4acf007f66f7ad8606499f7d7dc2cb
---

 libavformat/tests/movenc.c | 39 ++-
 tests/ref/fate/movenc  |  5 +
 2 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/libavformat/tests/movenc.c b/libavformat/tests/movenc.c
index 41cd4fc..ab87176 100644
--- a/libavformat/tests/movenc.c
+++ b/libavformat/tests/movenc.c
@@ -243,7 +243,7 @@ static void init(int bf, int audio_preroll)
 init_fps(bf, audio_preroll, 30);
 }
 
-static void mux_frames(int n)
+static void mux_frames(int n, int c)
 {
 int end_frames = frames + n;
 while (1) {
@@ -299,6 +299,12 @@ static void mux_frames(int n)
 continue;
 if (skip_write_audio && pkt.stream_index == 1)
 continue;
+
+if (c) {
+pkt.pts += (1LL<<32);
+pkt.dts += (1LL<<32);
+}
+
 if (do_interleave)
 av_interleaved_write_frame(ctx, &pkt);
 else
@@ -308,7 +314,7 @@ static void mux_frames(int n)
 
 static void mux_gops(int n)
 {
-mux_frames(gop_size * n);
+mux_frames(gop_size * n, 0);
 }
 
 static void skip_gops(int n)
@@ -665,6 +671,21 @@ int main(int argc, char **argv)
 finish();
 
 
+// Test muxing discontinuous fragments with very large (> (1<<31)) 
timestamps.
+av_dict_set(&opts, "movflags", "frag_custom+delay_moov+dash+frag_discont", 
0);
+av_dict_set(&opts, "fragment_index", "2", 0);
+init(1, 1);
+signal_init_ts();
+skip_gops(1);
+mux_frames(gop_size, 1); // Write the second fragment
+init_out("delay-moov-elst-signal-init-discont-largets");
+av_write_frame(ctx, NULL); // Output the moov
+close_out();
+init_out("delay-moov-elst-signal-second-frag-discont-largets");
+av_write_frame(ctx, NULL); // Output the second fragment
+close_out();
+finish();
+
 // Test VFR content, with sidx atoms (which declare the pts duration
 // of a fragment, forcing overriding the start pts of the next one).
 // Here, the fragment duration in pts is significantly different from
@@ -680,9 +701,9 @@ int main(int argc, char **argv)
 init_out("vfr");
 av_dict_set(&opts, "movflags", "frag_keyframe+delay_moov+dash", 0);
 init_fps(1, 1, 3);
-mux_frames(gop_size/2);
+mux_frames(gop_size/2, 0);
 duration /= 10;
-mux_frames(gop_size/2);
+mux_frames(gop_size/2, 0);
 mux_gops(1);
 finish();
 close_out();
@@ -699,9 +720,9 @@ int main(int argc, char **argv)
 init_out("vfr-noduration");
 av_dict_set(&opts, "movflags", "frag_keyframe+delay_moov+dash", 0);
 init_fps(1, 1, 3);
-mux_frames(gop_size/2);
+mux_frames(gop_size/2, 0);
 duration /= 10;
-mux_frames(gop_size/2);
+mux_frames(gop_size/2, 0);
 mux_gops(1);
 finish();
 close_out();
@@ -729,16 +750,16 @@ int main(int argc, char **argv)
 av_dict_set(&opts, "movflags", "frag_keyframe+delay_moov", 0);
 av_dict_set(&opts, "frag_duration", "65", 0);
 init_fps(1, 1, 30);
-mux_frames(gop_size/2);
+mux_frames(gop_size/2, 0);
 // Pretend that the packet duration is the normal, even if
 // we actually skip a bunch of frames. (I.e., simulate that
 // we don't know of the framedrop in advance.)
 fake_pkt_duration = duration;
 duration *= 10;
-mux_frames(1);
+mux_frames(1, 0);
 fake_pkt_duration = 0;
 duration /= 10;
-mux_frames(gop_size/2 - 1);
+mux_frames(gop_size/2 - 1, 0);
 mux_gops(1);
 finish();
 close_out();
diff --git a/tests/ref/fate/movenc b/tests/ref/fate/movenc
index d3a86bc..09e603a 100644
--- a/tests/ref/fate/movenc
+++ b/tests/ref/fate/movenc
@@ -108,6 +108,11 @@ c3681590a292cb9ca19a5a982e530166 1219 
delay-moov-elst-signal-init-discont
 write_data len 996, time 97, type sync atom sidx
 aa5462cc0d2144f72154d9c309edb57d 996 delay-moov-elst-signal-second-frag-discont
 write_data len 110, time nopts, type trailer atom -
+write_data len 1243, time nopts, type header atom ftyp
+dac14c8795d5cbd91ae770c6e2880c62 1243 
delay-moov-elst-signal-init-discont-largets
+write_data len 996, time 27962123, type sync atom sidx
+41cac4c3df656a87bb38363fdcd745e6 996 
delay-moov-elst-signal-second-frag-discont-largets
+write_data len 110, time nopts, type trailer atom -
 write_data len 1219, time nopts, type header atom ftyp
 write_data len 2572, time -33, type sync atom sidx
 write_data len 996, time 517, type sync atom sidx

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] lavf/mov: support gopro hero moments udta tag

2016-10-19 Thread Jean Caillé
ffmpeg | branch: master | Jean Caillé  | Tue Oct 18 
15:47:55 2016 +0200| [6498549fd75f679820a059a65ece1df4666aa46c] | committer: 
Michael Niedermayer

lavf/mov: support gopro hero moments udta tag

Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6498549fd75f679820a059a65ece1df4666aa46c
---

 libavformat/mov.c | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 9b40090..dada1e0 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -268,6 +268,23 @@ static int mov_metadata_loci(MOVContext *c, AVIOContext 
*pb, unsigned len)
 return av_dict_set(&c->fc->metadata, key, buf, 0);
 }
 
+static int mov_metadata_hmmt(MOVContext *c, AVIOContext *pb, unsigned len)
+{
+int i, n_hmmt;
+
+if (len < 2)
+return 0;
+if (c->ignore_chapters)
+return 0;
+
+n_hmmt = avio_rb32(pb);
+for (i = 0; i < n_hmmt && !pb->eof_reached; i++) {
+int moment_time = avio_rb32(pb);
+avpriv_new_chapter(c->fc, i, av_make_q(1, 1000), moment_time, 
AV_NOPTS_VALUE, NULL);
+}
+return 0;
+}
+
 static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
 char tmp_key[5];
@@ -303,6 +320,8 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
 parse = mov_metadata_gnre; break;
 case MKTAG( 'h','d','v','d'): key = "hd_video";
 parse = mov_metadata_int8_no_padding; break;
+case MKTAG( 'H','M','M','T'):
+return mov_metadata_hmmt(c, pb, atom.size);
 case MKTAG( 'k','e','y','w'): key = "keywords";  break;
 case MKTAG( 'l','d','e','s'): key = "synopsis";  break;
 case MKTAG( 'l','o','c','i'):

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] avformat/movenc: Skip duration check for discontinuous fragments

2016-10-19 Thread Michael Niedermayer
ffmpeg | branch: master | Michael Niedermayer  | Tue 
Oct 18 18:18:49 2016 +0200| [18ad44d14548a54e0e7926c97ab15d3daafaf771] | 
committer: Michael Niedermayer

avformat/movenc: Skip duration check for discontinuous fragments

Found-by: Daemon404
Signed-off-by: Michael Niedermayer 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=18ad44d14548a54e0e7926c97ab15d3daafaf771
---

 libavformat/movenc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index d7c7158..50be8ff 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -4697,7 +4697,8 @@ static int check_pkt(AVFormatContext *s, AVPacket *pkt)
 
 if (trk->entry) {
 ref = trk->cluster[trk->entry - 1].dts;
-} else if (trk->start_dts != AV_NOPTS_VALUE) {
+} else if (   trk->start_dts != AV_NOPTS_VALUE
+   && !trk->frag_discont) {
 ref = trk->start_dts + trk->track_duration;
 } else
 ref = pkt->dts; // Skip tests for the first packet

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] avformat: prevent triggering request_probe assert in ff_read_packet

2016-10-19 Thread Andreas Cadhalpun
ffmpeg | branch: master | Andreas Cadhalpun  
| Wed Oct 19 19:23:49 2016 +0200| [a5b4476a602f31e451b11ca0c18bc92be130a50e] | 
committer: Andreas Cadhalpun

avformat: prevent triggering request_probe assert in ff_read_packet

If probe_codec is called with pkt == NULL, it sets probe_packets to 0
and request_probe to -1.
However, request_probe can change when calling s->iformat->read_packet
and thus a probe_packets value of 0 doesn't guarantee a request_probe
value of -1.
In that case calling probe_codec again is necessary to prevent
triggering the assert.

Reviewed-by: Michael Niedermayer 
Signed-off-by: Andreas Cadhalpun 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a5b4476a602f31e451b11ca0c18bc92be130a50e
---

 libavformat/utils.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 8a51aea..70dbfa1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -803,7 +803,7 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
 return ret;
 for (i = 0; i < s->nb_streams; i++) {
 st = s->streams[i];
-if (st->probe_packets)
+if (st->probe_packets || st->request_probe > 0)
 if ((err = probe_codec(s, st, NULL)) < 0)
 return err;
 av_assert0(st->request_probe <= 0);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog


[FFmpeg-cvslog] lavf/riff: Document the interleaving of VSM4 video.

2016-10-19 Thread Carl Eugen Hoyos
ffmpeg | branch: master | Carl Eugen Hoyos  | Wed Oct 19 
23:39:19 2016 +0200| [d8716864f96749f4df0b6859b7ad0816b7a483a5] | committer: 
Carl Eugen Hoyos

lavf/riff: Document the interleaving of VSM4 video.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d8716864f96749f4df0b6859b7ad0816b7a483a5
---

 libavformat/riff.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/riff.c b/libavformat/riff.c
index dceb979..3c5a37c 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -56,7 +56,7 @@ const AVCodecTag ff_codec_bmp_tags[] = {
 { AV_CODEC_ID_H263I,MKTAG('I', '2', '6', '3') }, /* Intel H.263 */
 { AV_CODEC_ID_H261, MKTAG('H', '2', '6', '1') },
 { AV_CODEC_ID_H263, MKTAG('U', '2', '6', '3') },
-{ AV_CODEC_ID_H263, MKTAG('V', 'S', 'M', '4') },
+{ AV_CODEC_ID_H263, MKTAG('V', 'S', 'M', '4') }, /* needs -vf 
il=l=i:c=i */
 { AV_CODEC_ID_MPEG4,MKTAG('F', 'M', 'P', '4') },
 { AV_CODEC_ID_MPEG4,MKTAG('D', 'I', 'V', 'X') },
 { AV_CODEC_ID_MPEG4,MKTAG('D', 'X', '5', '0') },

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog