primitiveSoundRecordSamples(void) { sqInt samplesRecorded; sqInt bufSizeInBytes; usqInt *buf; sqInt startWordIndex; sqInt _return_value; interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); startWordIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } if (!(interpreterProxy->failed())) { bufSizeInBytes = (interpreterProxy->slotSizeOf(((sqInt)(long)(buf) - 4))) * 4; interpreterProxy->success((startWordIndex >= 1) && (((startWordIndex - 1) * 2) < bufSizeInBytes)); } if (!(interpreterProxy->failed())) { samplesRecorded = snd_RecordSamplesIntoAtLength((int)buf, startWordIndex - 1, bufSizeInBytes); } _return_value = interpreterProxy->positive32BitIntegerFor(samplesRecorded); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(3, _return_value); return null; }
EXPORT(sqInt) primitiveSoundRecordSamples(void) { sqInt bufLen; sqInt samplesRecorded; sqInt bufSizeInBytes; sqInt byteOffset; char*bufPtr; usqInt *buf; sqInt startWordIndex; sqInt _return_value; interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); startWordIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } if (!(interpreterProxy->failed())) { bufSizeInBytes = (interpreterProxy->slotSizeOf((oopForPointer( buf ) - BASE_HEADER_SIZE))) * 4; interpreterProxy->success((startWordIndex >= 1) && (((startWordIndex - 1) * 2) < bufSizeInBytes)); } if (!(interpreterProxy->failed())) { byteOffset = (startWordIndex - 1) * 2; bufPtr = (((char*) buf)) + byteOffset; bufLen = bufSizeInBytes - byteOffset; samplesRecorded = snd_RecordSamplesIntoAtLength(bufPtr, 0, bufLen); } _return_value = interpreterProxy->positive32BitIntegerFor(samplesRecorded); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(3, _return_value); return null; }
primitiveSoundRecordSamples(void) { // SoundPlugin>>#primitiveSoundRecordSamples unsigned *buf; sqInt bufLen; char*bufPtr; sqInt bufSizeInBytes; sqInt byteOffset; sqInt samplesRecorded; sqInt startWordIndex; sqInt _return_value; success(isWords(stackValue(1))); buf = ((unsigned *) (firstIndexableField(stackValue(1)))); startWordIndex = stackIntegerValue(0); if (failed()) { return null; } if (!(failed())) { bufSizeInBytes = (slotSizeOf(((sqInt)(long)(buf) - BaseHeaderSize))) * 4; success((startWordIndex >= 1) && (((startWordIndex - 1) * 2) < bufSizeInBytes)); } if (!(failed())) { byteOffset = (startWordIndex - 1) * 2; bufPtr = (((char*) buf)) + byteOffset; bufLen = bufSizeInBytes - byteOffset; samplesRecorded = snd_RecordSamplesIntoAtLength(bufPtr, 0, bufLen); } _return_value = positive32BitIntegerFor(samplesRecorded); if (failed()) { return null; } popthenPush(3, _return_value); return null; }