📄 enchtbl.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) 2001-2005 Intel Corporation. All Rights Reserved.//*/#include "precomp.h"#ifndef __JPEGBASE_H__#include "jpegbase.h"#endif#ifndef __ENCHTBL_H__#include "enchtbl.h"#endifCJPEGEncoderHuffmanTable::CJPEGEncoderHuffmanTable(void){ m_id = 0; m_hclass = 0; m_table = 0; ippsZero_8u(m_bits,sizeof(m_bits)); ippsZero_8u(m_vals,sizeof(m_vals)); return;} // ctorCJPEGEncoderHuffmanTable::~CJPEGEncoderHuffmanTable(void){ Destroy(); return;} // dtorJERRCODE CJPEGEncoderHuffmanTable::Create(void){ int size; IppStatus status; status = ippiEncodeHuffmanSpecGetBufSize_JPEG_8u(&size); if(ippStsNoErr != status) { LOG1("IPP Error: ippiEncodeHuffmanSpecGetBufSize_JPEG_8u() failed - ",status); return JPEG_INTERNAL_ERROR; } if(0 != m_table) { ippFree(m_table); m_table = 0; } m_table = (IppiEncodeHuffmanSpec*)ippMalloc(size); if(0 == m_table) { LOG0("IPP Error: ippMalloc() failed"); return JPEG_OUT_OF_MEMORY; } return JPEG_OK;} // CJPEGEncoderHuffmanTable::Create()JERRCODE CJPEGEncoderHuffmanTable::Destroy(void){ m_id = 0; m_hclass = 0; m_table = 0; ippsZero_8u(m_bits,sizeof(m_bits)); ippsZero_8u(m_vals,sizeof(m_vals)); if(0 != m_table) { ippFree(m_table); m_table = 0; } return JPEG_OK;} // CJPEGEncoderHuffmanTable::Destroy()JERRCODE CJPEGEncoderHuffmanTable::Init(int id,int hclass,Ipp8u* bits,Ipp8u* vals){ IppStatus status; m_id = id & 0x0f; m_hclass = hclass & 0x0f; ippsCopy_8u(bits,m_bits,16); ippsCopy_8u(vals,m_vals,256); status = ippiEncodeHuffmanSpecInit_JPEG_8u(m_bits,m_vals,m_table); if(ippStsNoErr != status) { LOG1("IPP Error: ippiEncodeHuffmanSpecInit_JPEG_8u() failes - ", status); return JPEG_INTERNAL_ERROR; } return JPEG_OK;} // CJPEGEncoderHuffmanTable::Init()CJPEGEncoderHuffmanState::CJPEGEncoderHuffmanState(void){ m_state = 0; return;} // ctorCJPEGEncoderHuffmanState::~CJPEGEncoderHuffmanState(void){ Destroy(); return;} // dtorJERRCODE CJPEGEncoderHuffmanState::Create(void){ int size; IppStatus status; status = ippiEncodeHuffmanStateGetBufSize_JPEG_8u(&size); if(ippStsNoErr != status) { LOG1("IPP Error: ippiEncodeHuffmanStateGetBufSize_JPEG_8u() failed - ",status); return JPEG_INTERNAL_ERROR; } if(0 != m_state) { ippFree(m_state); m_state = 0; } m_state = (IppiEncodeHuffmanState*)ippMalloc(size); if(0 == m_state) { LOG0("IPP Error: ippMalloc() failed"); return JPEG_OUT_OF_MEMORY; } return JPEG_OK;} // CJPEGEncoderHuffmanState::Create()JERRCODE CJPEGEncoderHuffmanState::Destroy(void){ if(0 != m_state) { ippFree(m_state); m_state = 0; } return JPEG_OK;} // CJPEGEncoderHuffmanState::Destroy()JERRCODE CJPEGEncoderHuffmanState::Init(void){ IppStatus status; status = ippiEncodeHuffmanStateInit_JPEG_8u(m_state); if(ippStsNoErr != status) { LOG1("IPP Error: ippiEncodeHuffmanStateInit_JPEG_8u() failed - ",status); return JPEG_INTERNAL_ERROR; } return JPEG_OK;} // CJPEGEncoderHuffmanState::Init()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -