Esempio n. 1
0
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));
}
Esempio n. 2
0
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;
}