Exemple #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));
}
XMPEGDecodedData * XOpenMPEGStreamFromMemory(XPTR pBlock, unsigned long blockSize, OPErr *pErr)
{
	XMPEGDecodedData	*pStream;

	if (!pBlock || !blockSize || !pErr)
	{
		BAE_ASSERT(FALSE);
		return NULL;
	}
	
#if WRITE_FILE
	PV_SetupWriteFile();
#endif
	pStream = (XMPEGDecodedData *)XNewPtr(sizeof(XMPEGDecodedData));
	if (pStream)
	{
		pStream->stream = MPG_NewStreamFromMemory(pBlock, blockSize);
		if (pStream->stream)
		{
			pStream->sampleRate = UNSIGNED_LONG_TO_XFIXED(MPG_GetSampleRate(pStream->stream));
			pStream->bitSize = (XBYTE)MPG_GetBitSize(pStream->stream);
			pStream->channels = (XBYTE)MPG_GetChannels(pStream->stream);
			pStream->bitrate = MPG_GetBitrate(pStream->stream);

			pStream->lengthInBytes = MPG_GetSizeInBytes(pStream->stream);
			pStream->lengthInSamples = MPG_GetNumberOfSamples(pStream->stream);

			pStream->frameBufferSize = (unsigned long)MPG_GetBufferSize(pStream->stream);
			pStream->maxFrameBuffers = (unsigned long)MPG_GetMaxBuffers(pStream->stream);
			*pErr = NO_ERR;
		}
		else
		{
			BAE_ASSERT(FALSE);
			XDisposePtr((XPTR)pStream);
			pStream = NULL;
			*pErr = BAD_FILE;
		}
	}
	else
	{
		BAE_ASSERT(FALSE);
		*pErr = MEMORY_ERR;
	}
	return pStream;
}