X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Faf_ashowinfo.c;h=a68212c7bbcfaed4e6041f978e923eba4605a91a;hb=15fe694e5ca13e217a643553fbd8e15b5fc865de;hp=e9649d93e5aa219a30108526fa5f150d97967daa;hpb=b4679ecdbd80ae050094733f137ccd7ebf1316ab;p=ffmpeg diff --git a/libavfilter/af_ashowinfo.c b/libavfilter/af_ashowinfo.c index e9649d93e5a..a68212c7bbc 100644 --- a/libavfilter/af_ashowinfo.c +++ b/libavfilter/af_ashowinfo.c @@ -1,20 +1,20 @@ /* * Copyright (c) 2011 Stefano Sabatini * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * 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. * - * Libav is distributed in the hope that it will be useful, + * 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 Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -34,6 +34,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "libavutil/replaygain.h" +#include "libavutil/timestamp.h" #include "libavutil/samplefmt.h" #include "audio.h" @@ -45,24 +46,8 @@ typedef struct AShowInfoContext { * Scratch space for individual plane checksums for planar audio */ uint32_t *plane_checksums; - - /** - * Frame counter - */ - uint64_t frame; } AShowInfoContext; -static int config_input(AVFilterLink *inlink) -{ - AShowInfoContext *s = inlink->dst->priv; - int channels = av_get_channel_layout_nb_channels(inlink->channel_layout); - s->plane_checksums = av_malloc(channels * sizeof(*s->plane_checksums)); - if (!s->plane_checksums) - return AVERROR(ENOMEM); - - return 0; -} - static av_cold void uninit(AVFilterContext *ctx) { AShowInfoContext *s = ctx->priv; @@ -168,12 +153,17 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) AShowInfoContext *s = ctx->priv; char chlayout_str[128]; uint32_t checksum = 0; - int channels = av_get_channel_layout_nb_channels(buf->channel_layout); + int channels = inlink->channels; int planar = av_sample_fmt_is_planar(buf->format); int block_align = av_get_bytes_per_sample(buf->format) * (planar ? 1 : channels); int data_size = buf->nb_samples * block_align; int planes = planar ? channels : 1; int i; + void *tmp_ptr = av_realloc(s->plane_checksums, channels * sizeof(*s->plane_checksums)); + + if (!tmp_ptr) + return AVERROR(ENOMEM); + s->plane_checksums = tmp_ptr; for (i = 0; i < planes; i++) { uint8_t *data = buf->extended_data[i]; @@ -187,11 +177,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) buf->channel_layout); av_log(ctx, AV_LOG_INFO, - "n:%"PRIu64" pts:%"PRId64" pts_time:%f " - "fmt:%s chlayout:%s rate:%d nb_samples:%d " + "n:%"PRId64" pts:%s pts_time:%s pos:%"PRId64" " + "fmt:%s channels:%d chlayout:%s rate:%d nb_samples:%d " "checksum:%08"PRIX32" ", - s->frame, buf->pts, buf->pts * av_q2d(inlink->time_base), - av_get_sample_fmt_name(buf->format), chlayout_str, + inlink->frame_count, + av_ts2str(buf->pts), av_ts2timestr(buf->pts, &inlink->time_base), + av_frame_get_pkt_pos(buf), + av_get_sample_fmt_name(buf->format), av_frame_get_channels(buf), chlayout_str, buf->sample_rate, buf->nb_samples, checksum); @@ -214,19 +206,16 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) av_log(ctx, AV_LOG_INFO, "\n"); } - s->frame++; return ff_filter_frame(inlink->dst->outputs[0], buf); } static const AVFilterPad inputs[] = { { - .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .config_props = config_input, - .filter_frame = filter_frame, + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .filter_frame = filter_frame, }, - { NULL }, + { NULL } }; static const AVFilterPad outputs[] = { @@ -234,7 +223,7 @@ static const AVFilterPad outputs[] = { .name = "default", .type = AVMEDIA_TYPE_AUDIO, }, - { NULL }, + { NULL } }; AVFilter ff_af_ashowinfo = {