Example #1
0
bool
BufferRealloc(TBuffer *       const buf,
              xmlrpc_uint32_t const memsize) {

    if (buf->staticid)
    {
        TBuffer b;

        if (memsize<=buf->size)
            return TRUE;

        if (BufferAlloc(&b,memsize))
        {
            memcpy(b.data,buf->data,buf->size);
            BufferFree(buf);
            *buf=b;
            return TRUE;
        }
    }
    else
    {
        void *d;
        
        d=realloc(buf->data,memsize);
        if (d)
        {
            buf->data=d;
            buf->size=memsize;
            return TRUE;
        }
    }

    return FALSE;
}
Example #2
0
ps_canvas* PICAPI ps_canvas_create_compatible(const ps_canvas* c, int w, int h)
{
    if (!picasso::is_valid_system_device()) {
        global_status = STATUS_DEVICE_ERROR;
        return NULL;
    }

    if (!c) {
        global_status = STATUS_INVALID_ARGUMENT;
        return NULL;
    }

    if (w <= 0) {
        w = c->buffer.width();
    }

    if (h <= 0) {
        h = c->buffer.height();
    }

    picasso::painter* pa = picasso::get_painter_from_format(c->fmt);
    if (!pa) {
        return NULL;
    }

    ps_canvas* p = (ps_canvas*)mem_malloc(sizeof(ps_canvas));
    if (p) {
        p->refcount = 1;
        p->fmt = c->fmt;
        p->p = pa;
        p->host = NULL;
        p->mask = NULL;
        new ((void*)&(p->buffer)) picasso::rendering_buffer;
        int pitch = picasso::_bytes_per_color(c->fmt) * w;
        byte* buf = NULL;
        if ((buf = (byte*)BufferAlloc(h * pitch))) {
            p->flage = buffer_alloc_surface;
            p->buffer.attach(buf, w, h, pitch);
            p->p->attach(p->buffer);
            global_status = STATUS_SUCCEED;
            return p;
        } else if ((buf = (byte*)mem_malloc(h * pitch))) {
            p->flage = buffer_alloc_malloc;
            p->buffer.attach(buf, w, h, pitch);
            p->p->attach(p->buffer);
            global_status = STATUS_SUCCEED;
            return p;
        } else {
            delete pa;
            (&p->buffer)->picasso::rendering_buffer::~rendering_buffer();
            mem_free(p);
            global_status = STATUS_OUT_OF_MEMORY;
            return NULL;
        }
    } else {
        delete pa; //mem_free painter on error
        global_status = STATUS_OUT_OF_MEMORY;
        return NULL;
    }
}
Example #3
0
bool
StringAlloc(TString * const stringP) {

    bool succeeded;
    
    stringP->size = 0;

    succeeded = BufferAlloc(&stringP->buffer, 256);
    if (succeeded) {
        *(char *)(stringP->buffer.data) = '\0';
        return TRUE;
    } else
        return FALSE;
}
Example #4
0
void ParserStream(parser* p, stream* Stream)
{
	p->Stream = Stream;
	if (Stream)
	{
		if (!p->Buffer.Data)
		{
			BufferAlloc(&p->Buffer,4096,1);
			BufferStream(&p->Buffer,p->Stream);
		}
	}
	else
		BufferClear(&p->Buffer);
}
Example #5
0
ps_image* PICAPI ps_image_create_compatible(const ps_canvas* c, int w, int h)
{
    if (!picasso::is_valid_system_device()) {
        global_status = STATUS_DEVICE_ERROR;
        return NULL;
    }

    if (!c) {
        global_status = STATUS_INVALID_ARGUMENT;
        return NULL;
    }

    if (w <= 0) {
        w = c->buffer.width();
    }

    if (h <= 0) {
        h = c->buffer.height();
    }

    ps_image* img = (ps_image*)mem_malloc(sizeof(ps_image));
    if (img) {
        img->refcount = 1;
        img->fmt = c->fmt;
        img->host = NULL;
        new ((void*)&(img->buffer)) picasso::rendering_buffer;
        int pitch = picasso::_bytes_per_color(c->fmt) * w;
        byte* buf = NULL;
        if ((buf = (byte*)BufferAlloc(h * pitch))) {
            img->flage = buffer_alloc_surface;
            img->buffer.attach(buf, w, h, pitch);
            global_status = STATUS_SUCCEED;
            return img;
        } else if ((buf = (byte*)mem_malloc(h * pitch))) {
            img->flage = buffer_alloc_malloc;
            img->buffer.attach(buf, w, h, pitch);
            global_status = STATUS_SUCCEED;
            return img;
        } else {
            (&img->buffer)->picasso::rendering_buffer::~rendering_buffer();
            mem_free(img);
            global_status = STATUS_OUT_OF_MEMORY;
            return NULL;
        }
    } else {
        global_status = STATUS_OUT_OF_MEMORY;
        return NULL;
    }
}
Example #6
0
int StringAlloc(TString *s)
{
	/* sanity */
	if (!s) {
		return FALSE;
	}

	s->size=0;
	if (BufferAlloc(&(s->buffer),256))
	{
		*(char *)(s->buffer.data)='\0';
		return TRUE;
	}
	return FALSE;
}
Example #7
0
uint8_t* BufferWrite(buffer* p, const void* Ptr, size_t Length, size_t Align)
{
    uint8_t* Write = p->Write + Length;

	if (Write > p->End && !BufferAlloc(p,Write-p->Begin,Align))
		return 0;

    Write = p->Write;
    p->Write = Write+Length;

	if (Ptr)
		memcpy(Write,Ptr,Length);

	return Write;
}
Example #8
0
ps_image* PICAPI ps_image_create_from_data(ps_byte* data, ps_color_format fmt, int w, int h, int p)
{
    if (!picasso::is_valid_system_device()) {
        global_status = STATUS_DEVICE_ERROR;
        return NULL;
    }

    if (!data || w <= 0 || h <= 0 || p <= 0) {
        global_status = STATUS_INVALID_ARGUMENT;
        return NULL;
    }

    ps_image* img = (ps_image*)mem_malloc(sizeof(ps_image));
    if (img) {
        img->refcount = 1;
        img->fmt = fmt;
        img->host = NULL;
        new ((void*)&(img->buffer)) picasso::rendering_buffer;
        int pitch = picasso::_bytes_per_color(fmt) * w;
        byte* buf = NULL;
        if ((buf = (byte*)BufferAlloc(h * pitch))) {
            for (int i = 0; i < h; i++) {
                BufferCopy(buf + (pitch * i), data + (i * p), pitch);
            }
            img->flage = buffer_alloc_surface;
            img->buffer.attach(buf, w, h, pitch);
            global_status = STATUS_SUCCEED;
            return img;
        } else if ((buf = (byte*)mem_malloc(h * pitch))) {
            for (int i = 0; i < h; i++) {
                mem_copy(buf + (pitch * i), data + (i * p), pitch);
            }
            img->flage = buffer_alloc_malloc;
            img->buffer.attach(buf, w, h, pitch);
            global_status = STATUS_SUCCEED;
            return img;
        } else {
            (&img->buffer)->picasso::rendering_buffer::~rendering_buffer();
            mem_free(img);
            global_status = STATUS_OUT_OF_MEMORY;
            return NULL;
        }
    } else {
        global_status = STATUS_OUT_OF_MEMORY;
        return NULL;
    }
}
Example #9
0
format_stream* Format_LoadSubTitle(format_base* p, stream* Input)
{
	buffer m = {NULL};
	BufferAlloc(&m,4096,1);
	BufferStream(&m,Input);

	//!SUBTITLE
	/*				
		p->SubTitle = (format_stream*) CAlloc(sizeof(format_stream),1);
		if (p->SubTitle)
		{
			*int* Format = (int*)Format_StreamFormat(p->SubTitle,PACKET_SUBTITLE,sizeof(int));
			if (Format)
				*Format = STRING_OEM;
			p->SubTitle->LastTime = -1;
		}
	*/

	BufferClear(&m);
	return NULL;
}
ps_image* PICAPI ps_image_create(ps_color_format fmt, int w, int h)
{
    if (!picasso::is_valid_system_device()) {
        global_status = STATUS_DEVICE_ERROR;
        return 0;
    }

    if (w <= 0 || h <= 0) {
        global_status = STATUS_INVALID_ARGUMENT;
        return 0;
    }

    ps_image *img = (ps_image*)mem_malloc(sizeof(ps_image));
    if (img) {
        img->refcount = 1;
        img->fmt = fmt;
        img->host = 0;
        new ((void*)&(img->buffer)) picasso::rendering_buffer; 
        int pitch = picasso::_byte_pre_color(fmt) * w;
        byte* buf = 0;
        if ((buf = (byte*)BufferAlloc(h * pitch))) {
            img->flage = buffer_alloc_surface;
            img->buffer.attach(buf, w, h, pitch);
            global_status = STATUS_SUCCEED;
            return img;
        } else if ((buf = (byte*)mem_malloc(h * pitch))) {
            img->flage = buffer_alloc_malloc;
            img->buffer.attach(buf, w, h, pitch);
            global_status = STATUS_SUCCEED;
            return img;
        } else {
            mem_free(img);
            global_status = STATUS_OUT_OF_MEMORY;
            return 0;
        }
    } else {
        global_status = STATUS_OUT_OF_MEMORY;
        return 0;
    }
}
Example #11
0
bool EdiComposer::Compose(const Document& doc, const wxString& outFilename) {

    m_outputFile = new wxFile(outFilename, wxFile::write);
    if ( !m_outputFile ) {
        LOG_ERROR(wxGetApp().GetLogger(), 0, ADVPCS_COMPOSE_ERROR_OPEN_EDI_FILE + outFilename + "]");
        return false;
    }

    BufferAlloc();
    GetTrailer().Reset();

    LOG_INFO(wxGetApp().GetLogger(), 0, ADVPCS_COMPOSE_BUILD_HEADER);
    bool hr = ComposeHeader(doc);

    LOG_INFO(wxGetApp().GetLogger(), 0, ADVPCS_COMPOSE_BUILD_DETAIL);
    bool dr = ComposeDetail(doc);

    LOG_INFO(wxGetApp().GetLogger(), 0, ADVPCS_COMPOSE_ADDING_TRAILER);
    ComposeTrailer(doc);

    BufferFree();
    LOG_INFO(wxGetApp().GetLogger(), 0, wxString::Format(ADVPCS_COMPOSE_OK, outFilename) );
    return hr & dr;
};
Example #12
0
int BufferRealloc(TBuffer *buf,uint32 memsize)
{
	/* sanity */
	if (!buf) {
		return FALSE;
	}

	if (buf->staticid)
	{
		TBuffer b;

		if (memsize<=buf->size)
			return TRUE;

		if (BufferAlloc(&b,memsize))
		{
			memcpy(b.data,buf->data,buf->size);
			BufferFree(buf);
			*buf=b;
			return TRUE;
		}
	}
	else
	{
		void *d;
		
		if( (d = (void*)realloc(buf->data,memsize)) )
		{
			buf->data=d;
			buf->size=memsize;
			return TRUE;
		}
	}

	return FALSE;
}
Example #13
0
CCBaseBuffer::CCBaseBuffer ( int size )
{	CCBaseBuffer ();
	BufferAlloc ( size );
}
Example #14
0
static int Process(equalizer* p, const packet* Packet, const flowstate* State)
{
	fix_t* s;
	int n,DstLength,SrcLength,Channels;
	if (!Packet)
		return ERR_NEED_MORE_DATA;

	Channels = p->Codec.In.Format.Format.Audio.Channels;
	SrcLength = Packet->Length;
	DstLength = PCMDstLength(p->PCM,SrcLength);
	if (DstLength*Channels*2 > p->Buffer.Allocated)
	{
		uint8_t* Data;
		if (!BufferAlloc(&p->Buffer,DstLength*Channels*2,1024))
			return ERR_OUT_OF_MEMORY;

		Data = p->Buffer.Data;
		for (n=0;n<Channels;++n)
		{
			p->Codec.Packet.Data[n] = Data; 
			Data += DstLength;
			p->Tmp[n] = Data; 
			Data += DstLength;
		}
	}

	PCMConvert(p->PCM,*(planes*)&p->Codec.Packet.Data,Packet->Data,&DstLength,&SrcLength,SPEED_ONE,256);
	p->Codec.Packet.RefTime = Packet->RefTime;
	p->Codec.Packet.Length = DstLength;

	s = p->State[0];
	for (n=0;n<Channels;++n)
	{
		eqfilter* f;
		fix_t* i=(fix_t*)p->Codec.Packet.Data[n];
		fix_t* ie=(fix_t*)((uint8_t*)i+DstLength);
		fix_t* j=(fix_t*)p->Tmp[n];
		fix_t a,b,c,d,e;
		e = p->ScaleFinal;
		a = s[2];
		b = s[1];
		c = s[0];
		for (ie-=3;i<ie;i+=4,j+=4)
		{
			d=i[0];
			i[0]=fixfast_mul(c,e);
			j[0]=ACCFAST_ASHIFT(c-a,ACCFAST_ADJUST);
			a=i[1];
			i[1]=fixfast_mul(d,e);
			j[1]=ACCFAST_ASHIFT(d-b,ACCFAST_ADJUST);
			b=i[2];
			i[2]=fixfast_mul(a,e);
			j[2]=ACCFAST_ASHIFT(a-c,ACCFAST_ADJUST);
			c=i[3];
			i[3]=fixfast_mul(b,e);
			j[3]=ACCFAST_ASHIFT(b-d,ACCFAST_ADJUST);
		}
		for (ie+=3;i!=ie;++i,++j)
		{
			j[0]=ACCFAST_ASHIFT(c-a,ACCFAST_ADJUST);
			a=b;
			b=c;
			c=i[0];
			i[0]=fixfast_mul(b,e);
		}
		s[2] = a;
		s[1] = b;
		s[0] = c;
		s += 3;

		for (f=p->Filter;f!=p->Filter+MAXFILTER;f+=2,s+=2*2)
			if (f[0].alpha!=0 || f[1].alpha!=0)
			{
				accfast_var(v0);
				accfast_var(v1);

				i=(fix_t*)p->Codec.Packet.Data[n];
				ie=(fix_t*)((uint8_t*)i+DstLength);
				j=(fix_t*)p->Tmp[n];
				a = s[0];
				c = s[1];
				b = s[2];
				d = s[3];
				for (--ie;i<ie;i+=2,j+=2)
				{
					accfast_mul(v0,a,f[0].beta);
					accfast_mul(v1,b,f[1].beta);
					accfast_mla(v0,j[0],f[0].alpha);
					accfast_mla(v1,j[0],f[1].alpha);
					accfast_mla(v0,c,f[0].gamma);
					accfast_mla(v1,d,f[1].gamma);
					a = accfast_get(v0,ACCFAST_ADJUST);
					b = accfast_get(v1,ACCFAST_ADJUST);
					i[0] += a+b;
					a = ACCFAST_ASHIFT(a,ACCFAST_ADJUST);
					b = ACCFAST_ASHIFT(b,ACCFAST_ADJUST);
					accfast_mul(v0,c,f[0].beta);
					accfast_mul(v1,d,f[1].beta);
					accfast_mla(v0,j[1],f[0].alpha);
					accfast_mla(v1,j[1],f[1].alpha);
					accfast_mla(v0,a,f[0].gamma);
					accfast_mla(v1,b,f[1].gamma);
					c = accfast_get(v0,ACCFAST_ADJUST);
					d = accfast_get(v1,ACCFAST_ADJUST);
					i[1] += c+d;
					c = ACCFAST_ASHIFT(c,ACCFAST_ADJUST);
					d = ACCFAST_ASHIFT(d,ACCFAST_ADJUST);
				}
				if (i==ie)
				{
					accfast_mul(v0,a,f[0].beta);
					accfast_mul(v1,b,f[1].beta);
					accfast_mla(v0,j[0],f[0].alpha);
					accfast_mla(v1,j[0],f[1].alpha);
					accfast_mla(v0,c,f[0].gamma);
					accfast_mla(v1,d,f[1].gamma);
					a = c; c = accfast_get(v0,ACCFAST_ADJUST);
					b = d; d = accfast_get(v1,ACCFAST_ADJUST);
					i[0] += c+d;
					c = ACCFAST_ASHIFT(c,ACCFAST_ADJUST);
					d = ACCFAST_ASHIFT(d,ACCFAST_ADJUST);
				}
				s[0] = a;
				s[1] = c;
				s[2] = b;
				s[3] = d;
			}
	}

	if (p->Attenuate)
	{
		fix_t Max = 0;
		for (n=0;n<Channels;++n)
		{
			fix_t* i=(fix_t*)p->Codec.Packet.Data[n];
			fix_t* ie=(fix_t*)((uint8_t*)i+DstLength);
			for (;i!=ie;++i)
			{
				fix_t v = *i;
				if (v<0) v=-v;
				if (v>Max) Max=v;
			}
		}

		if (Max > FIXC(1.))
		{
			Max = fix_mul(fix_1div(Max),FIXC(15./16));
			Rescale(*(planes*)&p->Codec.Packet.Data,Max,5,DstLength,Channels);
			
			p->Scale = fix_mul(p->Scale,Max);
			UpdateScale(p);
		}
		else
		if (Max < FIXC(6./8) && p->Scale < FIXC(1-1./256))
		{
			Max = FIXC(32./31);
			if (fix_mul(p->Scale,Max) > FIXC(1))
				Max = fix_1div(p->Scale);
			Rescale(*(planes*)&p->Codec.Packet.Data,Max,10,DstLength,Channels);
		
			p->Scale = fix_mul(p->Scale,Max);
			UpdateScale(p);
		}
	}
	else
	if (p->Scale != FIXC(1.))
		UpdateScale(p);

	return ERR_NONE;
}