From patchwork Thu Feb 14 19:18:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 12074 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 4FD95447F5D for ; Thu, 14 Feb 2019 21:18:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 385D368A2F7; Thu, 14 Feb 2019 21:18:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it1-f195.google.com (mail-it1-f195.google.com [209.85.166.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2861C688362 for ; Thu, 14 Feb 2019 21:18:36 +0200 (EET) Received: by mail-it1-f195.google.com with SMTP id g137so5610555ita.0 for ; Thu, 14 Feb 2019 11:18:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=wtSoek/nI5FiaYm9yA+MEqwMYnSgi69p4bx1e7yg6K4=; b=JoM9Wl/wWN6RG0Lj8odWwGMmg19G4+Ei4F1hZC6/dwS1Hz6IkYmuXqFKIEpvd53env q7d6Kf9eRlbCTvDX4wgypOzb29dHs4BwpC0vpcdCbgR+dXLJF1ywVRbYVI0XLX27We+U otb9XpwQIVXLsEknLbsx24UfzJg+feh3mxDaXUkQy7xYx8askZkzj0Y7TEoxRtsDplFR D40j7I+Ps2OUPB+8dqhZnzfxSJtjc6Y8iNIG8CQF0FTjligrrq4uszGmm3Zs4n3clKWJ QOHdXUKYAu9mG8GvOJuarTB/dPcKW7HxYeNsY24I5PWcwF5qs5hdrovnVCxwE1mDhzUM JFpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wtSoek/nI5FiaYm9yA+MEqwMYnSgi69p4bx1e7yg6K4=; b=XXkB2vilmuP7BVpQjvti5WDBHr6/i3YZeDuywxEC5HL6FmYHrRMA6F7MJSKY5YfFx2 ReTICVLfTDcvMvy60IR8QSfClq3gYim+fSaOh8gj/EFB5mZ2nyB4bZKiJtPuOyAhGR8D XrvgLyktv1wDWeRSNiRewk5JW7T9M2k74rdh3hs6T2GkTcsuuqImrbE0awBvbFbCvr9u mz9cvqpUbaCX6PhfwqQZ+xgw6+B1QaFON8XedriHCUJCkwX35gmg9+/dss6DwbKAWokg acfDDz/NgU3I6rnIvqx3HJ1iGGmfam100pJOm34c/aTEQsuMSqpe4aM89AHTi2Wf5w2B kPwQ== X-Gm-Message-State: AHQUAuabMRACS6TA2N+sdVDQijbug8ZN/ybaQ0DxVhpO5utulc/jfXOx 1iVnZRrEq/L67I/acEdJNMu6sV9gk1przs0XRmQUcg== X-Google-Smtp-Source: AHgI3IZxcz/Ix+CaRqaIe1QbJL+lTkfHZ97BGV18O//7RFghe7jdb1ZKQh7bvDIhN+HJ3kCcG2x3/oMm0BIjuNlH5po= X-Received: by 2002:a24:bdcc:: with SMTP id x195mr1764391ite.149.1550171914590; Thu, 14 Feb 2019 11:18:34 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a02:940e:0:0:0:0:0 with HTTP; Thu, 14 Feb 2019 11:18:34 -0800 (PST) From: Carl Eugen Hoyos Date: Thu, 14 Feb 2019 20:18:34 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavf/spdifenc: Do not overwrite buffer when muxing TrueHD 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" Hi! Currently, when muxing TrueHD in spdif, the buffer is always overwritten. Typical 64bit operating systems do not care, but this should definitely be fixed before the new buffering model can get committed. Please comment, Carl Eugen From 3858971376f97241d29d4f7d3b261009af3c87a9 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Thu, 14 Feb 2019 20:16:18 +0100 Subject: [PATCH] lavf/spdifenc: Do not overwrite buffer when muxing TrueHD. Fixes ticket #7733. --- libavformat/spdifenc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c index 9514ff8..4307942 100644 --- a/libavformat/spdifenc.c +++ b/libavformat/spdifenc.c @@ -422,8 +422,13 @@ static int spdif_header_truehd(AVFormatContext *s, AVPacket *pkt) memcpy(&ctx->hd_buf[ctx->hd_buf_count * TRUEHD_FRAME_OFFSET - BURST_HEADER_SIZE + mat_code_length], pkt->data, pkt->size); - memset(&ctx->hd_buf[ctx->hd_buf_count * TRUEHD_FRAME_OFFSET - BURST_HEADER_SIZE + mat_code_length + pkt->size], - 0, TRUEHD_FRAME_OFFSET - pkt->size - mat_code_length); + if (ctx->hd_buf_count < 23) { + memset(&ctx->hd_buf[ctx->hd_buf_count * TRUEHD_FRAME_OFFSET - BURST_HEADER_SIZE + mat_code_length + pkt->size], + 0, TRUEHD_FRAME_OFFSET - pkt->size - mat_code_length); + } else { + size_t padding = MAT_FRAME_SIZE - (ctx->hd_buf_count * TRUEHD_FRAME_OFFSET - BURST_HEADER_SIZE + pkt->size); + memset(&ctx->hd_buf[MAT_FRAME_SIZE - padding], 0, padding); + } if (++ctx->hd_buf_count < 24){ ctx->pkt_offset = 0; -- 1.7.10.4