From patchwork Sat Mar 13 23:44:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 26388 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0E4C844AE89 for ; Sun, 14 Mar 2021 01:45:40 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C6B5768ACD0; Sun, 14 Mar 2021 01:45:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A912968AC28 for ; Sun, 14 Mar 2021 01:45:33 +0200 (EET) Received: by mail-qk1-f182.google.com with SMTP id l132so28301597qke.7 for ; Sat, 13 Mar 2021 15:45:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=D5ODvqGDJp7HI1JpjZKqRoP/e87XWaPXsWcyj3F28+o=; b=d320y+raM1GDOgc/Eb8ESTYOtJmVv3s2Pe+HnNlCNwHVOkkbxcCgNtigDMuel87mMi ey83qjpMomv2CdeZ7b+Ibqhm0tqrvVPmtPHvYvlt/zaRZZESBAQ4+/hITU8uRD9Zq82R AghcmYQSwcVRpo5HjbLI+Cbl4jhQ8ndeGFX2Uf4vMKVdTRKWA2GGLHd6sFk+OWY5QmLl ktfKJ96WbJlipvyiGR1gPPsp7wc5369/wLQm8J63BbxmdMvh7JWvHmfAbR4cKpMcrOZ8 v3IYdpTbpE+gGokTFwfp00E05vOUTjSo9ZtHizkHqflmsdwtKuVki8GIC9x9Q/a443zv +ynA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=D5ODvqGDJp7HI1JpjZKqRoP/e87XWaPXsWcyj3F28+o=; b=qsIO3t/E+BCWXl4rYMZsvxyjhPCUkoLGC+PrAAk2Q8zwPg/Rw9ob6Lq+y0p/e7ckLt 42EpKcWAGUokjIuQPonKKlucI6gTBjlxhjugcgFEmR5UDLOdGw87htqHCrVFu94FruF/ e5jEQXcqynZELvM3vigEVEsroCjdQbJPyYgJA97cm33Ap1KBdkZrLlTnM/pcadz4xyGe lqsEDaLf9WBFefP5MChsMcyn26at86Con10qFkO5cBqLVF6kDsuxB55wO9SGCUoKsZ9F 3G6e2fUVvMus15mZynCNHwaa0fPsxxejTP9hyPjEBHvC8y+P46vsOjoNePdt89HAHyZj /jHQ== X-Gm-Message-State: AOAM533zpimUzoCjEW4jZyunN+hKiepdkBbi77Mo5WbhkciEkx4ZnRFb 5/PdlCJS+LZF1Y3pTkiTh+D7VUOdg6c= X-Google-Smtp-Source: ABdhPJyIj91YC54ZK2m5mQQpXbutsP4G0h2hovlG8oIRdL5kpvMka/kCldIRyvECe77+9MPOi5d6eA== X-Received: by 2002:a05:620a:210a:: with SMTP id l10mr18694168qkl.398.1615679131779; Sat, 13 Mar 2021 15:45:31 -0800 (PST) Received: from localhost.localdomain ([181.23.75.214]) by smtp.gmail.com with ESMTPSA id j1sm6839507qti.55.2021.03.13.15.45.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Mar 2021 15:45:31 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 13 Mar 2021 20:44:06 -0300 Message-Id: <20210313234406.3414-1-jamrial@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] fftools/ffmpeg: use the correct size value for wrapped_avframe packets X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" pkt->size on packets wrapping an AVFrame signaled by the wrapped_avframe codec_id are set to the size of the AVFrame structure and not the actual raw data contained in it. ffmpeg.c was using those values to print bogus stats about the resulting output file. Before this patch: frame= 24 fps=0.0 q=-0.0 Lsize= 7594kB time=00:00:01.00 bitrate=62209.8kbits/s speed= 27x video:13kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 60349.488281% After: frame= 24 fps=0.0 q=-0.0 Lsize= 7594kB time=00:00:01.00 bitrate=62209.8kbits/s speed= 28x video:7594kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002855% Signed-off-by: James Almer --- wrapped_avframe should be redefined to stop using sizeof(AVFrame) altogether. I'll send a patch with a proposed approach for this. fftools/ffmpeg.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 2abbc0ff29..6dcf9006db 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -727,7 +727,7 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u { AVFormatContext *s = of->ctx; AVStream *st = ost->st; - int ret; + int size, ret; /* * Audio encoders may split the packets -- #frames in != #packets out. @@ -842,7 +842,17 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u } ost->last_mux_dts = pkt->dts; - ost->data_size += pkt->size; + if (st->codecpar->codec_id == AV_CODEC_ID_WRAPPED_AVFRAME) { + AVFrame *frame = (AVFrame *)pkt->data; + if (!frame) + exit_program(1); + size = av_image_get_buffer_size(frame->format, frame->width, frame->height, 1); + if (size < 0) + exit_program(1); + } else + size = pkt->size; + + ost->data_size += size; ost->packets_written++; pkt->stream_index = ost->index;