From patchwork Wed Jun 14 03:01:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 3971 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.22.4 with SMTP id 4csp111011vsw; Tue, 13 Jun 2017 20:01:56 -0700 (PDT) X-Received: by 10.223.157.25 with SMTP id k25mr5467579wre.156.1497409316279; Tue, 13 Jun 2017 20:01:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497409316; cv=none; d=google.com; s=arc-20160816; b=fMsnr7qHeTPPZJUMgvkowLnvXjwXeLvtkztjyWT1MIiY5ZNgQafhihJuo/texvAr0y +ncmY597HvLNetQkA0TxIyDNP5HKGixAPWQBzcaG29rTNGz+Qh/bkDCtgEmB4DF9jiPB r9fWS0W4hiLz4daMXhqquROthnvNbVlnqLwcpnnsiMI88ei/ZyqAI2ooopwVqc2tsxNu kAoD/+8OXVQOVfg6CCRidqUmbF9xxbrlgvmT5ZdDNGKJH4vdGDv3jvJE9szW5ndwakfM laQfGDtNcYjQG+RpuY4cwOXFStPLC57wNX9iOhR3+ICEQ0IflfmGWoE2hNRwnl0T7TfC 1izw== 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:content-disposition:content-language :mime-version:user-agent:date:message-id:from:to:dkim-signature :delivered-to:arc-authentication-results; bh=5o1d/Tor38SApgdDVfqlFoG8zp58r2OhPpfSGFxU8Hs=; b=LbB4SyRgZXuTgrfmOCUPFg1L07HfSqkILyPiy0Ldq5Alikb/DwdXjPufzh0vXWsTVk pUsQg1IxNUM8yW4j3VCWXoToUnDcxRyxcXy3K52+SGHfeu+jO/az8Em2SGmS0E5h/f+a I90WUbs/ZDXHpMuD8JSe/AJQunqTtlKgfZFeH9JwO19zy8oBOxei53kymi4A2FqHUyXX c72z94u84ht4sz06qitGskAnDAMLnl4y00zhejpZigYE/IbHxgKEjxtiPkOEGumVhrh3 V+OZ0YnjfmhRtnoxtp437GRZan8Zt6ukKfhUhIhNifZii37p/5dVzLlUG3iyn601E/X9 AT9Q== ARC-Authentication-Results: i=1; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i8si1786112wrc.245.2017.06.13.20.01.55; Tue, 13 Jun 2017 20:01:56 -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 78A1B68A218; Wed, 14 Jun 2017 06:01:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f177.google.com (mail-pf0-f177.google.com [209.85.192.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B1462689AA7 for ; Wed, 14 Jun 2017 06:01:44 +0300 (EEST) Received: by mail-pf0-f177.google.com with SMTP id s66so8756551pfs.1 for ; Tue, 13 Jun 2017 20:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=0fvKmdtyDjob7pyVPA68/IeUqmTVIcd+7zYJ9zacMHo=; b=aEG9rpGXHZ0U+Mi4V8mtgtl30mPFyW81stpmFLAE9Zh+cfHc/Q3nzOh32jEKte0Q8t GSsT0+pWnbv9IzD7UwZqQX8Yl2v/pHfPP6kkwdZiBjV3RazBF5cGFgoZSwvpcxsD+g5x lDmC0JTb3EygnG2cpLJkAUVUZVBEFt8lJ96dLUZ7kDbEKWf2b5LCwFiyKWvUX4ng4k/z h0IOTBwSMB2rbkamhLdpXvvOxMy/tTWHKbroqKGLFi+4aXUC26Km6MHCNiQS+NuMQY2C R9TZTWLuyAkHgkflrrAbUCeqD1hq6TFApqjyhYi6mE20kzl2OhHaXUbryhbHqDz9vsG5 FwJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=0fvKmdtyDjob7pyVPA68/IeUqmTVIcd+7zYJ9zacMHo=; b=UUBILK+yFG3kv3GDj10eic0evaI3OafZRHmAFJxccV8jdVX+V3U9yZQHDFxlR9SD4h xuuplr1UA/fUmXn2w53yQb9y/FKaMPRN8JjziSASkYo7xbacQ7yxAsrJR6FV8/nHcLNY Bz34C8PSuerQ8j01m8y8uDs64dWSUGNLHlhjk4HG9DyjgJcEGDc0xLQpYGMvAxn+9l13 65gTs5Vy9/AALS03Ty2/gCguDHiaGV0psDm2M7BLqyQwft+U7hvZrbm5//ax54gj+PZf DLSVeq5N6FSL2LykHGiogKQjsi2XPVW3Qhmi1RAu0LZzZj7pXPbgOd7q1A+SCzpwE38h 4HEg== X-Gm-Message-State: AKS2vOw0moNjR2CKU5N5y+YmthRu70nGetAajyyz9Nh6bsfT/uD8qs8/ TW/NHyg84hKTTA== X-Received: by 10.99.144.196 with SMTP id a187mr2271049pge.184.1497409305949; Tue, 13 Jun 2017 20:01:45 -0700 (PDT) Received: from [10.239.204.66] (fmdmzpr02-ext.fm.intel.com. [192.55.55.37]) by smtp.gmail.com with ESMTPSA id m26sm6424455pgn.30.2017.06.13.20.01.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Jun 2017 20:01:44 -0700 (PDT) To: FFmpeg development discussions and patches , Michael Niedermayer From: Jun Zhao Message-ID: <39e9574b-41c2-dc1b-5bf2-f2fe269b0f0a@gmail.com> Date: Wed, 14 Jun 2017 11:01:42 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 Content-Language: en-US Content-Disposition: attachment; filename*0="0002-lavc-put_bits-Add-put_bits64-to-support-up-to-64-bit.pa"; filename*1="tch" X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH V5 2/4] lavc/put_bits: Add put_bits64() to support up to 64 bits. 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 703be162119f78e1815d1f3b23afb24978ff36d7 Mon Sep 17 00:00:00 2001 From: Jun Zhao Date: Wed, 14 Jun 2017 10:22:10 +0800 Subject: [PATCH V5 2/4] lavc/put_bits: Add put_bits64() to support up to 64 bits. put_bits64() can write up to 64 bits into a bitstream. Reviewed-by: Mark Thompson Reviewed-by: Michael Niedermayer Signed-off-by: Jun Zhao --- libavcodec/put_bits.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/libavcodec/put_bits.h b/libavcodec/put_bits.h index 9bd45cd8ba..b85e88f28c 100644 --- a/libavcodec/put_bits.h +++ b/libavcodec/put_bits.h @@ -243,6 +243,41 @@ static void av_unused put_bits32(PutBitContext *s, uint32_t value) } /** + * Write up to 64 bits into a bitstream. + */ +static inline void put_bits64(PutBitContext *s, int n, uint64_t value) +{ + av_assert2((n == 64) || (n < 64 && value < (UINT64_C(1) << n))); + + if (n < 32) + put_bits(s, n, value); + else if (n == 32) + put_bits32(s, value); + else if (n < 64) { + uint32_t lo = value & 0xffffffff; + uint32_t hi = value >> 32; +#ifdef BITSTREAM_WRITER_LE + put_bits32(s, lo); + put_bits(s, n - 32, hi); +#else + put_bits(s, n - 32, hi); + put_bits32(s, lo); +#endif + } else { + uint32_t lo = value & 0xffffffff; + uint32_t hi = value >> 32; +#ifdef BITSTREAM_WRITER_LE + put_bits32(s, lo); + put_bits32(s, hi); +#else + put_bits32(s, hi); + put_bits32(s, lo); +#endif + + } +} + +/** * Return the pointer to the byte where the bitstream writer will put * the next bit. */