/* * Decompose CWallet transaction to model transaction records. */ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx) { QList<TransactionRecord> parts; int64 nTime = wtx.GetTxTime(); int64 nCredit = wtx.GetCredit(true); int64 nDebit = wtx.GetDebit(); int64 nNet = nCredit - nDebit; uint256 hash = wtx.GetHash(); std::map<std::string, std::string> mapValue = wtx.mapValue; if (showTransaction(wtx)) { if (wtx.IsCoinStake()) // alohacoin: coinstake transaction { parts.append(TransactionRecord(hash, nTime, TransactionRecord::StakeMint, "", -nDebit, wtx.GetValueOut())); } else if (nNet > 0 || wtx.IsCoinBase()) { // // Credit // BOOST_FOREACH(const CTxOut& txout, wtx.vout) { if(wallet->IsMine(txout)) { TransactionRecord sub(hash, nTime); CBitcoinAddress address; sub.idx = parts.size(); // sequence number sub.credit = txout.nValue; if (wtx.IsCoinBase()) { // Generated sub.type = TransactionRecord::Generated; if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address)) { sub.address = address.ToString(); } } else if (ExtractAddress(txout.scriptPubKey, address) && wallet->HaveKey(address)) { // Received by Bitcoin Address sub.type = TransactionRecord::RecvWithAddress; sub.address = address.ToString(); } else { // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction sub.type = TransactionRecord::RecvFromOther; sub.address = mapValue["from"]; } parts.append(sub); } } } else {
static int setup_buffers( PaAlsaStream *stream, int frames_avail ) { int i; int capture_frames_avail = INT_MAX; int playback_frames_avail = INT_MAX; int common_frames_avail; if( stream->pcm_capture ) { const snd_pcm_channel_area_t *capture_areas; const snd_pcm_channel_area_t *area; snd_pcm_uframes_t frames = frames_avail; /* I do not understand this code fragment yet, it is copied out of the * alsa-devel archives... */ snd_pcm_mmap_begin( stream->pcm_capture, &capture_areas, &stream->capture_offset, &frames); if( stream->capture_interleaved ) { void *interleaved_capture_buffer; area = &capture_areas[0]; interleaved_capture_buffer = ExtractAddress( area, stream->capture_offset ); PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, 0, /* starting at channel 0 */ interleaved_capture_buffer, 0 /* default numInputChannels */ ); } else { /* noninterleaved */ for( i = 0; i < stream->capture_channels; i++ ) { void *noninterleaved_capture_buffer; area = &capture_areas[i]; noninterleaved_capture_buffer = ExtractAddress( area, stream->capture_offset ); PaUtil_SetNonInterleavedInputChannel( &stream->bufferProcessor, i, noninterleaved_capture_buffer); } } capture_frames_avail = frames; } if( stream->pcm_playback ) { const snd_pcm_channel_area_t *playback_areas; const snd_pcm_channel_area_t *area; snd_pcm_uframes_t frames = frames_avail; snd_pcm_mmap_begin( stream->pcm_playback, &playback_areas, &stream->playback_offset, &frames); if( stream->playback_interleaved ) { void *interleaved_playback_buffer; area = &playback_areas[0]; interleaved_playback_buffer = ExtractAddress( area, stream->playback_offset ); PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, 0, /* starting at channel 0 */ interleaved_playback_buffer, 0 /* default numInputChannels */ ); } else { /* noninterleaved */ for( i = 0; i < stream->playback_channels; i++ ) { void *noninterleaved_playback_buffer; area = &playback_areas[i]; noninterleaved_playback_buffer = ExtractAddress( area, stream->playback_offset ); PaUtil_SetNonInterleavedOutputChannel( &stream->bufferProcessor, i, noninterleaved_playback_buffer); } } playback_frames_avail = frames; } common_frames_avail = MIN(capture_frames_avail, playback_frames_avail); common_frames_avail -= common_frames_avail % stream->frames_per_period; //PA_DEBUG(( "%d capture frames available\n", capture_frames_avail )); //PA_DEBUG(( "%d frames playback available\n", playback_frames_avail )); //PA_DEBUG(( "%d frames available\n", common_frames_avail )); if( stream->pcm_capture ) PaUtil_SetInputFrameCount( &stream->bufferProcessor, common_frames_avail ); if( stream->pcm_playback ) PaUtil_SetOutputFrameCount( &stream->bufferProcessor, common_frames_avail ); return common_frames_avail; }