本文整理汇总了C++中MEMCOPY函数的典型用法代码示例。如果您正苦于以下问题:C++ MEMCOPY函数的具体用法?C++ MEMCOPY怎么用?C++ MEMCOPY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MEMCOPY函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: output_data
output_data (j_decompress_ptr cinfo, JSAMPIMAGE output_buf)
{
j_lossless_d_ptr losslsd = (j_lossless_d_ptr) cinfo->codec;
d_diff_ptr diff = (d_diff_ptr) losslsd->diff_private;
JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
int ci, samp_rows, row;
JSAMPARRAY buffer;
jpeg_component_info *compptr;
/* Force some input to be done if we are getting ahead of the input. */
while (cinfo->input_scan_number < cinfo->output_scan_number ||
(cinfo->input_scan_number == cinfo->output_scan_number &&
cinfo->input_iMCU_row <= cinfo->output_iMCU_row)) {
if ((*cinfo->inputctl->consume_input)(cinfo) == JPEG_SUSPENDED)
return JPEG_SUSPENDED;
}
/* OK, output from the virtual arrays. */
for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
ci++, compptr++) {
/* Align the virtual buffer for this component. */
buffer = (*cinfo->mem->access_virt_sarray)
((j_common_ptr) cinfo, diff->whole_image[ci],
cinfo->output_iMCU_row * compptr->v_samp_factor,
(JDIMENSION) compptr->v_samp_factor, FALSE);
if (cinfo->output_iMCU_row < last_iMCU_row)
samp_rows = compptr->v_samp_factor;
else {
/* NB: can't use last_row_height here; it is input-side-dependent! */
samp_rows = (int) (compptr->height_in_data_units % compptr->v_samp_factor);
if (samp_rows == 0) samp_rows = compptr->v_samp_factor;
}
for (row = 0; row < samp_rows; row++) {
MEMCOPY(output_buf[ci][row], buffer[row],
compptr->width_in_data_units * SIZEOF(JSAMPLE));
}
}
if (++(cinfo->output_iMCU_row) < cinfo->total_iMCU_rows)
return JPEG_ROW_COMPLETED;
return JPEG_SCAN_COMPLETED;
}
开发者ID:Ithamar,项目名称:cosmoe,代码行数:44,代码来源:jddiffct.c
示例2: vecPushBack
int vecPushBack(S_Vector *pVec, void *pElem)
{
static const int blockSize = 512;
IZG_ASSERT(pVec && pElem);
if( pVec->size >= pVec->reserved )
{
char *p = (char *)realloc(pVec->data, (pVec->size + blockSize) * pVec->elemSize);
IZG_CHECK(p, "Cannot allocate enough memory");
pVec->data = p;
pVec->reserved = pVec->size + blockSize;
}
MEMCOPY(pVec->data + pVec->size * pVec->elemSize, pElem, pVec->elemSize);
++pVec->size;
return (pVec->size - 1);
}
开发者ID:martinqo99,项目名称:school-projects,代码行数:19,代码来源:vector.c
示例3: rr_canonize_nsec3param
static void
rr_canonize_nsec3param(zdb_packed_ttlrdata* rr, ptr_vector* v)
{
while(rr != NULL)
{
zdb_canonized_packed_ttlrdata* c_rr;
u32 c_rr_size = sizeof (zdb_canonized_packed_ttlrdata) - 1 + ZDB_PACKEDRECORD_PTR_RDATASIZE(rr);
MALLOC_OR_DIE(zdb_canonized_packed_ttlrdata*, c_rr, c_rr_size, RR_CANONIZE_NOP_TAG);
ZDB_PACKEDRECORD_PTR_RDATASIZE(c_rr) = ZDB_PACKEDRECORD_PTR_RDATASIZE(rr);
c_rr->rdata_canonized_size = htons(ZDB_PACKEDRECORD_PTR_RDATASIZE(rr));
MEMCOPY(&c_rr->rdata_start[0], ZDB_PACKEDRECORD_PTR_RDATAPTR(rr), ZDB_PACKEDRECORD_PTR_RDATASIZE(rr));
c_rr->rdata_start[1] = 0; /* The signed NSEC3PARAM has its flags to 0 */
ptr_vector_append(v, c_rr);
rr = rr->next;
}
}
开发者ID:koodaamo,项目名称:yadifa,代码行数:19,代码来源:rr_canonize.c
示例4: emAfPluginCommsHubFunctionTunnelCreate
// This should be called after CBKE.
bool emAfPluginCommsHubFunctionTunnelCreate(EmberEUI64 remoteDeviceId,
uint8_t remoteEndpoint)
{
uint8_t tunnelIndex;
emberAfDebugPrint("CHF: TunnelCreate ");
emberAfDebugDebugExec(emberAfPrintBigEndianEui64(remoteDeviceId));
emberAfDebugPrintln(" 0x%x", remoteEndpoint);
// We only support one tunnel to a given remote device/endpoint so if we
// already have a tunnel lets work with it.
tunnelIndex = findTunnelByDeviceId(remoteDeviceId);
if (tunnelIndex != EM_AF_PLUGIN_COMMS_HUB_FUNCTION_NULL_TUNNEL_INDEX) {
if (tunnels[tunnelIndex].state == CLOSED_TUNNEL) {
return requestTunnel(tunnelIndex);
}
return true;
}
// Find a slot in the tunnels table for the new tunnel
tunnelIndex = findUnusedTunnel();
if (tunnelIndex != EM_AF_PLUGIN_COMMS_HUB_FUNCTION_NULL_TUNNEL_INDEX) {
MEMCOPY(tunnels[tunnelIndex].remoteDeviceId, remoteDeviceId, EUI64_SIZE);
tunnels[tunnelIndex].remoteNodeId = emberLookupNodeIdByEui64(remoteDeviceId);
tunnels[tunnelIndex].remoteEndpoint = remoteEndpoint;
tunnels[tunnelIndex].type = CLIENT_TUNNEL;
tunnels[tunnelIndex].state = CLOSED_TUNNEL;
tunnels[tunnelIndex].tunnelId = 0xFF;
tunnels[tunnelIndex].timeoutMSec = 0;
return requestTunnel(tunnelIndex);
}
// This is a misconfiguration or a bug in the code calling this API. Either
// the tunnel client plugin limit is set too low for the number of tunnels
// required or the code that is calling this function is in error. Either way,
// we'll print the error and return false indicating that the tunnel was
// not created.
emberAfPluginCommsHubFunctionPrintln("%p%p%p",
"Error: ",
"Tunnel Create failed: ",
"Too many tunnels");
return false;
}
开发者ID:taidalab,项目名称:ZigBeeember570,代码行数:43,代码来源:tunnel-manager.c
示例5: create_context_buffer
create_context_buffer( j_compress_ptr cinfo )
{
my_prep_ptr prep = ( my_prep_ptr ) cinfo->prep;
int rgroup_height = cinfo->max_v_samp_factor;
int ci, i;
jpeg_component_info *compptr;
JSAMPARRAY true_buffer, fake_buffer;
/* Grab enough space for fake row pointers for all the components;
* we need five row groups' worth of pointers for each component.
*/
fake_buffer = ( JSAMPARRAY )
( *cinfo->mem->alloc_small )( ( j_common_ptr ) cinfo, JPOOL_IMAGE,
( cinfo->num_components * 5 * rgroup_height ) *
SIZEOF( JSAMPROW ) );
for( ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
ci++, compptr++ )
{
/* Allocate the actual buffer space (3 row groups) for this component.
* We make the buffer wide enough to allow the downsampler to edge-expand
* horizontally within the buffer, if it so chooses.
*/
true_buffer = ( *cinfo->mem->alloc_sarray )
( ( j_common_ptr ) cinfo, JPOOL_IMAGE,
( JDIMENSION )( ( ( long ) compptr->width_in_blocks *
cinfo->min_DCT_h_scaled_size *
cinfo->max_h_samp_factor ) / compptr->h_samp_factor ),
( JDIMENSION )( 3 * rgroup_height ) );
/* Copy true buffer row pointers into the middle of the fake row array */
MEMCOPY( fake_buffer + rgroup_height, true_buffer,
3 * rgroup_height * SIZEOF( JSAMPROW ) );
/* Fill in the above and below wraparound pointers */
for( i = 0; i < rgroup_height; i++ )
{
fake_buffer[i] = true_buffer[2 * rgroup_height + i];
fake_buffer[4 * rgroup_height + i] = true_buffer[i];
}
prep->color_buf[ci] = fake_buffer + rgroup_height;
fake_buffer += 5 * rgroup_height; /* point to space for next component */
}
}
开发者ID:revelator,项目名称:MHDoom,代码行数:42,代码来源:jcprepct.cpp
示例6: copy_pixel_rows
copy_pixel_rows(j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
JDIMENSION rows_supplied)
{
ppm_dest_ptr dest = (ppm_dest_ptr)dinfo;
register char *bufferptr;
register JSAMPROW ptr;
#if BITS_IN_JSAMPLE != 8 || (!defined(HAVE_UNSIGNED_CHAR) && !defined(__CHAR_UNSIGNED__))
register JDIMENSION col;
#endif
ptr = dest->pub.buffer[0];
bufferptr = dest->iobuffer;
#if BITS_IN_JSAMPLE == 8 && (defined(HAVE_UNSIGNED_CHAR) || defined(__CHAR_UNSIGNED__))
MEMCOPY(bufferptr, ptr, dest->samples_per_row);
#else
for (col = dest->samples_per_row; col > 0; col--) {
PUTPPMSAMPLE(bufferptr, GETJSAMPLE(*ptr++));
}
#endif
(void)JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
}
开发者ID:GerbilSoft,项目名称:rom-properties,代码行数:21,代码来源:wrppm.c
示例7: rr_canonize_nop
static void
rr_canonize_nop(zdb_packed_ttlrdata* rr, ptr_vector* v)
{
while(rr != NULL)
{
zdb_canonized_packed_ttlrdata* c_rr;
u32 c_rr_size = sizeof (zdb_canonized_packed_ttlrdata) - 1 + ZDB_PACKEDRECORD_PTR_RDATASIZE(rr);
MALLOC_OR_DIE(zdb_canonized_packed_ttlrdata*, c_rr, c_rr_size, RR_CANONIZE_NOP_TAG);
ZDB_PACKEDRECORD_PTR_RDATASIZE(c_rr) = ZDB_PACKEDRECORD_PTR_RDATASIZE(rr);
c_rr->rdata_canonized_size = htons(ZDB_PACKEDRECORD_PTR_RDATASIZE(rr));
/** @todo CHECK: If we don't lo-case anymore maybe I could grab some
* more cycles here. Not for the A-records on a 64bits arch,
* but for any case where the rdata is (much) bigger than 8 bytes
*/
MEMCOPY(&c_rr->rdata_start[0], ZDB_PACKEDRECORD_PTR_RDATAPTR(rr), ZDB_PACKEDRECORD_PTR_RDATASIZE(rr));
ptr_vector_append(v, c_rr);
rr = rr->next;
}
}
开发者ID:koodaamo,项目名称:yadifa,代码行数:22,代码来源:rr_canonize.c
示例8: LUSOL_ftran
int LUSOL_ftran(LUSOLrec *LUSOL, REAL b[], int NZidx[], MYBOOL prepareupdate)
{
int inform;
REAL *vector;
if(prepareupdate)
vector = LUSOL->vLU6L;
else
vector = LUSOL->w;
/* Copy RHS vector, but make adjustment for offset since this
can create a memory error when the calling program uses
a 0-base vector offset back to comply with LUSOL. */
MEMCOPY(vector+1, b+1, LUSOL->n);
if (vector != NULL)
vector[0] = 0;
LU6SOL(LUSOL, LUSOL_SOLVE_Aw_v, vector, b, NZidx, &inform);
LUSOL->luparm[LUSOL_IP_FTRANCOUNT]++;
return(inform);
}
开发者ID:SimonRit,项目名称:RTK,代码行数:22,代码来源:lusol.c
示例9: ptr_vector_resize
void
ptr_vector_resize(ptr_vector*v, s32 newsize)
{
void** data;
zassert(newsize >= v->offset + 1);
/* Only the data up to v->offset (included) is relevant */
MALLOC_OR_DIE(void**, data, newsize * sizeof (void*), PTR_VECTOR_TAG);
MEMCOPY(data, v->data, (v->offset + 1) * sizeof (void*));
#ifndef NDEBUG
if(v->data != NULL)
{
memset(v->data, 0xff, v->size * sizeof (void*));
}
#endif
free(v->data);
v->data = data;
v->size = newsize;
}
开发者ID:koodaamo,项目名称:yadifa,代码行数:22,代码来源:ptr_vector.c
示例10: vorbis_read
size_t vorbis_read(void *ptr, size_t byteSize, size_t sizeToRead, void *datasource)
{
size_t spaceToEOF;
size_t actualSizeToRead;
sOggFile *vorbisData;
vorbisData = (sOggFile *)datasource;
spaceToEOF = static_cast<size_t>(vorbisData->dataSize - vorbisData->dataRead);
if ((sizeToRead*byteSize) < spaceToEOF)
actualSizeToRead = (sizeToRead*byteSize);
else
actualSizeToRead = spaceToEOF;
if (actualSizeToRead)
{
MEMCOPY(ptr, (char*)vorbisData->dataPtr + vorbisData->dataRead, actualSizeToRead);
vorbisData->dataRead += (actualSizeToRead);
}
return actualSizeToRead;
}
开发者ID:fungos,项目名称:seed1,代码行数:22,代码来源:vorbis_util.cpp
示例11: latch_quant_tables
latch_quant_tables(j_decompress_ptr cinfo)
{
int ci, qtblno;
jpeg_component_info* compptr;
JQUANT_TBL* qtbl;
for (ci = 0; ci < cinfo->comps_in_scan; ci++)
{
compptr = cinfo->cur_comp_info[ci];
/* No work if we already saved Q-table for this component */
if (compptr->quant_table != nullptr) continue;
/* Make sure specified quantization table is present */
qtblno = compptr->quant_tbl_no;
if (qtblno < 0 || qtblno >= NUM_QUANT_TBLS ||
cinfo->quant_tbl_ptrs[qtblno] == nullptr)
ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
/* OK, save away the quantization table */
qtbl = (JQUANT_TBL*)(*cinfo->mem->alloc_small)(
(j_common_ptr)cinfo, JPOOL_IMAGE, SIZEOF(JQUANT_TBL));
MEMCOPY(qtbl, cinfo->quant_tbl_ptrs[qtblno], SIZEOF(JQUANT_TBL));
compptr->quant_table = qtbl;
}
}
开发者ID:Triocrossing,项目名称:mrpt,代码行数:23,代码来源:jdinput.cpp
示例12: emberSendUdp
EmberStatus emberSendUdp(uint8_t options,
const uint8_t *destination,
uint8_t hopLimit,
uint16_t sourcePort,
uint16_t destinationPort,
uint8_t *payload,
uint16_t payloadLength)
{
uint8_t source[16];
if (! emStoreIpSourceAddress(source, destination)) {
return EMBER_BAD_ARGUMENT;
}
HostListener *listener = emberFindListener(sourcePort, source);
if (listener != NULL) {
struct sockaddr_in6 outSock = {0};
outSock.sin6_family = AF_INET6;
outSock.sin6_port = htons(destinationPort);
MEMCOPY(outSock.sin6_addr.s6_addr, destination, 16);
int interfaceIndex = if_nametoindex(emUnixInterface);
outSock.sin6_scope_id = interfaceIndex;
nativeWrite(listener->socket,
payload,
payloadLength,
(struct sockaddr *)&outSock,
sizeof(outSock));
emberCounterHandler(EMBER_COUNTER_UDP_OUT, 1);
return EMBER_SUCCESS;
} else {
fprintf(stderr, "No listener on sourcePort:%d\n",
sourcePort);
return EMBER_INVALID_CALL;
}
}
开发者ID:umangparekh,项目名称:thread_apps,代码行数:36,代码来源:unix-udp-wrapper.c
示例13: emberAfPluginTunnelingServerTunnelOpenedCallback
/** @brief Tunnel Opened
*
* This function is called by the Tunneling server plugin whenever a tunnel is
* opened. Clients may open tunnels by sending a Request Tunnel command.
*
* @param tunnelId The identifier of the tunnel that has been opened. Ver.:
* always
* @param protocolId The identifier of the metering communication protocol for
* the tunnel. Ver.: always
* @param manufacturerCode The manufacturer code for manufacturer-defined
* protocols or 0xFFFF in unused. Ver.: always
* @param flowControlSupport true is flow control support is requested or false
* if it is not. Ver.: always
* @param maximumIncomingTransferSize The maximum incoming transfer size of the
* client. Ver.: always
*/
void emberAfPluginTunnelingServerTunnelOpenedCallback(uint16_t tunnelId,
uint8_t protocolId,
uint16_t manufacturerCode,
bool flowControlSupport,
uint16_t maximumIncomingTransferSize)
{
EmberEUI64 remoteDeviceId;
EmberNodeId remoteNodeId;
uint8_t tunnelIndex;
emberAfDebugPrintln("CHF: ServerTunnelOpened:0x%x,0x%2x", tunnelId, maximumIncomingTransferSize);
// Since the tunneling cluster server code does not pass the EUI64 or the
// node ID of the remote end of the tunnel so we need to look them up.
// Luckily this callback is called in the context of the RequestTunnel
// command processing and we look into the command for this info.
remoteNodeId = emberAfCurrentCommand()->source;
emberLookupEui64ByNodeId(emberAfCurrentCommand()->source, remoteDeviceId);
// We only support one tunnel to a given remote device/endpoint so if we
// already have a tunnel lets work with it.
tunnelIndex = findTunnelByDeviceId(remoteDeviceId);
if (tunnelIndex == EM_AF_PLUGIN_COMMS_HUB_FUNCTION_NULL_TUNNEL_INDEX) {
// Find a slot in the tunnels table for the new tunnel
tunnelIndex = findUnusedTunnel();
}
if (tunnelIndex != EM_AF_PLUGIN_COMMS_HUB_FUNCTION_NULL_TUNNEL_INDEX) {
MEMCOPY(tunnels[tunnelIndex].remoteDeviceId, remoteDeviceId, EUI64_SIZE);
tunnels[tunnelIndex].remoteNodeId = remoteNodeId;
tunnels[tunnelIndex].remoteEndpoint = emberAfCurrentCommand()->apsFrame->sourceEndpoint;
tunnels[tunnelIndex].type = SERVER_TUNNEL;
tunnels[tunnelIndex].state = ACTIVE_TUNNEL;
tunnels[tunnelIndex].tunnelId = tunnelId;
tunnels[tunnelIndex].timeoutMSec = 0;
// Per GBCS v0.8 section 10.2.2, Devices supporting the Tunneling Cluster
// as a Server shall have a MaximumIncomingTransferSize set to 1500 octets,
// in line with the ZSE default. All Devices supporting the Tunneling
// Cluster shall use this value in any RequestTunnelResponse command and
// any RequestTunnel command.
//
// So rather than bring down the tunnel in the case when the maximumIncomingTransferSize
// is less than 1500 we'll just log a warning message.
if (maximumIncomingTransferSize < 1500) {
emberAfPluginCommsHubFunctionPrintln("Warning: tunnel opened but MaximumIncomingTransferSize of client is %d but should be 1500",
maximumIncomingTransferSize);
}
return;
}
// This is a misconfiguration or a bug in the code calling this API. Either
// the tunnel client plugin limit is set too low for the number of tunnels
// required or the code that is calling this function is in error. Either way,
// we'll print the error and return false indicating that the tunnel was
// not created.
emberAfPluginCommsHubFunctionPrintln("%p%p%p",
"Error: ",
"Tunnel Opened failed: ",
"Too many tunnels");
}
开发者ID:taidalab,项目名称:ZigBeeember570,代码行数:77,代码来源:tunnel-manager.c
示例14: emberUdpListen
EmberStatus emberUdpListen(uint16_t port, const uint8_t *localAddress)
{
if (emIsUnspecifiedAddress(localAddress)) {
return EMBER_ERR_FATAL;
}
if (emberFindListener(port, localAddress) != NULL) {
return EMBER_SUCCESS;
}
// The localAddress variable is used to glean the source address
// associated with a particular listener. For multicast listeners,
// we use the mesh local address as source.
bool isMulticast = emIsMulticastAddress(localAddress);
EmberIpv6Address meshLocalAddress;
emberGetLocalIpAddress(0, &meshLocalAddress);
HostListener *listener = emberAddListener(port,
(isMulticast
? meshLocalAddress.bytes
: localAddress),
SOCK_DGRAM, 0); // UDP
if (listener == NULL) {
return EMBER_TABLE_FULL;
}
if (listener->socket == INVALID_SOCKET) {
return EMBER_ERR_FATAL;
}
int interfaceIndex = if_nametoindex(emUnixInterface);
struct ipv6_mreq mreq6 = {0};
MEMCOPY(&mreq6.ipv6mr_multiaddr.s6_addr, localAddress, 16);
mreq6.ipv6mr_interface = interfaceIndex;
int mcastTTL = 10;
int loopBack = 1;
if (setsockopt(listener->socket,
IPPROTO_IPV6,
IPV6_MULTICAST_IF,
&interfaceIndex,
sizeof(interfaceIndex))
< 0) {
perror("setsockopt:: IPV6_MULTICAST_IF:: ");
return EMBER_ERR_FATAL;
}
if (setsockopt(listener->socket,
IPPROTO_IPV6,
IPV6_MULTICAST_LOOP,
&loopBack,
sizeof(loopBack))
< 0) {
perror("setsockopt:: IPV6_MULTICAST_LOOP:: ");
return EMBER_ERR_FATAL;
}
if (setsockopt(listener->socket,
IPPROTO_IPV6,
IPV6_MULTICAST_HOPS,
&mcastTTL,
sizeof(mcastTTL))
< 0) {
perror("setsockopt:: IPV6_MULTICAST_HOPS:: ");
return EMBER_ERR_FATAL;
}
if (isMulticast) {
if (setsockopt(listener->socket,
IPPROTO_IPV6,
IPV6_JOIN_GROUP,
&mreq6,
sizeof(mreq6))
< 0) {
perror("setsockopt:: IPV6_JOIN_GROUP:: ");
return EMBER_ERR_FATAL;
}
}
return EMBER_SUCCESS;
}
开发者ID:umangparekh,项目名称:thread_apps,代码行数:81,代码来源:unix-udp-wrapper.c
示例15: read_scan_script
read_scan_script (j_compress_ptr cinfo, char * filename)
/* Read a scan script from the specified text file.
* Each entry in the file defines one scan to be emitted.
* Entries are separated by semicolons ';'.
* An entry contains one to four component indexes,
* optionally followed by a colon ':' and four progressive-JPEG parameters.
* The component indexes denote which component(s) are to be transmitted
* in the current scan. The first component has index 0.
* Sequential JPEG is used if the progressive-JPEG parameters are omitted.
* The file is free format text: any whitespace may appear between numbers
* and the ':' and ';' punctuation marks. Also, other punctuation (such
* as commas or dashes) can be placed between numbers if desired.
* Comments preceded by '#' may be included in the file.
* Note: we do very little validity checking here;
* jcmaster.c will validate the script parameters.
*/
{
FILE * fp;
int scanno, ncomps, termchar;
long val;
jpeg_scan_info * scanptr;
#define MAX_SCANS 100 /* quite arbitrary limit */
jpeg_scan_info scans[MAX_SCANS];
if ((fp = fopen(filename, "r")) == NULL) {
fprintf(stderr, "Can't open scan definition file %s\n", filename);
return FALSE;
}
scanptr = scans;
scanno = 0;
while (read_scan_integer(fp, &val, &termchar)) {
if (scanno >= MAX_SCANS) {
fprintf(stderr, "Too many scans defined in file %s\n", filename);
fclose(fp);
return FALSE;
}
scanptr->component_index[0] = (int) val;
ncomps = 1;
while (termchar == ' ') {
if (ncomps >= MAX_COMPS_IN_SCAN) {
fprintf(stderr, "Too many components in one scan in file %s\n",
filename);
fclose(fp);
return FALSE;
}
if (! read_scan_integer(fp, &val, &termchar))
goto bogus;
scanptr->component_index[ncomps] = (int) val;
ncomps++;
}
scanptr->comps_in_scan = ncomps;
if (termchar == ':') {
if (! read_scan_integer(fp, &val, &termchar) || termchar != ' ')
goto bogus;
scanptr->Ss = (int) val;
if (! read_scan_integer(fp, &val, &termchar) || termchar != ' ')
goto bogus;
scanptr->Se = (int) val;
if (! read_scan_integer(fp, &val, &termchar) || termchar != ' ')
goto bogus;
scanptr->Ah = (int) val;
if (! read_scan_integer(fp, &val, &termchar))
goto bogus;
scanptr->Al = (int) val;
} else {
/* set non-progressive parameters */
scanptr->Ss = 0;
scanptr->Se = DCTSIZE2-1;
scanptr->Ah = 0;
scanptr->Al = 0;
}
if (termchar != ';' && termchar != EOF) {
bogus:
fprintf(stderr, "Invalid scan entry format in file %s\n", filename);
fclose(fp);
return FALSE;
}
scanptr++, scanno++;
}
if (termchar != EOF) {
fprintf(stderr, "Non-numeric data in file %s\n", filename);
fclose(fp);
return FALSE;
}
if (scanno > 0) {
/* Stash completed scan list in cinfo structure.
* NOTE: for cjpeg's use, JPOOL_IMAGE is the right lifetime for this data,
* but if you want to compress multiple images you'd want JPOOL_PERMANENT.
*/
scanptr = (jpeg_scan_info *)
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
scanno * SIZEOF(jpeg_scan_info));
MEMCOPY(scanptr, scans, scanno * SIZEOF(jpeg_scan_info));
cinfo->scan_info = scanptr;
cinfo->num_scans = scanno;
}
//.........这里部分代码省略.........
开发者ID:vinnie38170,项目名称:klImageCore,代码行数:101,代码来源:rdswitch.c
示例16: jpeg_copy_critical_parameters
jpeg_copy_critical_parameters (j_decompress_ptr srcinfo,
j_compress_ptr dstinfo)
{
JQUANT_TBL ** qtblptr;
jpeg_component_info *incomp, *outcomp;
JQUANT_TBL *c_quant, *slot_quant;
int tblno, ci, coefi;
/* Safety check to ensure start_compress not called yet. */
if (dstinfo->global_state != CSTATE_START)
ERREXIT1(dstinfo, JERR_BAD_STATE, dstinfo->global_state);
/* Copy fundamental image dimensions */
dstinfo->image_width = srcinfo->image_width;
dstinfo->image_height = srcinfo->image_height;
dstinfo->input_components = srcinfo->num_components;
dstinfo->in_color_space = srcinfo->jpeg_color_space;
/* Initialize all parameters to default values */
jpeg_set_defaults(dstinfo);
/* jpeg_set_defaults may choose wrong colorspace, eg YCbCr if input is RGB.
* Fix it to get the right header markers for the image colorspace.
*/
jpeg_set_colorspace(dstinfo, srcinfo->jpeg_color_space);
dstinfo->data_precision = srcinfo->data_precision;
dstinfo->CCIR601_sampling = srcinfo->CCIR601_sampling;
/* Copy the source's quantization tables. */
for (tblno = 0; tblno < NUM_QUANT_TBLS; tblno++) {
if (srcinfo->quant_tbl_ptrs[tblno] != NULL) {
qtblptr = & dstinfo->quant_tbl_ptrs[tblno];
if (*qtblptr == NULL)
*qtblptr = jpeg_alloc_quant_table((j_common_ptr) dstinfo);
MEMCOPY((*qtblptr)->quantval,
srcinfo->quant_tbl_ptrs[tblno]->quantval,
SIZEOF((*qtblptr)->quantval));
(*qtblptr)->sent_table = FALSE;
}
}
/* Copy the source's per-component info.
* Note we assume jpeg_set_defaults has allocated the dest comp_info array.
*/
dstinfo->num_components = srcinfo->num_components;
if (dstinfo->num_components < 1 || dstinfo->num_components > MAX_COMPONENTS)
ERREXIT2(dstinfo, JERR_COMPONENT_COUNT, dstinfo->num_components,
MAX_COMPONENTS);
for (ci = 0, incomp = srcinfo->comp_info, outcomp = dstinfo->comp_info;
ci < dstinfo->num_components; ci++, incomp++, outcomp++) {
outcomp->component_id = incomp->component_id;
outcomp->h_samp_factor = incomp->h_samp_factor;
outcomp->v_samp_factor = incomp->v_samp_factor;
outcomp->quant_tbl_no = incomp->quant_tbl_no;
/* Make sure saved quantization table for component matches the qtable
* slot. If not, the input file re-used this qtable slot.
* IJG encoder currently cannot duplicate this.
*/
tblno = outcomp->quant_tbl_no;
if (tblno < 0 || tblno >= NUM_QUANT_TBLS ||
srcinfo->quant_tbl_ptrs[tblno] == NULL)
ERREXIT1(dstinfo, JERR_NO_QUANT_TABLE, tblno);
slot_quant = srcinfo->quant_tbl_ptrs[tblno];
c_quant = incomp->quant_table;
if (c_quant != NULL) {
for (coefi = 0; coefi < DCTSIZE2; coefi++) {
if (c_quant->quantval[coefi] != slot_quant->quantval[coefi])
ERREXIT1(dstinfo, JERR_MISMATCHED_QUANT_TABLE, tblno);
}
}
/* Note: we do not copy the source's Huffman table assignments;
* instead we rely on jpeg_set_colorspace to have made a suitable choice.
*/
}
/* Also copy JFIF version and resolution information, if available.
* Strictly speaking this isn't "critical" info, but it's nearly
* always appropriate to copy it if available. In particular,
* if the application chooses to copy JFIF 1.02 extension markers from
* the source file, we need to copy the version to make sure we don't
* emit a file that has 1.02 extensions but a claimed version of 1.01.
* We will *not*, however, copy version info from mislabeled "2.01" files.
*/
if (srcinfo->saw_JFIF_marker) {
if (srcinfo->JFIF_major_version == 1) {
dstinfo->JFIF_major_version = srcinfo->JFIF_major_version;
dstinfo->JFIF_minor_version = srcinfo->JFIF_minor_version;
}
dstinfo->density_unit = srcinfo->density_unit;
dstinfo->X_density = srcinfo->X_density;
dstinfo->Y_density = srcinfo->Y_density;
}
}
开发者ID:svn2github,项目名称:htmldoc,代码行数:87,代码来源:jctrans.c
示例17: jpeg_copy_critical_parameters
jpeg_copy_critical_parameters (j_decompress_ptr srcinfo,
j_compress_ptr dstinfo)
{
JQUANT_TBL ** qtblptr;
jpeg_component_info *incomp, *outcomp;
JQUANT_TBL *c_quant, *slot_quant;
int tblno, ci, coefi;
/* Safety check to ensure start_compress not called yet. */
if (dstinfo->global_state != CSTATE_START)
ERREXIT1(dstinfo, JERR_BAD_STATE, dstinfo->global_state);
/* Copy fundamental image dimensions */
dstinfo->image_width = srcinfo->image_width;
dstinfo->image_height = srcinfo->image_height;
dstinfo->input_components = srcinfo->num_components;
dstinfo->in_color_space = srcinfo->jpeg_color_space;
/* Initialize all parameters to default values */
jpeg_set_defaults(dstinfo);
/* jpeg_set_defaults may choose wrong colorspace, eg YCbCr if input is RGB.
* Fix it to get the right header markers for the image colorspace.
*/
jpeg_set_colorspace(dstinfo, srcinfo->jpeg_color_space);
dstinfo->data_precision = srcinfo->data_precision;
dstinfo->CCIR601_sampling = srcinfo->CCIR601_sampling;
/* Copy the source's quantization tables. */
for (tblno = 0; tblno < NUM_QUANT_TBLS; tblno++) {
if (srcinfo->quant_tbl_ptrs[tblno] != NULL) {
qtblptr = & dstinfo->quant_tbl_ptrs[tblno];
if (*qtblptr == NULL)
*qtblptr = jpeg_alloc_quant_table((j_common_ptr) dstinfo);
MEMCOPY((*qtblptr)->quantval,
srcinfo->quant_tbl_ptrs[tblno]->quantval,
SIZEOF((*qtblptr)->quantval));
(*qtblptr)->sent_table = FALSE;
}
}
/* Copy the source's per-component info.
* Note we assume jpeg_set_defaults has allocated the dest comp_info array.
*/
dstinfo->num_components = srcinfo->num_components;
if (dstinfo->num_components < 1 || dstinfo->num_components > MAX_COMPONENTS)
ERREXIT2(dstinfo, JERR_COMPONENT_COUNT, dstinfo->num_components,
MAX_COMPONENTS);
for (ci = 0, incomp = srcinfo->comp_info, outcomp = dstinfo->comp_info;
ci < dstinfo->num_components; ci++, incomp++, outcomp++) {
outcomp->component_id = incomp->component_id;
outcomp->h_samp_factor = incomp->h_samp_factor;
outcomp->v_samp_factor = incomp->v_samp_factor;
outcomp->quant_tbl_no = incomp->quant_tbl_no;
/* Make sure saved quantization table for component matches the qtable
* slot. If not, the input file re-used this qtable slot.
* IJG encoder currently cannot duplicate this.
*/
tblno = outcomp->quant_tbl_no;
if (tblno < 0 || tblno >= NUM_QUANT_TBLS ||
srcinfo->quant_tbl_ptrs[tblno] == NULL)
ERREXIT1(dstinfo, JERR_NO_QUANT_TABLE, tblno);
slot_quant = srcinfo->quant_tbl_ptrs[tblno];
c_quant = incomp->quant_table;
if (c_quant != NULL) {
for (coefi = 0; coefi < DCTSIZE2; coefi++) {
if (c_quant->quantval[coefi] != slot_quant->quantval[coefi])
ERREXIT1(dstinfo, JERR_MISMATCHED_QUANT_TABLE, tblno);
}
}
/* Note: we do not copy the source's Huffman table assignments;
* instead we rely on jpeg_set_colorspace to have made a suitable choice.
*/
}
}
开发者ID:cjus,项目名称:s34mme,代码行数:70,代码来源:Jctrans.c
示例18: getMDO
int __WINAPI getMDO(lprec *lp, MYBOOL *usedpos, int *colorder, int *size, MYBOOL symmetric)
{
int error = FALSE;
int nrows = lp->rows+1, ncols = colorder[0];
int i, j, kk, n;
int *col_end, *row_map = NULL;
int Bnz, Blen, *Brows = NULL;
int stats[COLAMD_STATS];
double knobs[COLAMD_KNOBS];
/* Tally the non-zero counts of the unused columns/rows of the
basis matrix and store corresponding "net" starting positions */
allocINT(lp, &col_end, ncols+1, FALSE);
n = prepareMDO(lp, usedpos, colorder, col_end, NULL);
Bnz = col_end[ncols];
/* Check that we have unused basic columns, otherwise skip analysis */
if(ncols == 0 || Bnz == 0)
goto Transfer;
/* Get net number of rows and fill mapper */
allocINT(lp, &row_map, nrows, FALSE);
nrows = 0;
for(i = 0; i <= lp->rows; i++) {
row_map[i] = i-nrows;
/* Increment eliminated row counter if necessary */
if(!includeMDO(usedpos, i))
nrows++;
}
nrows = lp->rows+1 - nrows;
/* Store row indeces of non-zero values in the basic columns */
Blen = colamd_recommended(Bnz, nrows, ncols);
allocINT(lp, &Brows, Blen, FALSE);
prepareMDO(lp, usedpos, colorder, Brows, row_map);
#ifdef Paranoia
verifyMDO(lp, col_end, Brows, nrows, ncols);
#endif
/* Compute the MDO */
#if 1
colamd_set_defaults(knobs);
knobs [COLAMD_DENSE_ROW] = 0.2+0.2 ; /* default changed for UMFPACK */
knobs [COLAMD_DENSE_COL] = knobs [COLAMD_DENSE_ROW];
if(symmetric && (nrows == ncols)) {
MEMCOPY(colorder, Brows, ncols + 1);
error = !symamd(nrows, colorder, col_end, Brows, knobs, stats, mdo_calloc, mdo_free);
}
else
error = !colamd(nrows, ncols, Blen, Brows, col_end, knobs, stats);
#else
if(symmetric && (nrows == ncols)) {
MEMCOPY(colorder, Brows, ncols + 1);
error = !symamd(nrows, colorder, col_end, Brows, knobs, stats, mdo_calloc, mdo_free);
}
else
error = !colamd(nrows, ncols, Blen, Brows, col_end, (double *) NULL, stats);
#endif
/* Transfer the estimated optimal ordering, adjusting for index offsets */
Transfer:
if(error)
error = stats[COLAMD_STATUS];
else {
MEMCOPY(Brows, colorder, ncols + 1);
for(j = 0; j < ncols; j++) {
kk = col_end[j];
n = Brows[kk+1];
colorder[j+1] = n;
}
}
/* Free temporary vectors */
FREE(col_end);
if(row_map != NULL)
FREE(row_map);
if(Brows != NULL)
FREE(Brows);
if(size != NULL)
*size = ncols;
return( error );
}
开发者ID:JensAdamczak,项目名称:lpSolveAPI,代码行数:83,代码来源:lp_MDO.c
示例19: setEntry
static EmberStatus setEntry(uint8_t index,
const EmberAfRf4ceMsoIrRfDatabaseEntry *entry)
{
// When a new entry comes in, we always remove the old entry, even though the
// new entry might not fit. The rationale is that the old entry is being
// replaced because it is no longer valid for the peripheral devices in the
// system. Reverting to a default entry seems better than keeping the old,
// invalid entry.
uint32_t reclaimableBytes = calculateHeapUsage(&database[index]);
if (reclaimableBytes != 0) {
uint8_t *head;
uint8_t i;
// If the space we think we are using is ever less than what we think we
// can reclaim, then something has gone very wrong.
assert(reclaimableBytes <= USED_HEAP_SPACE());
// The RF payloads and the IR code are all stored contiguously in the heap,
// although some of them may be empty. We just need to find whichever one
// is first. If we expect to have one but can't find it or we do find it
// but its not actually within the heap area, then something has gone very
// wrong.
head = findHead(&database[index]);
assert(head != NULL);
assert(heap <= head);
assert(head + reclaimableBytes <= tail);
// Rewind the tail pointer and all the RF payload and IR code pointers for
// entries that follow the old one. This makes them point to where they
// should after the heap is adjusted. This means the pointers are NOT
// valid until the heap is adjusted.
tail -= reclaimableBytes;
for (i = 0; i < COUNTOF(database); i++) {
if (head < database[i].rfPressedDescriptor.payload) {
database[i].rfPressedDescriptor.payload -= reclaimableBytes;
}
if (head < database[i].rfRepeatedDescriptor.payload) {
database[i].rfRepeatedDescriptor.payload -= reclaimableBytes;
}
if (head < database[i].rfReleasedDescriptor.payload) {
database[i].rfReleasedDescriptor.payload -= reclaimableBytes;
}
if (head < database[i].irDescriptor.irCode) {
database[i].irDescriptor.irCode -= reclaimableBytes;
}
}
// Move the stuff after the old entry so it immediately follows the stuff
// preceding the old entry. The old entry is now gone and the tail, RF
// payload, and IR pointers are all valid again.
MEMMOVE(head, head + reclaimableBytes, tail - head);
// Wipe the stuff following the new tail.
MEMSET(tail, 0, reclaimableBytes);
}
// The free space is the unused space and includes what we reclaimed from the
// old entry. If we don't have enough room, we drop the new entry and leave
// a default in its place.
if (FREE_HEAP_SPACE() < calculateHeapUsage(entry)) {
SET_DEFAULT(&database[index]);
return EMBER_TABLE_FULL;
}
// The basic structure of the new entry is copied as is to the database. The
// variable-sized portion of each descriptor is copied into the heap and then
// the pointer to that data from the database is adjusted to point into the
// heap.
MEMCOPY(&database[index], entry, sizeof(EmberAfRf4ceMsoIrRfDatabaseEntry));
database[index].rfPressedDescriptor.payload
= copyRfPayload(emberAfRf4ceMsoIrRfDatabaseEntryHasRfPressedDescriptor(entry),
&entry->rfPressedDescriptor);
database[index].rfRepeatedDescriptor.payload
= copyRfPayload(emberAfRf4ceMsoIrRfDatabaseEntryHasRfRepeatedDescriptor(entry),
&entry->rfRepeatedDescriptor);
database[index].rfReleasedDescriptor.payload
= copyRfPayload(emberAfRf4ceMsoIrRfDatabaseEntryHasRfReleasedDescriptor(entry),
&entry->rfReleasedDescriptor);
database[index].irDescriptor.irCode
= copyIrCode(emberAfRf4ceMsoIrRfDatabaseEntryHasIrDescriptor(entry),
&entry->irDescriptor);
return EMBER_SUCCESS;
}
开发者ID:taidalab,项目名称:ZigBeeember570,代码行数:84,代码来源:rf4ce-mso-ir-rf-database-originator.c
示例20: MEMCOPY
CED2KFriendLink::CED2KFriendLink(LPCTSTR userName, uchar userHash[])
{
m_sUserName = userName;
MEMCOPY(m_hash, userHash, 16*sizeof(uchar));
}
开发者ID:BackupTheBerlios,项目名称:resurrection,代码行数:5,代码来源:ED2KLink.cpp
注:本文中的MEMCOPY函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论