本文整理汇总了C++中ThrowRDE函数的典型用法代码示例。如果您正苦于以下问题:C++ ThrowRDE函数的具体用法?C++ ThrowRDE怎么用?C++ ThrowRDE使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ThrowRDE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ThrowRDE
void NefDecoder::decodeMetaDataInternal(CameraMetaData *meta) {
int iso = 0;
mRaw->cfa.setCFA(CFA_RED, CFA_GREEN, CFA_GREEN2, CFA_BLUE);
vector<TiffIFD*> data = mRootIFD->getIFDsWithTag(MODEL);
if (data.empty())
ThrowRDE("NEF Meta Decoder: Model name found");
if (!data[0]->hasEntry(MAKE))
ThrowRDE("NEF Support: Make name not found");
int white = mRaw->whitePoint;
int black = mRaw->blackLevel;
string make = data[0]->getEntry(MAKE)->getString();
string model = data[0]->getEntry(MODEL)->getString();
if (mRootIFD->hasEntryRecursive(ISOSPEEDRATINGS))
iso = mRootIFD->getEntryRecursive(ISOSPEEDRATINGS)->getInt();
string mode = getMode();
if (meta->hasCamera(make, model, mode)) {
setMetaData(meta, make, model, mode, iso);
} else {
setMetaData(meta, make, model, "", iso);
}
if (white != 65536)
mRaw->whitePoint = white;
if (black >= 0)
mRaw->blackLevel = black;
}
示例2: bs
void PentaxDecompressor::decompress(const ByteStream& data) const {
BitPumpMSB bs(data);
uchar8* draw = mRaw->getData();
assert(mRaw->dim.y > 0);
assert(mRaw->dim.x > 0);
assert(mRaw->dim.x % 2 == 0);
int pUp1[2] = {0, 0};
int pUp2[2] = {0, 0};
for (int y = 0; y < mRaw->dim.y && mRaw->dim.x >= 2; y++) {
auto* dest = reinterpret_cast<ushort16*>(&draw[y * mRaw->pitch]);
pUp1[y & 1] += ht.decodeNext(bs);
pUp2[y & 1] += ht.decodeNext(bs);
int pLeft1 = dest[0] = pUp1[y & 1];
int pLeft2 = dest[1] = pUp2[y & 1];
for (int x = 2; x < mRaw->dim.x; x += 2) {
pLeft1 += ht.decodeNext(bs);
pLeft2 += ht.decodeNext(bs);
dest[x] = pLeft1;
dest[x + 1] = pLeft2;
if (pLeft1 < 0 || pLeft1 > 65535)
ThrowRDE("decoded value out of bounds at %d:%d", x, y);
if (pLeft2 < 0 || pLeft2 > 65535)
ThrowRDE("decoded value out of bounds at %d:%d", x, y);
}
}
}
示例3: ThrowIOE
void NefDecoder::readCoolpixMangledRaw(ByteStream &input, iPoint2D& size, iPoint2D& offset, int inputPitch) {
uchar8* data = mRaw->getData();
uint32 outPitch = mRaw->pitch;
uint32 w = size.x;
uint32 h = size.y;
uint32 cpp = mRaw->getCpp();
if (input.getRemainSize() < (inputPitch*h)) {
if ((int)input.getRemainSize() > inputPitch)
h = input.getRemainSize() / inputPitch - 1;
else
ThrowIOE("readUncompressedRaw: Not enough data to decode a single line. Image file truncated.");
}
if (offset.y > mRaw->dim.y)
ThrowRDE("readUncompressedRaw: Invalid y offset");
if (offset.x + size.x > mRaw->dim.x)
ThrowRDE("readUncompressedRaw: Invalid x offset");
uint32 y = offset.y;
h = MIN(h + (uint32)offset.y, (uint32)mRaw->dim.y);
w *= cpp;
BitPumpMSB32 *in = new BitPumpMSB32(&input);
for (; y < h; y++) {
ushort16* dest = (ushort16*) & data[offset.x*sizeof(ushort16)*cpp+y*outPitch];
for (uint32 x = 0 ; x < w; x++) {
dest[x] = in->getBits(12);
}
}
}
示例4: ThrowRDE
void X3fParser::readDirectory()
{
bytes->setAbsoluteOffset(mFile->getSize()-4);
uint32 dir_off = bytes->getUInt();
bytes->setAbsoluteOffset(dir_off);
// Check signature
if (0 != getIdAsString(bytes).compare("SECd"))
ThrowRDE("X3F Decoder: Unable to locate directory");
uint32 version = bytes->getUInt();
if (version < 0x00020000)
ThrowRDE("X3F Decoder: File version too old (directory)");
uint32 n_entries = bytes->getUInt();
for (uint32 i = 0; i < n_entries; i++) {
X3fDirectory dir(bytes);
decoder->mDirectory.push_back(dir);
bytes->pushOffset();
if (0 == dir.id.compare("IMA2") || 0 == dir.id.compare("IMAG")){
decoder->mImages.push_back(X3fImage(bytes, dir.offset, dir.length));
}
if (0 == dir.id.compare("PROP")){
decoder->mProperties.addProperties(bytes, dir.offset, dir.length);
}
bytes->popOffset();
}
}
示例5: ThrowRDE
// Interpolate and convert sRaw data.
void Cr2Decoder::sRawInterpolate() {
vector<TiffIFD*> data = mRootIFD->getIFDsWithTag((TiffTag)0x4001);
if (data.empty())
ThrowRDE("CR2 sRaw: Unable to locate WB info.");
const ushort16 *wb_data = data[0]->getEntry((TiffTag)0x4001)->getShortArray();
// Offset to sRaw coefficients used to reconstruct uncorrected RGB data.
wb_data = &wb_data[4+(126+22)/2];
sraw_coeffs[0] = wb_data[0];
sraw_coeffs[1] = (wb_data[1] + wb_data[2] + 1) >> 1;
sraw_coeffs[2] = wb_data[3];
// Check if sRaw2 is using old coefficients
data = mRootIFD->getIFDsWithTag(MODEL);
if (data.empty())
ThrowRDE("CR2 sRaw Decoder: Model name not found");
string model = data[0]->getEntry(MODEL)->getString();
bool isOldSraw = (model.compare("Canon EOS 40D") == 0);
if (mRaw->subsampling.y == 1 && mRaw->subsampling.x == 2) {
if (isOldSraw)
interpolate_422_old(mRaw->dim.x / 2, mRaw->dim.y , 0, mRaw->dim.y);
else
interpolate_422(mRaw->dim.x / 2, mRaw->dim.y , 0, mRaw->dim.y);
} else {
interpolate_420(mRaw->dim.x / 2, mRaw->dim.y / 2 , 0 , mRaw->dim.y / 2);
}
}
示例6: iPoint2D
RawImage MrwDecoder::decodeRawInternal() {
uint32 imgsize;
mRaw->dim = iPoint2D(raw_width, raw_height);
mRaw->createData();
if (packed)
imgsize = raw_width * raw_height * 3 / 2;
else
imgsize = raw_width * raw_height * 2;
if (!mFile->isValid(data_offset))
ThrowRDE("MRW decoder: Data offset after EOF, file probably truncated");
if (!mFile->isValid(data_offset+imgsize-1))
ThrowRDE("MRW decoder: Image end after EOF, file probably truncated");
ByteStream input(mFile->getData(data_offset), imgsize);
try {
if (packed)
Decode12BitRawBE(input, raw_width, raw_height);
else
Decode12BitRawBEunpacked(input, raw_width, raw_height);
} catch (IOException &e) {
mRaw->setError(e.what());
// Let's ignore it, it may have delivered somewhat useful data.
}
return mRaw;
}
示例7: ThrowRDE
void RawImageDataFloat::calculateBlackAreas() {
float accPixels[4] = {0,0,0,0};
int totalpixels = 0;
for (uint32 i = 0; i < blackAreas.size(); i++) {
BlackArea area = blackAreas[i];
/* Make sure area sizes are multiple of two,
so we have the same amount of pixels for each CFA group */
area.size = area.size - (area.size&1);
/* Process horizontal area */
if (!area.isVertical) {
if ((int)area.offset+(int)area.size > uncropped_dim.y)
ThrowRDE("RawImageData::calculateBlackAreas: Offset + size is larger than height of image");
for (uint32 y = area.offset; y < area.offset+area.size; y++) {
float *pixel = (float*)getDataUncropped(mOffset.x, y);
for (int x = mOffset.x; x < dim.x+mOffset.x; x++) {
accPixels[((y&1)<<1)|(x&1)] += *pixel++;
}
}
totalpixels += area.size * dim.x;
}
/* Process vertical area */
if (area.isVertical) {
if ((int)area.offset+(int)area.size > uncropped_dim.x)
ThrowRDE("RawImageData::calculateBlackAreas: Offset + size is larger than width of image");
for (int y = mOffset.y; y < dim.y+mOffset.y; y++) {
float *pixel = (float*)getDataUncropped(area.offset, y);
for (uint32 x = area.offset; x < area.size+area.offset; x++) {
accPixels[((y&1)<<1)|(x&1)] += *pixel++;
}
}
totalpixels += area.size * dim.y;
}
}
if (!totalpixels) {
for (int i = 0 ; i < 4; i++)
blackLevelSeparate[i] = blackLevel;
return;
}
/* Calculate median value of black areas for each component */
/* Adjust the number of total pixels so it is the same as the median of each histogram */
totalpixels /= 4;
for (int i = 0 ; i < 4; i++) {
blackLevelSeparate[i] = (int)(65535.0f * accPixels[i]/totalpixels);
}
/* If this is not a CFA image, we do not use separate blacklevels, use average */
if (!isCFA) {
int total = 0;
for (int i = 0 ; i < 4; i++)
total+=blackLevelSeparate[i];
for (int i = 0 ; i < 4; i++)
blackLevelSeparate[i] = (total+2)>>2;
}
示例8: ThrowRDE
RawImage CrwDecoder::decodeRawInternal() {
CiffEntry *sensorInfo = mRootIFD->getEntryRecursive(CIFF_SENSORINFO);
if (!sensorInfo || sensorInfo->count < 6 || sensorInfo->type != CIFF_SHORT)
ThrowRDE("CRW: Couldn't find image sensor info");
uint32 width = sensorInfo->getShort(1);
uint32 height = sensorInfo->getShort(2);
CiffEntry *decTable = mRootIFD->getEntryRecursive(CIFF_DECODERTABLE);
if (!decTable || decTable->type != CIFF_LONG)
ThrowRDE("CRW: Couldn't find decoder table");
uint32 dec_table = decTable->getInt();
if (dec_table > 2)
ThrowRDE("CRW: Unknown decoder table %d", dec_table);
mRaw->dim = iPoint2D(width, height);
mRaw->createData();
bool lowbits = hints.find("no_decompressed_lowbits") == hints.end();
decodeRaw(lowbits, dec_table, width, height);
return mRaw;
}
示例9: ThrowRDE
RawImage KdcDecoder::decodeRawInternal() {
int compression = mRootIFD->getEntryRecursive(COMPRESSION)->getInt();
if (7 != compression)
ThrowRDE("KDC Decoder: Unsupported compression %d", compression);
TiffEntry *ex = mRootIFD->getEntryRecursive(PIXELXDIMENSION);
TiffEntry *ey = mRootIFD->getEntryRecursive(PIXELYDIMENSION);
if (NULL == ex || NULL == ey)
ThrowRDE("KDC Decoder: Unable to retrieve image size");
uint32 width = ex->getInt();
uint32 height = ey->getInt();
TiffEntry *offset = mRootIFD->getEntryRecursive(KODAK_KDC_OFFSET);
if (!offset || offset->count < 13)
ThrowRDE("KDC Decoder: Couldn't find the KDC offset");
const uint32 *offsetarray = offset->getIntArray();
uint32 off = offsetarray[4] + offsetarray[12];
mRaw->dim = iPoint2D(width, height);
mRaw->createData();
ByteStream input(mFile->getData(off), mFile->getSize()-off);
Decode12BitRawBE(input, width, height);
return mRaw;
}
示例10: ThrowRDE
void ColorFilterArray::setColorAt(iPoint2D pos, CFAColor c) {
if (pos.x > 1 || pos.x < 0)
ThrowRDE("ColorFilterArray::SetColor: position out of CFA pattern");
if (pos.y > 1 || pos.y < 0)
ThrowRDE("ColorFilterArray::SetColor: position out of CFA pattern");
cfa[pos.x+pos.y*2] = c;
// _RPT2(0, "cfa[%u] = %u\n",pos.x+pos.y*2, c);
}
示例11: get4LE
RawImage MosDecoder::decodeRawInternal() {
vector<TiffIFD*> data;
TiffIFD* raw = NULL;
uint32 off = 0;
uint32 base = 8;
// We get a pointer up to the end of the file as we check offset bounds later
const uchar8 *insideTiff = mFile->getData(base, mFile->getSize()-base);
if (get4LE(insideTiff, 0) == 0x49494949) {
uint32 offset = get4LE(insideTiff, 8);
if (offset+base+4 > mFile->getSize())
ThrowRDE("MOS: PhaseOneC offset out of bounds");
uint32 entries = get4LE(insideTiff, offset);
uint32 pos = 8; // Skip another 4 bytes
uint32 width=0, height=0, strip_offset=0, data_offset=0, wb_offset=0;
while (entries--) {
if (offset+base+pos+16 > mFile->getSize())
ThrowRDE("MOS: PhaseOneC offset out of bounds");
uint32 tag = get4LE(insideTiff, offset+pos);
//uint32 type = get4LE(insideTiff, offset+pos+4);
//uint32 len = get4LE(insideTiff, offset+pos+8);
uint32 data = get4LE(insideTiff, offset+pos+12);
pos += 16;
switch(tag) {
case 0x107: wb_offset = data+base; break;
case 0x108: width = data; break;
case 0x109: height = data; break;
case 0x10f: data_offset = data+base; break;
case 0x21c: strip_offset = data+base; break;
case 0x21d: black_level = data>>2; break;
}
}
if (width <= 0 || height <= 0)
ThrowRDE("MOS: PhaseOneC couldn't find width and height");
if (strip_offset+height*4 > mFile->getSize())
ThrowRDE("MOS: PhaseOneC strip offsets out of bounds");
if (data_offset > mFile->getSize())
ThrowRDE("MOS: PhaseOneC data offset out of bounds");
mRaw->dim = iPoint2D(width, height);
mRaw->createData();
DecodePhaseOneC(data_offset, strip_offset, width, height);
const uchar8 *data = mFile->getData(wb_offset, 12);
for(int i=0; i<3; i++) {
// Use get4LE instead of going straight to float so this is endian clean
uint32 value = get4LE(data, i*4);
mRaw->metadata.wbCoeffs[i] = *((float *) &value);
}
return mRaw;
} else {
示例12: ThrowRDE
void SrwDecoder::checkSupportInternal(CameraMetaData *meta) {
vector<TiffIFD*> data = mRootIFD->getIFDsWithTag(MODEL);
if (data.empty())
ThrowRDE("Srw Support check: Model name found");
if (!data[0]->hasEntry(MAKE))
ThrowRDE("SRW Support: Make name not found");
string make = data[0]->getEntry(MAKE)->getString();
string model = data[0]->getEntry(MODEL)->getString();
this->checkCameraSupported(meta, make, model, "");
}
示例13: atoi
RawImage NakedDecoder::decodeRawInternal() {
uint32 width=0, height=0, filesize=0, bits=0, offset=0;
if(cam->hints.find("full_width") != cam->hints.end()) {
string tmp = cam->hints.find(string("full_width"))->second;
width = (uint32) atoi(tmp.c_str());
} else
ThrowRDE("Naked: couldn't find width");
if(cam->hints.find("full_height") != cam->hints.end()) {
string tmp = cam->hints.find(string("full_height"))->second;
height = (uint32) atoi(tmp.c_str());
} else
ThrowRDE("Naked: couldn't find height");
if(cam->hints.find("filesize") != cam->hints.end()) {
string tmp = cam->hints.find(string("filesize"))->second;
filesize = (uint32) atoi(tmp.c_str());
} else
ThrowRDE("Naked: couldn't find filesize");
if(cam->hints.find("offset") != cam->hints.end()) {
string tmp = cam->hints.find(string("offset"))->second;
offset = (uint32) atoi(tmp.c_str());
}
if(cam->hints.find("bits") != cam->hints.end()) {
string tmp = cam->hints.find(string("bits"))->second;
bits = (uint32) atoi(tmp.c_str());
} else
bits = (filesize-offset)*8/width/height;
BitOrder bo = BitOrder_Jpeg16; // Default
if(cam->hints.find("order") != cam->hints.end()) {
string tmp = cam->hints.find(string("order"))->second;
if (tmp.compare("plain") == 0) {
bo = BitOrder_Plain;
} else if (tmp.compare("jpeg") == 0) {
bo = BitOrder_Jpeg;
} else if (tmp.compare("jpeg16") == 0) {
bo = BitOrder_Jpeg16;
} else if (tmp.compare("jpeg32") == 0) {
bo = BitOrder_Jpeg32;
}
}
mRaw->dim = iPoint2D(width, height);
mRaw->createData();
ByteStream input(mFile->getData(offset), mFile->getSize()-offset);
iPoint2D pos(0, 0);
readUncompressedRaw(input, mRaw->dim, pos, width*bits/8, bits, bo);
return mRaw;
}
示例14: ThrowRDE
void KdcDecoder::decodeMetaDataInternal(CameraMetaData *meta) {
vector<TiffIFD*> data = mRootIFD->getIFDsWithTag(MODEL);
if (data.empty())
ThrowRDE("KDC Decoder: Model name found");
if (!data[0]->hasEntry(MAKE))
ThrowRDE("KDC Decoder: Make name not found");
string make = data[0]->getEntry(MAKE)->getString();
string model = data[0]->getEntry(MODEL)->getString();
setMetaData(meta, make, model, "", 0);
}
示例15: ThrowRDE
void KdcDecoder::decodeMetaDataInternal(CameraMetaData *meta) {
vector<TiffIFD*> data = mRootIFD->getIFDsWithTag(MODEL);
if (data.empty())
ThrowRDE("KDC Decoder: Model name found");
if (!data[0]->hasEntry(MAKE))
ThrowRDE("KDC Decoder: Make name not found");
string make = data[0]->getEntry(MAKE)->getString();
string model = data[0]->getEntry(MODEL)->getString();
setMetaData(meta, make, model, "", 0);
// Try the kodak hidden IFD for WB
if (mRootIFD->hasEntryRecursive(KODAK_IFD2)) {
TiffEntry *ifdoffset = mRootIFD->getEntryRecursive(KODAK_IFD2);
TiffIFD *kodakifd = NULL;
try {
if (mRootIFD->endian == getHostEndianness())
kodakifd = new TiffIFD(mFile, ifdoffset->getInt());
else
kodakifd = new TiffIFDBE(mFile, ifdoffset->getInt());
if (kodakifd && kodakifd->hasEntryRecursive(KODAK_KDC_WB)) {
TiffEntry *wb = kodakifd->getEntryRecursive(KODAK_KDC_WB);
if (wb->count == 3) {
const uint32 *tmp = wb->getIntArray();
mRaw->metadata.wbCoeffs[0] = (float)tmp[0];
mRaw->metadata.wbCoeffs[1] = (float)tmp[1];
mRaw->metadata.wbCoeffs[2] = (float)tmp[2];
}
}
} catch(TiffParserException e) {
mRaw->setError(e.what());
}
if (kodakifd)
delete kodakifd;
}
// Use the normal WB if available
if (mRootIFD->hasEntryRecursive(KODAKWB)) {
TiffEntry *wb = mRootIFD->getEntryRecursive(KODAKWB);
if (wb->count == 734 || wb->count == 1502) {
const uchar8 *tmp = wb->getData();
mRaw->metadata.wbCoeffs[0] = (float)((((ushort16) tmp[148])<<8)|tmp[149])/256.0f;
mRaw->metadata.wbCoeffs[1] = 1.0f;
mRaw->metadata.wbCoeffs[2] = (float)((((ushort16) tmp[150])<<8)|tmp[151])/256.0f;
}
}
}