From patchwork Fri Jul 24 08:37:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 21248 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 94500448D9F for ; Fri, 24 Jul 2020 11:38:23 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7DE1B68B7F1; Fri, 24 Jul 2020 11:38:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A743768B7DF for ; Fri, 24 Jul 2020 11:38:15 +0300 (EEST) Received: by mail-ej1-f68.google.com with SMTP id y10so9200057eje.1 for ; Fri, 24 Jul 2020 01:38:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IqeCreyeK/nZFMi4S+xwoAlp4NmS0w2fcZwm5eNNeQY=; b=VEk9lRrzaJ7OkqAFsP9uI9kc8TArm95CvEkux8caODHmW29LSjCsLWYJmaeOJuvG/X fyLLF9o9jgTDdLJiHt57JnjLY0XyssXTSHNLxGfXsRFYf1dg7qIGbmc9eIww6v8uDEvr Z2uaLg7WHW7g04onsiaToquHr/RH5vDufj2YfOrXAnclHOaSedLhZQHgSo1S1C4MTY6/ nEJSno3HzOD1EOat1wZ5Nr5lH79Gz2BlJRvXza10BlcoNyd76H5+ESLODcLW4RVV7786 QW3wEwjRHT2A65WhVo45tJltOir1rDBIVyekHnv5K1+ncanBVKxYGEoFz3dTun+j+9qe qUMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IqeCreyeK/nZFMi4S+xwoAlp4NmS0w2fcZwm5eNNeQY=; b=Fizkcn7NzEYRdQmuyKNWTjm2reVk0/G6ERGWfB92Jdds6LwlR9ZmuBTvwqkvPeTJLC 2UELspqXD/+4g9Pxn8LYnEEH/29uZsUCzT07KaB7kq9LqYekyP6MGFSEfrKFcbgxg9Kx ZaEMBDoIy4xXGTjYQEDm/FxYnovJpn5HyVSJGHL7EPARZt8mpjrUuwwtcgKeoNVwpTsl JMmHlQv8FtKii8Lvq4I2gegDjRv5w/6ob28jRwuCe9hbVFo+rSwf+wA0dD6oOHS7Qn5U xUF3WJUnvD/mPe+XgfudwIeD8jDXSJRdJyFUSFlj69YAjcvm+SqEpPaFmBrD2nqwyD9r wmdg== X-Gm-Message-State: AOAM530c5EhJvx2OMUBvsslnYS+/opg0IUC8Jdj/z6QJmYDQ3zzQRgsv TjJBDp8QQjAB4qexnetiAk3BWfXu X-Google-Smtp-Source: ABdhPJwEZ9PPshYS/aah6/GY0kMFyp3t1nBvzA7O8Q/SIdMDntjQ+bGuRNd7PmFSM6DegaNjGRxTDQ== X-Received: by 2002:a17:907:20b4:: with SMTP id pw20mr8460296ejb.225.1595579894793; Fri, 24 Jul 2020 01:38:14 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc10296.dynamic.kabel-deutschland.de. [188.193.2.150]) by smtp.gmail.com with ESMTPSA id r19sm239487edi.85.2020.07.24.01.38.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2020 01:38:14 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jul 2020 10:37:17 +0200 Message-Id: <20200724083717.8491-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200724041021.23977-1-andreas.rheinhardt@gmail.com> References: <20200724041021.23977-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] avformat/smacker: Don't return packets for streams with AVDISCARD_ALL 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavformat/smacker.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavformat/smacker.c b/libavformat/smacker.c index b7a68a63f3..9966a67055 100644 --- a/libavformat/smacker.c +++ b/libavformat/smacker.c @@ -308,8 +308,11 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt) smk->frame_size -= size; size -= 4; - if (smk->indexes[i] < 0) { - avio_skip(s->pb, size); + if (smk->indexes[i] < 0 || + s->streams[smk->indexes[i]]->discard >= AVDISCARD_ALL) { + smk->aud_pts[i] += smk->duration_size[i] ? avio_rl32(s->pb) + : size; + avio_skip(s->pb, size - smk->duration_size[i]); continue; } if ((ret = av_get_packet(s->pb, pkt, size)) != size) { @@ -326,6 +329,10 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt) } } + if (s->streams[smk->videoindex]->discard >= AVDISCARD_ALL) { + ret = FFERROR_REDO; + goto next_frame; + } if (smk->frame_size >= INT_MAX/2) { ret = AVERROR_INVALIDDATA; goto next_frame;