JNIEXPORT jint JNICALL Java_com_sun_media_sound_MixerSourceLine_nSetSampleRate(JNIEnv* e, jobject thisObj, jlong id, jint rate) { TRACE1("Java_com_sun_media_sound_MixerSourceLine_nSetSampleRate %lx.\n", id); VTRACE1("-> stream id: %lx\n", (STREAM_REFERENCE) (INT_PTR) id); // $$kk: 04.06.99: steve hales says i should be using the UNSIGNED_LONG macros here. GM_AudioStreamSetRate((STREAM_REFERENCE) (INT_PTR) id, UNSIGNED_LONG_TO_XFIXED(rate)); TRACE1("Java_com_sun_media_sound_MixerSourceLine_nSetSampleRate %lx completed.\n", id); // $$kk: 04.06.99: steve hales says i should be using the UNSIGNED_LONG macros here. return (jint)XFIXED_TO_UNSIGNED_LONG(GM_AudioStreamGetRate((STREAM_REFERENCE) (INT_PTR) id)); }
XMPEGEncodeData * XOpenMPEGEncodeStreamFromMemory(GM_Waveform *pAudio, XMPEGEncodeRate encodeRate, OPErr *pErr) { XMPEGEncodeData *encode; OPErr theErr; MPEGEncoderPrivate *pPrivate; theErr = NO_ERR; encode = NULL; if (pAudio && pErr) { if ((pAudio->bitSize == 16) && (pAudio->channels <= 2)) { encode = (XMPEGEncodeData *)XNewPtr((long)sizeof(XMPEGEncodeData)); if (encode) { encode->pAudio = pAudio; encode->encodeRate = encodeRate; encode->pPrivateData = XNewPtr((long)sizeof(MPEGEncoderPrivate)); if (encode->pPrivateData) { pPrivate = MPEG_ENCODE_PRIVATE(encode); // create new mpeg stream to prepare for encoding. Returns NULL if failed. pPrivate->encoder = MPG_EncodeNewStream(encodeRate, XFIXED_TO_UNSIGNED_LONG(pAudio->sampledRate), pAudio->channels, pAudio->theWaveform, pAudio->waveFrames); if (pPrivate->encoder) { encode->maxFrameBuffers = MPG_EncodeMaxFrames(pPrivate->encoder); encode->frameBufferSizeInBytes = MPG_EncodeMaxFrameSize(pPrivate->encoder); encode->frameBufferSize = 0; encode->currentFrameBuffer = 0; pPrivate->compressedAudioPosition = 0; pPrivate->compressedAudioSizeInBytes = encode->maxFrameBuffers * encode->frameBufferSizeInBytes; pPrivate->pCompressedAudio = XNewPtr(pPrivate->compressedAudioSizeInBytes); if (pPrivate->pCompressedAudio == NULL) { BAE_ASSERT(FALSE); theErr = MEMORY_ERR; } } else { BAE_ASSERT(FALSE); theErr = PARAM_ERR; } } else { BAE_ASSERT(FALSE); theErr = MEMORY_ERR; } if (theErr) { XDisposePtr((XPTR)encode); encode = NULL; } } else { BAE_ASSERT(FALSE); theErr = MEMORY_ERR; } } else { BAE_ASSERT(FALSE); theErr = BAD_SAMPLE; } } else { BAE_ASSERT(FALSE); theErr = PARAM_ERR; } if (pErr) { *pErr = theErr; } return encode; }