From patchwork Sun Oct 6 22:19:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Moritz Barsnick X-Patchwork-Id: 15535 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 82A54448ACD for ; Mon, 7 Oct 2019 01:19:52 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 69702687FEB; Mon, 7 Oct 2019 01:19:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBC42687FE0 for ; Mon, 7 Oct 2019 01:19:44 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1570400384; bh=kiy6/tECsdQxYymSa79HhhZQ91E9CHi+wTrgcitLx5c=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=IbJ6gNKCOwGxYkscsNHlQcu9XpGnfh6PIG0qGTpwWWCWIpwLREmkPQSEnhuVfFpmA s6yXXWnXg2qJjYQqADIy6esHNveCVGa2FbJJt/EDBnKDmoJ8DIIcCI82FG3KP2XQzb xb4pixMCIt0tNO/bxCBlztJmJntgBfIvLbeGl9lc= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from paradise.fritz.box ([89.182.225.10]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M5wPh-1iANOV0Pe7-007V0J; Mon, 07 Oct 2019 00:19:44 +0200 From: Moritz Barsnick To: FFmpeg development discussions and patches Date: Mon, 7 Oct 2019 00:19:30 +0200 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: <70a15566835b8a83cf98921ca23b382937348e23.1570398124.git.barsnick@gmx.net> MIME-Version: 1.0 X-Provags-ID: V03:K1:rk0kGbrgG27j4mEmaFI6dw4Hv3AASh94mJpyJgPsPbbLusg5v9f 51AVBd7cPtDdvMCqiBMgL0KMljU5sgG9Q3MDDs65paPLhm1gBz2eOnswd8axNYpygPeEQXo PyTOpkYTf+NBAtgsvDoM3F+P8FixfVk1KHjWtr38DvCIg5fELsBmPTZyPoE2tE1hWGshXeR YDmRehPruZz7wNB4ongcA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:w21/frbFVuQ=:PsFpF78JJ12iEnhOhJTJMG jeCIQpVN4shDkaFmUTvVWctn1eqlaitkt9xgR5Er4biL5DPYt4yqKQZu4QsVV277LKL+LAYBb Y0sbeymprpficzerg2S92FTR5oU8hwlL+jmkhuLjcRGQblkxvjIgkJTlZg/6OracwEgnTUnjA s9CuEiDy6628m56AOy0ATWqL4iDsKDQOjQpc1uJEETAX58aWGLney/1AwWeF/OtN+L7NV8Be8 lKzH763A+o7hwN/vtFt+Sds4BVwY0TcWylncDYMNnFmpBu2cJ2BWV6NUfvMhlgN692t9KZtNC JiEI+HEX11XZcDIOjBsJ4r+v9XSPL+irkvLF9PIpzvZliL2nBT9crdYS+LzsJDP1U0aOLgjDq 8yUbvDVQTWLHweT+TDUa7loXRfWVkhGZkTg5lFNFUo25xCdEDyBt6d53vtEJlRRkz0b7+bXfM 4B8wLFm122k+0ZImBh01HmGL8uuJvTg5q2Qve0jJeaMf6d7GnzLOdDOD+5KqGSOmuKN2zM7NE H4de79gzyObkj6j4UvIfdzw+ZwS1c64LkFTFUefFTmP5/yVKPUceEXtqK2EdSLA/CrKL+83nI JB2GXNwxAmwpKHA0attsChoGpSILM73Q4sBxJ1ldxEyjhUR0v1+kHcHOyzWxpWk0WUFuosW5a p/1z1bKCTEqTmcz8V6No7iXjoLG6QH+J3SuwHXqN/EOFOgp8NdO8HGXMVSdCNqgQ6CzfjKEYX CVE8IZAfDwvXaW+QNU27i7JnpzN8GB2ovwfEG4JOPtW/6p4L2uuq4c0pi3g67gAeP48KNJebV gunWAmimatFYwCcvQ1ORDo+2Cq4gUsBszn2U0YsrSQkhf/3CWJ5NJBDUj5tDuaF2n2dXOezyF +qdh0Em0zzd/5yOiQoVvV5O9Yr5QueAV2QXKv2UybpLKDx5sfT46FbKQxxtjis+xgofa79m3o dRHne/Y7XbwdRJXPDwTNNOBs/EDvtto3hv2kFt6P4kXyHC+dzDfYQe1nogyhjEjRuXZt7vxhV 0CjV2oMCSaQC+cquLw3l0h8XhrDe4D+UPdo61f5Odd+ge4OQUAfkcSS8vCpcByX6cSIEI07zN 58arriPZrSlQbA8UkRsGw4CbxDaZTTHO3yCp3bKCAsspehOUpiaYSIhwjAxvM8cmY6uEnPIuB m68E2Icssg5NEtCodzakLJxiNazatVmwIoCJTbsZ3mHI3AslU7c4zpRcvUuQqGqq0sI2dhBkh 512UbO449Kd0OrIiYIrucFylRt+YtdFQnf5TxpQ== Subject: [FFmpeg-devel] [PATCH v3 3/3] avformat/mpjpegdec: ensure seekback for latest chunk 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: Moritz Barsnick Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Not only the first, but each latest chunk must be cached to allow seekback after finding the mime boundary. Fixes trac #5023 and #5921. Signed-off-by: Moritz Barsnick --- libavformat/mpjpegdec.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) -- 2.20.1 diff --git a/libavformat/mpjpegdec.c b/libavformat/mpjpegdec.c index 24bf232db2..c79a39c69d 100644 --- a/libavformat/mpjpegdec.c +++ b/libavformat/mpjpegdec.c @@ -336,10 +336,8 @@ static int mpjpeg_read_packet(AVFormatContext *s, AVPacket *pkt) pkt->size = 0; pkt->pos = avio_tell(s->pb); - /* we may need to return as much as all we've read back to the buffer */ - ffio_ensure_seekback(s->pb, read_chunk); - - while ((ret = av_append_packet(s->pb, pkt, read_chunk - remaining)) >= 0) { + while ((ret = ffio_ensure_seekback(s->pb, read_chunk - remaining)) >= 0 && /* we may need to return as much as all we've read back to the buffer */ + (ret = av_append_packet(s->pb, pkt, read_chunk - remaining)) >= 0) { /* scan the new data */ char *start;