Ejemplo n.º 1
0
void Unpack::Init(byte *Window)
{
	if (Window==NULL)
	{
		Unpack::Window = (byte*) rarmalloc( MAXWINSIZE );
		if (Unpack::Window==NULL)
			ErrHandler.MemoryError();
	}
	else
	{
		Unpack::Window=Window;
		ExternalWindow=true;
	}
	UnpInitData(false);
	BitInput::handle_mem_error( ErrHandler );
	Inp.handle_mem_error( ErrHandler );
	
	// Only check BitInput, as VM's memory isn't allocated yet
	VM.BitInput::handle_mem_error( ErrHandler );
	
#ifndef SFX_MODULE
	// RAR 1.5 decompression initialization
	OldUnpInitData(false);
	InitHuff();
#endif
}
Ejemplo n.º 2
0
void Unpack::Init(byte *Window)
{
  if (Window==NULL)
  {
    Unpack::Window=new byte[MAXWINSIZE];

    // Clean the window to generate the same output when unpacking corrupt
    // RAR files, which may access to unused areas of sliding dictionary.
    memset(Unpack::Window,0,MAXWINSIZE);
#ifndef ALLOW_EXCEPTIONS
    if (Unpack::Window==NULL)
      ErrHandler.MemoryError();
#endif
  }
  else
  {
    Unpack::Window=Window;
    ExternalWindow=true;
  }
  UnpInitData(false);

#ifndef SFX_MODULE
  // RAR 1.5 decompression initialization
  OldUnpInitData(false);
  InitHuff();
#endif
}
Ejemplo n.º 3
0
void Unpack::Init(byte *Window)
{
  if (Window==NULL)
  {
    Unpack::Window=new byte[MAXWINSIZE];
#ifndef ALLOW_EXCEPTIONS
    if (Unpack::Window==NULL)
      ErrHandler.MemoryError();
#endif
  }
  else
  {
    Unpack::Window=Window;
    ExternalWindow=true;
  }
  UnpInitData(false);

#ifndef SFX_MODULE
  // RAR 1.5 decompression initialization
  OldUnpInitData(false);
  InitHuff();
#endif
}
Ejemplo n.º 4
0
int InitH263Encoder(CParam *params)
{

  Global.pic = (Pict *)malloc(sizeof(Pict));
  
  if(!Global.pic) 
  {
  return -1;
  }

  Global.pic->unrestricted_mv_mode = DEF_UMV_MODE;
  Global.pic->use_gobsync = DEF_INSERT_SYNC;
  Global.pic->PB = 0;
  Global.pic->TR = 0;
  Global.pic->QP_mean = 0.0;

  if(params->format == CPARAM_QCIF) {
    Global.pels = QCIF_YWIDTH;
    Global.lines = QCIF_YHEIGHT;
    Global.cpels = QCIF_YWIDTH/2;
    Global.pic->source_format = SF_QCIF;
  } else if (params->format == CPARAM_CIF) {
    Global.pels = CIF_YWIDTH;
    Global.lines = CIF_YHEIGHT;
    Global.cpels = CIF_YWIDTH/2;
    Global.pic->source_format = SF_CIF;
  } else if (params->format == CPARAM_SQCIF) {
    Global.pels = SQCIF_YWIDTH;
    Global.lines = SQCIF_YHEIGHT;
    Global.cpels = SQCIF_YWIDTH/2;
    Global.pic->source_format = SF_SQCIF;
  } else if (params->format == CPARAM_4CIF) {
    Global.pels = CIF4_YWIDTH;
    Global.lines = CIF4_YHEIGHT;
    Global.cpels = CIF4_YWIDTH/2;
    Global.pic->source_format = SF_4CIF;  
  } else if (params->format == CPARAM_16CIF) {
    Global.pels = CIF16_YWIDTH;
    Global.lines = CIF16_YHEIGHT;
    Global.cpels = CIF16_YWIDTH/2;
    Global.pic->source_format = SF_16CIF;
  } else {
    Global.pels = params->pels;
    Global.lines = params->lines;
    Global.cpels = params->pels / 2;
    Global.pic->source_format = 0;	/* ILLEGAL H.263! Use it only for testing */
  }
  
  Global.mbr = Global.lines / MB_SIZE;
  Global.mbc = Global.pels / MB_SIZE;
  Global.uskip = Global.lines*Global.pels;
  Global.vskip = Global.uskip + Global.lines*Global.pels/4;
  Global.sizeof_frame = (Global.vskip + Global.lines*Global.pels/4)*sizeof(int);


  Global.headerlength = DEF_HEADERLENGTH;
  /* Initalize VLC_tables */
  InitHuff();
  mwinit();

  /* Init motion detection */
  init_motion_detection();


#ifdef VERYFASTIDCT
  init_idct();			/* Do this in case of VERYFASTIDCT */
#elif STANDARDIDCT
  init_idctref();		/* Do this in case of standard IDCT */
#endif
				/* Do nothing for FASTIDCT */

  /* Set internal variables */
  Global.advanced = DEF_ADV_MODE;
  Global.mv_outside_frame = DEF_UMV_MODE || DEF_ADV_MODE;
  Global.long_vectors = DEF_UMV_MODE;
  Global.pb_frames = DEF_PBF_MODE;
  Global.search_p_frames = DEF_SPIRAL_SEARCH;
  Global.trace = DEF_WRITE_TRACE;

  params->half_pixel_searchwindow = CPARAM_DEFAULT_SEARCHWINDOW; 
  params->inter = CPARAM_DEFAULT_INTER;
  params->search_method = CPARAM_DEFAULT_SEARCH_METHOD;
  params->advanced_method = CPARAM_DEFAULT_ADVANCED_METHOD;
  params->Q_inter = CPARAM_DEFAULT_INTER_Q;
  params->Q_intra = CPARAM_DEFAULT_INTRA_Q;

  params->interpolated_lum = (unsigned int*)malloc(Global.pels*Global.lines*4*sizeof(int));

  if(!params->interpolated_lum)
    return -1;

  params->recon =(unsigned int*) malloc(Global.sizeof_frame);
  if(!params->recon) {
    free(params->interpolated_lum);
    free(Global.pic);
    return -1;
  }

  return 0;
}