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 }
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 }
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 }
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; }