📄 ippvideobitstream.cpp
字号:
/* /////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright (c) 2003-2005 Intel Corporation. All Rights Reserved.//// Description: class ippVideoBitStream//*/#include "ippvideobitstream.hpp"#include "ippdefs.h"#if /*(_WIN32_WCE == 500) && */(_MSC_VER == 1201)// INTERNAL COMPILER ERROR#pragma optimize ("g", off)#endifvoid ippBitStream::PutBits(Ipp32u val, int n){ val <<= 32 - n; if (mBitOff == 0) { mPtr[0] = (Ipp8u)(val >> 24); if (n > 8) { mPtr[1] = (Ipp8u)(val >> 16); if (n > 16) { mPtr[2] = (Ipp8u)(val >> 8); if (n > 24) { mPtr[3] = (Ipp8u)(val); } } } } else { mPtr[0] = (Ipp8u)((mPtr[0] & (0xFF << (8 - mBitOff))) | (Ipp8u)(val >> (24 + mBitOff))); if (n > 8 - mBitOff) { val <<= 8 - mBitOff; mPtr[1] = (Ipp8u)(val >> 24); if (n > 16 - mBitOff) { mPtr[2] = (Ipp8u)(val >> 16); if (n > 24 - mBitOff) { mPtr[3] = (Ipp8u)(val >> 8); if (n > 32 - mBitOff) { mPtr[4] = (Ipp8u)val; } } } } } mPtr += (mBitOff + n) >> 3; mBitOff = (mBitOff + n) & 7;}void ippBitStream::PutBit(Ipp32u val){ if (mBitOff == 0) { mPtr[0] = (Ipp8u)((val & 1) ? 0x80 : 0x00); mBitOff ++; } else { if (val & 1) mPtr[0] = (Ipp8u)(mPtr[0] | (Ipp8u)(0x01 << (7 - mBitOff))); else mPtr[0] = (Ipp8u)(mPtr[0] & (Ipp8u)(0xff << (8 - mBitOff))); mPtr += (mBitOff + 1) >> 3; mBitOff = (mBitOff + 1) & 7; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -