From patchwork Sun Apr 11 13:27:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 26862 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 011AC44B521 for ; Sun, 11 Apr 2021 16:27:25 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D840D6880AF; Sun, 11 Apr 2021 16:27:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F0A0680397 for ; Sun, 11 Apr 2021 16:27:18 +0300 (EEST) Received: by mail-qk1-f177.google.com with SMTP id i9so10653975qka.2 for ; Sun, 11 Apr 2021 06:27:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=pLBzgcrIbc8oxyKorJ6f0EMzvNzIaiSUzErlwrh5xEY=; b=qTDiW+e/U8bXtMXaT7xMjb0D9UmMTNoDH2QIriSkz55/Uh+mOB6ePewPsflU3A90HU wLog5aKiDDxrRq32PdR5SLNgKNfTkekOZ0751MGYb4dgfX2WwxOoaD9OzV0eaDU0PoE1 DNaOXl64Ux9Z+CG0qPSqKCcb2tWGB9adDncdgEpxntXvG+U0PcSc8xqUIMRGpidlNqU9 UrM1bQFWKoe1ZPzzppXoYLjosJoDsfgW53QMb5wC/6KOVy2kUPA6rLJWG/hES2ETgT3P FdY2uq0FcmDlO6uYZ2waYO6ZrfrdBPh8LBxmhGMZkcNDyBIid4LcTDbtNUdmI0MPH6fe cCOg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=pLBzgcrIbc8oxyKorJ6f0EMzvNzIaiSUzErlwrh5xEY=; b=J1Yb30OjXOoOT4TaSxouBnquVDki6ZfRkTREmpwuwdYdheTHwPO+8/HmSBF7kqQv9C adQeKjgbQsVBg/nm/lgVrf/L7kEIXZC+i8v/VMB1Iveoo96tvetXIqx3xn7dl9mV8fCc gZdKyL1pV/NSUF8g/8CIoNimXnJ0yK/qv8meanvGxkHw1KZ2guKJ/gP0vZL2drDcjGV1 zKqWygTqo/0NnNvgMBkQdCTJhJcaitB8gCT1F5neAs4FVdbgrCAAkwS3LWpDd9rlhdA3 wQpF5D0oU7T9eRtdah66NeNTF2bp/v00ljaP5vO9ImqJXd9+4NtA0G7D/o0Fj+/OOAtc RYvg== X-Gm-Message-State: AOAM531wQ+H90UDJj+zfKkJ95Re21oSoWSsIG+3cQOcNrl4a5Tta8B8b V7UzVBRIajybdSu1+cMpmp5JB7HBvfg= X-Google-Smtp-Source: ABdhPJyEMXspxtEKwdodtUla8u1SF2CvAmWjXKL6BF9kaZTKjGKDDzxmae5bTnzO/AFccWoDuwwMhA== X-Received: by 2002:a05:620a:7:: with SMTP id j7mr22733465qki.161.1618147636845; Sun, 11 Apr 2021 06:27:16 -0700 (PDT) Received: from localhost.localdomain ([191.83.208.158]) by smtp.gmail.com with ESMTPSA id g7sm5970125qti.20.2021.04.11.06.27.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Apr 2021 06:27:16 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 11 Apr 2021 10:27:02 -0300 Message-Id: <20210411132703.409-1-jamrial@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <161813458588.21468.8586314662034066265@lain.red.khirnov.net> References: <161813458588.21468.8586314662034066265@lain.red.khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3 v2] avcodec/libwebpenc_animencoder: set the correct packet pts 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" The only packet produced by this encoder contains the entire animated stream, so set its pts to the first frame encoded. Signed-off-by: James Almer --- Now setting pts to the value of the first frame as requested. libavcodec/libwebpenc_animencoder.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/libwebpenc_animencoder.c b/libavcodec/libwebpenc_animencoder.c index 633af2e925..835891d890 100644 --- a/libavcodec/libwebpenc_animencoder.c +++ b/libavcodec/libwebpenc_animencoder.c @@ -32,7 +32,7 @@ typedef struct LibWebPAnimContext { LibWebPContextCommon cc; WebPAnimEncoder *enc; // the main AnimEncoder object - int64_t prev_frame_pts; // pts of the previously encoded frame. + int64_t first_frame_pts; // pts of the first encoded frame. int done; // If true, we have assembled the bitstream already } LibWebPAnimContext; @@ -48,7 +48,7 @@ static av_cold int libwebp_anim_encode_init(AVCodecContext *avctx) s->enc = WebPAnimEncoderNew(avctx->width, avctx->height, &enc_options); if (!s->enc) return AVERROR(EINVAL); - s->prev_frame_pts = -1; + s->first_frame_pts = AV_NOPTS_VALUE; s->done = 0; } return ret; @@ -73,7 +73,7 @@ static int libwebp_anim_encode_frame(AVCodecContext *avctx, AVPacket *pkt, memcpy(pkt->data, assembled_data.bytes, assembled_data.size); s->done = 1; pkt->flags |= AV_PKT_FLAG_KEY; - pkt->pts = pkt->dts = s->prev_frame_pts + 1; + pkt->pts = pkt->dts = s->first_frame_pts; *got_packet = 1; return 0; } else { @@ -102,7 +102,8 @@ static int libwebp_anim_encode_frame(AVCodecContext *avctx, AVPacket *pkt, goto end; } - s->prev_frame_pts = frame->pts; // Save for next frame. + if (!avctx->frame_number) + s->first_frame_pts = frame->pts; ret = 0; *got_packet = 0;