From patchwork Fri May 5 06:01:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muhammad Faiz X-Patchwork-Id: 3573 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp57188vsd; Thu, 4 May 2017 23:08:39 -0700 (PDT) X-Received: by 10.223.134.238 with SMTP id 43mr29147872wry.80.1493964519494; Thu, 04 May 2017 23:08:39 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h191si1638641wmd.31.2017.05.04.23.08.38; Thu, 04 May 2017 23:08:39 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 62302689918; Fri, 5 May 2017 09:08:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f65.google.com (mail-pg0-f65.google.com [74.125.83.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7F07D680C95 for ; Fri, 5 May 2017 09:08:24 +0300 (EEST) Received: by mail-pg0-f65.google.com with SMTP id i63so1082103pgd.2 for ; Thu, 04 May 2017 23:08:29 -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; bh=Q48jwzWjLH5+IoaaQYbV/8TqnJoZR0xTguz7j54KQJw=; b=hrifC69vUp1fhUuOmU04+rCkvkueDmQH4K4krRUTuqAleHTkiKOzvWFf/BTnBBOR+r z1bcrxwEm8dbseovkT0wsOtfXCP9zwjD9DK2iqDcrzr8DO2c75MkG0U5x+7msS4c7Gav +kmKcaMmGWwRhM0HuR76kwVWqF40GjRwGaZC8NFmPJsdoS7Ue2ZuHBqNO8ZS9iSkGtiF xyUzrFTAWkAMlsFGruGkD37ZVtDfDvIZTxXZv90LUo/l2kvH82YdfOpFRKMJoq7Zr3hi 5UC18qUAI/6pmlnX/2Fks/iTGKz0ef3tY8K1gMi5h137nrwXmWE0GVQo8YJRC32uWh9R yxLw== 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; bh=Q48jwzWjLH5+IoaaQYbV/8TqnJoZR0xTguz7j54KQJw=; b=e/wl7EF4svLX1zVgQTqcivgDLKpgDJ5TkG33+RouaE6xkqfZiWMyryS2IdZqoSNm/F 9iipyloeOv6cxnbGe5QdAhoJEo5blZCA01hYYVClhseM/BX91S6u+LZ11Oyh6rhiKCyE h8DK+b9XLsHANEoMAFdsw2qy0ahrh6dGpCZ3Jzs6zKTefzHLukcfmZrKefKuA8SPjAgT KEh8Dkkr4rVv0pEfnSuEKMqk90F1q/s321w6DCnFWKNz6DeXpjlwfXOdB3DvKK35XrDa 0TAvoM1gJEfDaURhfKnAztrFjqB1z5w2BOfInQhjJfd+Ngd4JOUrkB8zoNK9BhgyFdye RyrQ== X-Gm-Message-State: AN3rC/5lwEIy+hp9Jxmf797cim7q+/X1cOhI8pW4QN5YWGPvoITZPESe qYTRtUIi8lhqrA== X-Received: by 10.98.106.199 with SMTP id f190mr15568665pfc.142.1493964108186; Thu, 04 May 2017 23:01:48 -0700 (PDT) Received: from localhost.localdomain ([114.124.133.169]) by smtp.gmail.com with ESMTPSA id d83sm7875732pfe.40.2017.05.04.23.01.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 04 May 2017 23:01:47 -0700 (PDT) From: Muhammad Faiz To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 May 2017 13:01:31 +0700 Message-Id: <20170505060131.3103-1-mfcc64@gmail.com> X-Mailer: git-send-email 2.9.3 Subject: [FFmpeg-devel] [PATCH] avfilter: align data frame when needed 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: Muhammad Faiz MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This should fix Ticket6349. Since 383057f8e744efeaaa3648a59bc577b25b055835, framequeue may generate unaligned frame data. Signed-off-by: Muhammad Faiz --- libavfilter/avfilter.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 08b86b0..504f5c6 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -1192,7 +1192,31 @@ static int take_samples(AVFilterLink *link, unsigned min, unsigned max, av_assert1(samples_ready(link, link->min_samples)); frame0 = frame = ff_framequeue_peek(&link->fifo, 0); if (frame->nb_samples >= min && frame->nb_samples < max) { - *rframe = ff_framequeue_take(&link->fifo); + int align = 32; + if (!((align - 1) & (intptr_t)frame->data[0])) { + *rframe = ff_framequeue_take(&link->fifo); + return 0; + } + + buf = ff_get_audio_buffer(link, frame->nb_samples); + if (!buf) + return AVERROR(ENOMEM); + + ret = av_frame_copy_props(buf, frame); + if (ret < 0) { + av_frame_free(&buf); + return ret; + } + + ret = av_frame_copy(buf, frame); + if (ret < 0) { + av_frame_free(&buf); + return ret; + } + + frame = ff_framequeue_take(&link->fifo); + av_frame_free(&frame); + *rframe = buf; return 0; } nb_frames = 0;