⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phbitout.h

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 H
字号:
/* ////////////////////////////////////////////////////////////////////////////                  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) 2002-2005 Intel Corporation. All Rights Reserved.//////*//*//  PHBitOut implements sequential data writing by single bit.//      It uses for packet header output and it implements bit stuffing//      routine described in B.10.1 article of JPEG 200 standard.//      This procedure avoids writing of marker code in output stream.//////*/#ifndef __PHBITOUT_H__#define __PHBITOUT_H__#include "ippdefs.h"template<class ByteOutput>class PHBitOut{public:    PHBitOut(ByteOutput &buffer)    : m_buffer(&buffer)    , m_byte(0)    , m_bitPos(7)    , m_isFF(0)    {}    void Write(bool bit)    {        if(bit) Write1();        else    Write0();    }    void Write0()    {        m_bitPos--;        if(m_bitPos >=0) return;        m_isFF = (m_byte == 0xFF);        if(m_isFF) m_bitPos = 6;        else       m_bitPos = 7;        ByteOutAndClear();    }    void Write1()    {        m_byte |= ((Ipp32u)1) << (Ipp32u)(m_bitPos);        m_bitPos--;        if(m_bitPos >=0) return;        m_isFF = (m_byte == 0xFF);        if(m_isFF) m_bitPos = 6;        else       m_bitPos = 7;        ByteOutAndClear();    }    void Write(int bits, int count)    {        for(int i = count-1; i >= 0; i--)            Write( (bits & (1 << i)) != 0);    }    void Flush()    {        if (m_isFF)        {            if (m_bitPos == 6)            {                m_byte = 0;                ByteOutAndClear();            }            else                ByteOutAndClear();        }        else        {            if (m_bitPos != 7)                ByteOutAndClear();        }        m_isFF   = false;        m_bitPos = 7;    }protected:    ByteOutput *m_buffer;    unsigned int m_byte;    int          m_bitPos;    bool         m_isFF;    void ByteOutAndClear()    {        m_buffer->Write8u((Ipp8u)m_byte);        m_byte = 0;    }};#endif // __PHBITOUT_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -