From patchwork Fri Aug 25 11:25:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Yves Avenard X-Patchwork-Id: 4834 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.15.201 with SMTP id 70csp327920jao; Fri, 25 Aug 2017 04:30:49 -0700 (PDT) X-Received: by 10.28.10.75 with SMTP id 72mr1162282wmk.188.1503660649218; Fri, 25 Aug 2017 04:30:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1503660649; cv=none; d=google.com; s=arc-20160816; b=Txv4+agbrQ51D/7SMwfbSFW+UBOdgxDarC6a7CUTU6LlPUQEIECvv7rQdrHwb8+uqX WFzbGCGExWhFHQaeWiYtyZO+fQObGFVJkwNbGZN8iuUKkOQ9AL+PhKtZ77kUuOhFnrBW XrtS1L4ZQoImqT08KRP2bQ+ZmlDXcfDqfI3FHUSi4R1Z1DPDacdIumKfvY7ZVTVDwPrj 2RWC/LCCreAwr2Zef3yl0Fk4la6emLQFaKH5Qm9NxZHkN44K7vskZ/GXGZRha5N8V84z bgJMrEGWECTJs09MmIXdDEnVu/FF5FFHbXl3cuXt9GndKHXjDbUOi4YMbJdiPW5tWoP9 VLuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:to:message-id:date:from:mime-version :dkim-signature:delivered-to:arc-authentication-results; bh=nf+iKxjFg6t9L7LhNiTm0dcl84zRvE3Og9Eu0J2AfXM=; b=QBq8eW4GKx9Ry3CjbjOitIl7yd9CQ3oMXirpMLMeTOOXpxjXntrCzexx48Yo5aDwXz NsvPeGBp0ava/Tcsyax5USoVeHseqNHIszlyqB7qYwpOFLdNIRxUvExqCuxQhUzy/ZuD jnpQ7LO8/K3XYjaNRCScFdw2qtHeNKSB28xcg4j8QbSXeAnDFy41E8UKhbJHlGgH/pPH Ff3Vh6AapPBMZ/tf/sEsuSr1A0K/KCYk7PiY3Q6abCkVqFFD4q1vu4yZHcZIKqFohU1j 2blLfzSDSyplNaHsVAb5gbm9es1hNqcUppjoKELukR87s+nkKke6MCSHLPsXCgfkejch XLjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=s4q4OtLs; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b7si1093601wmg.61.2017.08.25.04.30.48; Fri, 25 Aug 2017 04:30:49 -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 header.s=20161025 header.b=s4q4OtLs; 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 C62FE689B03; Fri, 25 Aug 2017 14:30:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk0-f65.google.com (mail-vk0-f65.google.com [209.85.213.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31C74689AF8 for ; Fri, 25 Aug 2017 14:30:30 +0300 (EEST) Received: by mail-vk0-f65.google.com with SMTP id d124so828179vkf.3 for ; Fri, 25 Aug 2017 04:30:38 -0700 (PDT) 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=bUMZmlia+ZbAyU01fPko4/h8Qxi05zsl1wLDph/FpWI=; b=s4q4OtLsfC+5CPOdVYxLTwlszq6YlerSTOzdyT9/hnv/rl1gDeKFtc6PbFHr7Q4EQy L2DcnxMtP25iGJTuDMXcLsDuYNrbeCBH6zjS1zQjPg3Nv6C/LavNm+Pn4rHHcaCB60Jv Ekakjap4iWgdTivpTfrFud1g74cpRQMY+c/jTpVuIUPzZz1JQJinOIS/ojxmgc/wjc7E Bt7ZvxD75zwPL/+bpy4j/2lTMHAHK0CYumkR5xiHv36oKUCtFe7h1/I9Fng9TOf4Xb5I vZujqcO0FDkRSh5AHHcxDu1TpEmZFOiYssIORIgaBhf56Oo/uhi6ucGWi6sjzvXSX85A i/qQ== 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=bUMZmlia+ZbAyU01fPko4/h8Qxi05zsl1wLDph/FpWI=; b=mwQtaR7ZWjEBLP2O47II3ehht4vAisexLwNv3MQSkIfB/fCRjTwsaq+Vp3r4y7uecr Nr0EsDRtbIycVu1H0fjKzJt8ZK0LhYGyzYldYr+LNfgB449ls4zfzYuEsPiMn34zmm/e Cj6A8D7TsKyc18086tTPXz9e+yOdqcF8MzB/71D6KlrCuUaJNh+2UtOPGg2D5DGQERPm JwGLrpGotqjR1bzENR1FiRnNABCt8pkBq/Hx75DxPwr9gy2kDGX4uGewE50ugmKiNqhX oY8Av3Fdowj0cnmSMamKC4eTsqU6QkoEJnWdlpjS3VKT3f15WoskOyKm+TI86M4pUd3v tS6Q== X-Gm-Message-State: AHYfb5i12URlwfOMfkZBpWhKxflLMmhxTgKG6r804zSxy7tEC3Yy8Ugc ussoXTF2NTo41fvbZuUdbcLQS+2DVY5Isqw= X-Received: by 10.31.78.71 with SMTP id c68mr338239vkb.6.1503660323492; Fri, 25 Aug 2017 04:25:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.176.74.152 with HTTP; Fri, 25 Aug 2017 04:25:23 -0700 (PDT) From: Jean-Yves Avenard Date: Fri, 25 Aug 2017 13:25:23 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] Properly store sampling rate for FLAC in mp4 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" From 9baa7166fa96ed6beac9146c7e3b4dcf425a67d0 Mon Sep 17 00:00:00 2001 From: Jean-Yves Avenard Date: Fri, 25 Aug 2017 13:11:28 +0200 Subject: [PATCH] Properly store sampling rate for FLAC in mp4 Fixes ticket #6609 Signed-off-by: Jean-Yves Avenard --- libavformat/movenc.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 10b959ad02..aa4a9c962a 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1028,9 +1028,31 @@ static int mov_write_audio_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex avio_wb16(pb, 0); /* packet size (= 0) */ if (track->par->codec_id == AV_CODEC_ID_OPUS) avio_wb16(pb, 48000); - else - avio_wb16(pb, track->par->sample_rate <= UINT16_MAX ? - track->par->sample_rate : 0); + else { + uint32_t rate; + if (track->par->codec_id == AV_CODEC_ID_FLAC) { + /* When the bitstream's native sample rate is greater + than the maximum expressible value of 65535 Hz, + the samplerate field shall hold the greatest + expressible regular division of that rate. I.e. + the samplerate field shall hold 48000.0 for + native sample rates of 96 and 192 kHz. In the + case of unusual sample rates which do not have + an expressible regular division, the maximum value + of 65535.0 Hz should be used. */ + rate = track->par->sample_rate; + while (rate > UINT16_MAX && (rate & 1) == 0) { + rate = rate >> 1; + } + if (rate > UINT16_MAX) { + rate = UINT16_MAX; + } + } else { + rate = track->par->sample_rate <= UINT16_MAX ? + track->par->sample_rate : 0; + } + avio_wb16(pb, rate); + } avio_wb16(pb, 0); /* Reserved */ }