Esempio n. 1
0
/*===========================================================================*
 *
 * Tune_Init
 *
 *     Do any setup needed before coding stream
 *
 * RETURNS:	nothing
 *
 * SIDE EFFECTS:  varies
 *
 *===========================================================================*/
void Tune_Init()
{
  int i;

  /* Just check for each, and do whats needed */
  if (collect_quant) {
    if (!pureDCT) {
      pureDCT = TRUE;
      init_idctref();
      init_fdct();
    }
    fprintf(collect_quant_fp, "# %s\n", outputFileName);
    fprintf(collect_quant_fp, "#");
    for (i=0; i<64; i++) 
      fprintf(collect_quant_fp, " %d", qtable[i]);
    fprintf(collect_quant_fp, "\n#");
    for (i=0; i<64; i++) 
      fprintf(collect_quant_fp, " %d", niqtable[i]);
    fprintf(collect_quant_fp, "\n# %d %d %d\n\n", 
	    GetIQScale(), GetPQScale(), GetBQScale());
    
  }

  if (DoLaplace) {
    if (!pureDCT) {
      pureDCT = TRUE;
      init_idctref();
      init_fdct();
    }
    decodeRefFrames = TRUE;
    printSNR = TRUE;
  }
    
}
Esempio n. 2
0
/**
*    Initialize decoder
*
*
*/
void initdecoder()
{
  int i, cc, size;


  /* clip table */
  if (!(clp=(unsigned char *)malloc(1024)))
    error("malloc failed\n");

  clp += 384;

  for (i=-384; i<640; i++)
    clp[i] = (i<0) ? 0 : ((i>255) ? 255 : i);

  /* MPEG-1 = TMN parameters */
  matrix_coefficients = 5;


  switch (source_format) 
  {
  
	case (SF_SQCIF):
      horizontal_size = 128;
      vertical_size = 96;
      break;
    case (SF_QCIF):
      horizontal_size = 176;
      vertical_size = 144;
      break;
    case (SF_CIF):
      horizontal_size = 352;
      vertical_size = 288;
      break;
    case (SF_4CIF):
      horizontal_size = 704;
      vertical_size = 576;
      break;
    case (SF_16CIF):
      horizontal_size = 1408;
      vertical_size = 1152;
      break;
    default:
      if(trace)
	  fputs("ERROR: Illegal input format\n",dlog);
      return;
      break;
  }


  mb_width = horizontal_size/16;
  mb_height = vertical_size/16;
  coded_picture_width = horizontal_size;
  coded_picture_height = vertical_size;
  chrom_width =  coded_picture_width>>1;
  chrom_height = coded_picture_height>>1;
  blk_cnt = 6;

  for (cc=0; cc<3; cc++) 
  
  {
  
	// Find out size...
	 if (cc==0)
      size = coded_picture_width*coded_picture_height;
    else
      size = chrom_width*chrom_height;


	// Allocate memory
    if (!(refframe[cc] = (unsigned char *)malloc(size)))
      error("malloc failed\n");


    if (!(oldrefframe[cc] = (unsigned char *)malloc(size)))
      error("malloc failed\n");

    if (!(bframe[cc] = (unsigned char *)malloc(size)))
      error("malloc failed\n");
  }

  for (cc=0; cc<3; cc++) 
  {
  
	  if (cc==0) 
	  {
		  size = (coded_picture_width+64)*(coded_picture_height+64);
      
		  if (!(edgeframeorig[cc] = (unsigned char *)malloc(size)))
		  error("malloc failed\n");
      
		  
		  edgeframe[cc] = edgeframeorig[cc] + (coded_picture_width+64) * 32 + 32;
	  }
      else 
	  {
      size = (chrom_width+32)*(chrom_height+32);
      
	  if (!(edgeframeorig[cc] = (unsigned char *)malloc(size)))
      error("malloc failed\n");
      
	  edgeframe[cc] = edgeframeorig[cc] + (chrom_width+32) * 16 + 16;
	  }
    
  }

  
  /* IDCT */
  if (refidct)
    init_idctref();
  else
    init_idct();
}
Esempio n. 3
0
*/
void initdecoder()
{
  int i, cc, size;


  /* clip table */
  if (!(clp=(unsigned char *)malloc(1024)))
    error((char*)"malloc failed\n");

  clp += 384;

  for (i=-384; i<640; i++)
    clp[i] = (i<0) ? 0 : ((i>255) ? 255 : i);

  /* MPEG-1 = TMN parameters */
  matrix_coefficients = 5;


  switch (source_format) 
  {
  
	case (SF_SQCIF):
      horizontal_size = 128;
      vertical_size = 96;
      break;
    case (SF_QCIF):
      horizontal_size = 176;
      vertical_size = 144;
      break;
    case (SF_CIF):
      horizontal_size = 352;
      vertical_size = 288;
      break;
    case (SF_4CIF):
      horizontal_size = 704;
      vertical_size = 576;
      break;
    case (SF_16CIF):
      horizontal_size = 1408;
      vertical_size = 1152;
      break;
    default:
		myLog.WriteLog((char*)"initdecoder",(char*)"ERROR: Illegal input format");
      return;
      break;
  }

	char slog[128];
	sprintf(slog, "H.Size:%d V.Size:%d", horizontal_size, vertical_size);
	myLog.WriteLog((char*)"initdecoder",slog);


  mb_width = horizontal_size/16;
  mb_height = vertical_size/16;
  coded_picture_width = horizontal_size;
  coded_picture_height = vertical_size;
  chrom_width =  coded_picture_width>>1;
  chrom_height = coded_picture_height>>1;
  blk_cnt = 6;
  
  int iSize1, iSize2;
  size = coded_picture_width*coded_picture_height;
  iSize1 = size;
  iSize2 = chrom_width*chrom_height; 
  size += (iSize2*2);

  if (!(refframe[0] = (unsigned char *)malloc(size)))
     error((char*)"malloc failed\n");
  else{
	 unsigned char *p = refframe[0];
	 refframe[1] = p+iSize1;
	 refframe[2] = p+iSize1+iSize2;
  }

  if (!(oldrefframe[0] = (unsigned char *)malloc(size)))
    error((char*)"malloc failed\n");
  else{
  	 unsigned char *p = oldrefframe[0];
	 oldrefframe[1] = p+iSize1;
	 oldrefframe[2] = p+iSize1+iSize2;	
  }

  if (!(bframe[0] = (unsigned char *)malloc(size)))
    error((char*)"malloc failed\n");
  else{
  	 unsigned char *p = bframe[0];
	 bframe[1] = p+iSize1;
	 bframe[2] = p+iSize1+iSize2;	
  }
/*  for (cc=0; cc<3; cc++) 
  
  {
  
	// Find out size...
	 if (cc==0)
      size = coded_picture_width*coded_picture_height;
    else
      size = chrom_width*chrom_height;


	// Allocate memory
    if (!(refframe[cc] = (unsigned char *)malloc(size)))
      error((char*)"malloc failed\n");


    if (!(oldrefframe[cc] = (unsigned char *)malloc(size)))
      error((char*)"malloc failed\n");

    if (!(bframe[cc] = (unsigned char *)malloc(size)))
      error((char*)"malloc failed\n");
  }
*/

  for (cc=0; cc<3; cc++) 
  {
  
	  if (cc==0) 
	  {
		  size = (coded_picture_width+64)*(coded_picture_height+64);
      
		  if (!(edgeframeorig[cc] = (unsigned char *)malloc(size)))
		  error((char*)"malloc failed\n");
      
		  
		  edgeframe[cc] = edgeframeorig[cc] + (coded_picture_width+64) * 32 + 32;
	  }
      else 
	  {
      size = (chrom_width+32)*(chrom_height+32);
      
	  if (!(edgeframeorig[cc] = (unsigned char *)malloc(size)))
      error((char*)"malloc failed\n");
      
	  edgeframe[cc] = edgeframeorig[cc] + (chrom_width+32) * 16 + 16;
	  }
    
  }

  
  /* IDCT */
  if (refidct)
    init_idctref();
  else
    init_idct();
Esempio 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;
}