diff options
Diffstat (limited to 'thirdparty/etc2comp/EtcImage.h')
-rw-r--r-- | thirdparty/etc2comp/EtcImage.h | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/thirdparty/etc2comp/EtcImage.h b/thirdparty/etc2comp/EtcImage.h deleted file mode 100644 index bd807ac32e..0000000000 --- a/thirdparty/etc2comp/EtcImage.h +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright 2015 The Etc2Comp Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -//#include "Etc.h" -#include "EtcColorFloatRGBA.h" -#include "EtcBlock4x4EncodingBits.h" -#include "EtcErrorMetric.h" - - -namespace Etc -{ - class Block4x4; - class EncoderSpec; - class SortedBlockList; - - class Image - { - public: - - //the differnt warning and errors that can come up during encoding - enum EncodingStatus - { - SUCCESS = 0, - // - WARNING_THRESHOLD = 1 << 0, - // - WARNING_EFFORT_OUT_OF_RANGE = 1 << 1, - WARNING_JOBS_OUT_OF_RANGE = 1 << 2, - WARNING_SOME_NON_OPAQUE_PIXELS = 1 << 3,//just for opaque formats, etc1, rgb8, r11, rg11 - WARNING_ALL_OPAQUE_PIXELS = 1 << 4, - WARNING_ALL_TRANSPARENT_PIXELS = 1 << 5, - WARNING_SOME_TRANSLUCENT_PIXELS = 1 << 6,//just for rgb8A1 - WARNING_SOME_RGBA_NOT_0_TO_1 = 1 << 7, - WARNING_SOME_BLUE_VALUES_ARE_NOT_ZERO = 1 << 8, - WARNING_SOME_GREEN_VALUES_ARE_NOT_ZERO = 1 << 9, - // - ERROR_THRESHOLD = 1 << 16, - // - ERROR_UNKNOWN_FORMAT = 1 << 17, - ERROR_UNKNOWN_ERROR_METRIC = 1 << 18, - ERROR_ZERO_WIDTH_OR_HEIGHT = 1 << 19, - // - }; - - enum class Format - { - UNKNOWN, - // - ETC1, - // - // ETC2 formats - RGB8, - SRGB8, - RGBA8, - SRGBA8, - R11, - SIGNED_R11, - RG11, - SIGNED_RG11, - RGB8A1, - SRGB8A1, - // - FORMATS, - // - DEFAULT = SRGB8 - }; - - // constructor using source image - Image(float *a_pafSourceRGBA, unsigned int a_uiSourceWidth, - unsigned int a_uiSourceHeight, - ErrorMetric a_errormetric); - - // constructor using encoding bits - Image(Format a_format, - unsigned int a_uiSourceWidth, unsigned int a_uiSourceHeight, - unsigned char *a_paucEncidingBits, unsigned int a_uiEncodingBitsBytes, - Image *a_pimageSource, - ErrorMetric a_errormetric); - - ~Image(void); - - EncodingStatus Encode(Format a_format, ErrorMetric a_errormetric, float a_fEffort, - unsigned int a_uiJobs, unsigned int a_uiMaxJobs); - - inline void AddToEncodingStatus(EncodingStatus a_encStatus) - { - m_encodingStatus = (EncodingStatus)((unsigned int)m_encodingStatus | (unsigned int)a_encStatus); - } - - inline unsigned int GetSourceWidth(void) - { - return m_uiSourceWidth; - } - - inline unsigned int GetSourceHeight(void) - { - return m_uiSourceHeight; - } - - inline unsigned int GetExtendedWidth(void) - { - return m_uiExtendedWidth; - } - - inline unsigned int GetExtendedHeight(void) - { - return m_uiExtendedHeight; - } - - inline unsigned int GetNumberOfBlocks() - { - return m_uiBlockColumns * m_uiBlockRows; - } - - inline Block4x4 * GetBlocks() - { - return m_pablock; - } - - inline unsigned char * GetEncodingBits(void) - { - return m_paucEncodingBits; - } - - inline unsigned int GetEncodingBitsBytes(void) - { - return m_uiEncodingBitsBytes; - } - - inline int GetEncodingTimeMs(void) - { - return m_iEncodeTime_ms; - } - - float GetError(void); - - inline ColorFloatRGBA * GetSourcePixel(unsigned int a_uiH, unsigned int a_uiV) - { - if (a_uiH >= m_uiSourceWidth || a_uiV >= m_uiSourceHeight) - { - return nullptr; - } - - return &m_pafrgbaSource[a_uiV*m_uiSourceWidth + a_uiH]; - } - - inline Format GetFormat(void) - { - return m_format; - } - - static Block4x4EncodingBits::Format DetermineEncodingBitsFormat(Format a_format); - - inline static unsigned short CalcExtendedDimension(unsigned short a_ushOriginalDimension) - { - return (unsigned short)((a_ushOriginalDimension + 3) & ~3); - } - - inline ErrorMetric GetErrorMetric(void) - { - return m_errormetric; - } - - static const char * EncodingFormatToString(Image::Format a_format); - const char * EncodingFormatToString(void); - //used to get basic information about the image data - int m_iNumOpaquePixels; - int m_iNumTranslucentPixels; - int m_iNumTransparentPixels; - - ColorFloatRGBA m_numColorValues; - ColorFloatRGBA m_numOutOfRangeValues; - - bool m_bVerboseOutput; - private: - //add a warning or error to check for while encoding - inline void TrackEncodingWarning(EncodingStatus a_encStatus) - { - m_warningsToCapture = (EncodingStatus)((unsigned int)m_warningsToCapture | (unsigned int)a_encStatus); - } - - //report the warning if it is something we care about for this encoding - inline void AddToEncodingStatusIfSignfigant(EncodingStatus a_encStatus) - { - if ((EncodingStatus)((unsigned int)m_warningsToCapture & (unsigned int)a_encStatus) == a_encStatus) - { - AddToEncodingStatus(a_encStatus); - } - } - - Image(void); - void FindEncodingWarningTypesForCurFormat(); - void FindAndSetEncodingWarnings(); - - void InitBlocksAndBlockSorter(void); - - void RunFirstPass(unsigned int a_uiMultithreadingOffset, - unsigned int a_uiMultithreadingStride); - - void SetEncodingBits(unsigned int a_uiMultithreadingOffset, - unsigned int a_uiMultithreadingStride); - - unsigned int IterateThroughWorstBlocks(unsigned int a_uiMaxBlocks, - unsigned int a_uiMultithreadingOffset, - unsigned int a_uiMultithreadingStride); - - // inputs - ColorFloatRGBA *m_pafrgbaSource; - unsigned int m_uiSourceWidth; - unsigned int m_uiSourceHeight; - unsigned int m_uiExtendedWidth; - unsigned int m_uiExtendedHeight; - unsigned int m_uiBlockColumns; - unsigned int m_uiBlockRows; - // intermediate data - Block4x4 *m_pablock; - // encoding - Format m_format; - Block4x4EncodingBits::Format m_encodingbitsformat; - unsigned int m_uiEncodingBitsBytes; // for entire image - unsigned char *m_paucEncodingBits; - ErrorMetric m_errormetric; - float m_fEffort; - // stats - int m_iEncodeTime_ms; - - SortedBlockList *m_psortedblocklist; - //this will hold any warning or errors that happen during encoding - EncodingStatus m_encodingStatus; - //these will be the warnings we are tracking - EncodingStatus m_warningsToCapture; - }; - -} // namespace Etc |