summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2016-08-18 11:02:31 +0200
committerPaul B Mahol <onemda@gmail.com>2016-08-18 15:30:05 +0200
commit81f7d07608e1ac2ee480abcc4a26adb7b2dc3a78 (patch)
tree3ae548f0a6f96e5c73b984f25bfadc4c478ae74b /libavfilter
parentfc600eff630faebda980b7d6fcf02569ebd3bb11 (diff)
avfilter/af_astats: add support for s64(p) sample format
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/af_astats.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libavfilter/af_astats.c b/libavfilter/af_astats.c
index 4c701ff768..220ee782ba 100644
--- a/libavfilter/af_astats.c
+++ b/libavfilter/af_astats.c
@@ -73,6 +73,7 @@ static int query_formats(AVFilterContext *ctx)
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16P,
AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S32P,
+ AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S64P,
AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP,
AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBLP,
AV_SAMPLE_FMT_NONE
@@ -351,6 +352,23 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
update_stat(s, &s->chstats[c], *src, *src / (double)INT16_MAX, llrint(*src * (UINT64_C(1) << 63)));
}}
break;
+ case AV_SAMPLE_FMT_S64P:
+ for (c = 0; c < channels; c++) {
+ ChannelStats *p = &s->chstats[c];
+ const int64_t *src = (const int64_t *)buf->extended_data[c];
+
+ for (i = 0; i < buf->nb_samples; i++, src++)
+ update_stat(s, p, *src, *src / (double)INT64_MAX, *src);
+ }
+ break;
+ case AV_SAMPLE_FMT_S64: {
+ const int64_t *src = (const int64_t *)buf->extended_data[0];
+
+ for (i = 0; i < buf->nb_samples; i++) {
+ for (c = 0; c < channels; c++, src++)
+ update_stat(s, &s->chstats[c], *src, *src / (double)INT64_MAX, *src);
+ }}
+ break;
case AV_SAMPLE_FMT_S32P:
for (c = 0; c < channels; c++) {
ChannelStats *p = &s->chstats[c];