FileRenderDebug(const char *fileName,bool readAccess,bool echoLocally)
	{
		mLastDisplayType = PxProcessRenderDebug::DT_LAST;
		mData = NULL;
		mPrimitives = NULL;
		mPrimitiveCount = 0;
		mCurrentFrame = 0;
		mFrameItemCount = 0;
		mFrameStart = 0;
		mFrameCount = 0;
		mReadAccess = readAccess;
		mEchoLocally = NULL;

		if ( echoLocally )
		{
			mEchoLocally = createProcessRenderDebug();
		}
		mFileBuffer = PX_NEW(PxFileBuffer)(fileName, readAccess ? PxFileBuf::OPEN_READ_ONLY : PxFileBuf::OPEN_WRITE_ONLY);
		if ( mFileBuffer->isOpen() )
		{
			if ( mReadAccess )
			{
				char temp[4];
				PxU32 r = mFileBuffer->read(temp,4);
				PxU32 version = mFileBuffer->readDword();
				if ( r == 4 && magic[0] == temp[0] && magic[1] == temp[1] && magic[2] == temp[2] && magic[3] == temp[3] && version == MAGIC_VERSION )
				{
					// it's valid!
					FrameHeader h;
					while ( readFrameHeader(h,*mFileBuffer ) )
					{
						mFrameHeaders.pushBack(h);
					}
					mFrameCount = mFrameHeaders.size();
				}
				else
				{
					delete mFileBuffer;
					mFileBuffer = NULL;
				}
			}
			else
			{
				mFileBuffer->write(magic, 4 );
				mFileBuffer->storeDword(MAGIC_VERSION);
				mFileBuffer->flush();
			}

		}
		else
		{
			delete mFileBuffer;
			mFileBuffer = NULL;
		}

	}
Esempio n. 2
0
// E.2.2 Control procedure for decoding a frame
void Decode_frame(SetjmpStreamState *in_out_pSetjmpStreamState, 
	ByteStreamInterface in_setjmpStreamReadInterface, 
	uint8_t currentMarker, JpegContext *in_pJpegContext)
{
	readFrameHeader(in_out_pSetjmpStreamState, in_setjmpStreamReadInterface, 
		&in_pJpegContext->frameHeader, currentMarker);

	currentMarker = readMarker(in_out_pSetjmpStreamState, in_setjmpStreamReadInterface);

	while (currentMarker != SOS_MARKER)
	{
		interpreteMarkersFromTableE1(in_out_pSetjmpStreamState, 
			in_setjmpStreamReadInterface, currentMarker, 
			in_pJpegContext);

		currentMarker = readMarker(in_out_pSetjmpStreamState, in_setjmpStreamReadInterface);
	}

	Decode_scan(in_out_pSetjmpStreamState, in_setjmpStreamReadInterface, in_pJpegContext);

	// TODO: further markers can occur before EOI
}