Example #1
0
LOCAL BOOL size_image(LPIMAGE lpImage, LFIXED Width , LFIXED Height, 
	int Resolution, BOOL bSmartSize)
{
	int pix, lin, res;
	LPFRAME lpDataFrame;
	LPFRAME lpAlphaFrame;
	LPOBJECT lpBase;
	LPALPHA lpAlpha;
	RECT rAlpha;
	
	if (!lpImage)
		return(FALSE);
	lpBase = ImgGetBase(lpImage);
	lpAlpha = lpBase->lpAlpha;
	res = Resolution;

	ProgressBegin(1, 0);
	pix = FMUL( res, Width );
	lin = FMUL( res, Height );
	lpAlphaFrame = NULL;
	if (lpDataFrame = SizeFrame(lpBase->Pixmap.EditFrame, pix, lin, res,
								bSmartSize))
	{
		if (lpAlpha)
			lpAlphaFrame = SizeFrame(lpAlpha->Pixmap.EditFrame, pix, lin,
									res, bSmartSize);
	}
	
	if ( !lpDataFrame || (lpAlpha && !lpAlphaFrame))
	{
		if (lpDataFrame)
			FrameClose(lpDataFrame);
		if (lpAlphaFrame)
			FrameClose(lpAlphaFrame);
		ProgressEnd();
		return( FALSE );
	}
	
	lpBase->rObject.right = FrameXSize(lpDataFrame)-1;
	lpBase->rObject.bottom = FrameYSize(lpDataFrame)-1;
	if (lpAlpha)
		MaskRectUpdate(lpAlpha, &rAlpha);
	ProgressEnd();
	
	return( TRUE );
}
Example #2
0
void ResizePuzzleFrame(LPFRAME lpNewFrame)
{
    LPFRAME     lpOldFrame;
    LPFRAME     lpPrevFrame;
    double      fXMult;
    double      fYMult;
    double      fMult;
    int         iXNew;
    int         iYNew;
    int         iXOld;
    int         iYOld;

    lpOldFrame = ImgGetBaseEditFrame(lpImage);
    iXNew = FrameXSize(lpNewFrame);
    iYNew = FrameYSize(lpNewFrame);
    iXOld = FrameXSize(lpOldFrame);
    iYOld = FrameYSize(lpOldFrame);

    fXMult = (double)iXOld / (double)iXNew;
    fYMult = (double)iYOld / (double)iYNew;
        
    if (fXMult < fYMult)
         fMult = fXMult;
    else fMult = fYMult;
    iXNew = (int)((double)iXNew * fMult);
    iYNew = (int)((double)iYNew * fMult);
    
    lpPrevFrame = lpNewFrame;
    lpNewFrame = SizeFrame(
        lpNewFrame, 
        iXNew, 
        iYNew, 
        FrameResolution(lpOldFrame),
		FALSE);
    FrameClose(lpPrevFrame);

    iXNew = (FrameXSize(lpOldFrame) - FrameXSize(lpNewFrame)) / 2;
    iYNew = (FrameYSize(lpOldFrame) - FrameYSize(lpNewFrame)) / 2;
    iXNew = max(0, iXNew);
    iYNew = max(0, iYNew);
    lpPrevFrame = lpNewFrame;
    lpNewFrame = ExpandFrame(lpNewFrame, 
                    FrameXSize(lpOldFrame), /*pix*/ 
                    FrameYSize(lpOldFrame), /*lin*/ 
                    iXNew,                  /*left*/ 
                    iYNew,                  /*top*/ 
					FrameGetBackground(lpOldFrame));

    ImgReplaceBaseEditFrame(lpImage, lpNewFrame);
    FrameClose(lpPrevFrame);
}
Example #3
0
void MPAStream::FillAUbuffer(unsigned int frames_to_buffer )
{
	unsigned int padding_bit;
	last_buffered_AU += frames_to_buffer;

    if( eoscan )
        return;

    mjpeg_debug( "Scanning %d MPA frames to frame %d", 
                frames_to_buffer,
                last_buffered_AU );
	while( !bs.eos() 
           && decoding_order < last_buffered_AU 
           && !muxinto.AfterMaxPTS(access_unit.PTS) )
	{

		int skip=access_unit.length-4;
        bs.SeekFwdBits( skip );
		prev_offset = AU_start;
		AU_start = bs.bitcount();
        if( AU_start - prev_offset != access_unit.length*8 )
        {
            mjpeg_warn("Discarding incomplete final frame MPEG audio stream %02x!",
                       stream_id
                       );
            aunits.DropLast();
            --decoding_order;
            break;
        }
		/* Check we have reached the end of have  another catenated 
		   stream to process before finishing ... */
		if ( (syncword = bs.GetBits( 11))!=AUDIO_SYNCWORD )
		{
            //
            // Handle a broken last frame...
			if( !bs.eos()   )
			{
                mjpeg_warn( "Data follows end of last recogniseable MPEG audio frame - bad stream?");
                eoscan = true;
                return;
			}
            break;
		}
		// Skip version_id:2, layer:2, protection:1
		(void) bs.GetBits( 5);
		int rate_code	= bs.GetBits( 4);
		// Skip frequency
		(void) bs.GetBits( 2);

		padding_bit=bs.Get1Bit();
		access_unit.start = AU_start;
		access_unit.length = SizeFrame( rate_code, padding_bit );
		access_unit.PTS = static_cast<clockticks>(decoding_order) * static_cast<clockticks>(mpa_samples[layer]) * static_cast<clockticks>(CLOCKS)
			/ samples_per_second;
		access_unit.DTS = access_unit.PTS;
		access_unit.dorder = decoding_order;
		decoding_order++;
		aunits.Append( access_unit );
		num_frames[padding_bit]++;

		bs.GetBits( 9);
		
		num_syncword++;

		if (num_syncword >= old_frames+10 )
		{
			mjpeg_debug ("Got %d frame headers.", num_syncword);
			old_frames=num_syncword;
		
		}
	


    }
	last_buffered_AU = decoding_order;
	eoscan = bs.eos() || muxinto.AfterMaxPTS(access_unit.PTS);
}