⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpeg2enc.cpp

📁 mpeg2编码解码源程序代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    {24000.0/1001.0,24.0,25.0,30000.0/1001.0,30.0,50.0,60000.0/1001.0,60.0};
  extern int r,Xi,Xb,Xp,d0i,d0p,d0b; /* rate control */
  extern double avg_act; /* rate control */

  int id=0;
  double min=200.0;
  int md=3;
  for(id=0;id<8;id++)
  {
	  double t=abs(fr-ratetab[id]);
	  if(t<min)
	  {
		  md=id;
		  min=t;
	  }
	  
  }
 
  strcpy(id_string,"kjk mpeg2");
  strcpy(statname,"statout");
  inputtype=0;
  nframes=10;
  frame0=0;
  h=0;
  m=0;
  s=0;
  f=0;
  N=5;
  M=1;
  mpeg1=0;
  fieldpic=0;
  horizontal_size=width;
  vertical_size=height;
  aspectratio=2;
  frame_rate_code=md;
  bit_rate=b;
  vbv_buffer_size=112;   
  low_delay=0;     
  constrparms=0;
  profile=4;
  level=8;
  prog_seq=0;
  chroma_format=1;
  video_format=1;
  color_primaries=5;
  transfer_characteristics=5;
  matrix_coefficients=5;
  display_horizontal_size=width;
  display_vertical_size=height;
  dc_prec=0;
  topfirst=1;
  
  frame_pred_dct_tab[0]=0;
  frame_pred_dct_tab[1]=0;
  frame_pred_dct_tab[2]=0;

  
  conceal_tab[0]=0;
  conceal_tab[1]=0;
  conceal_tab[2]=0;
  
  
  qscale_tab[0]=1;
  qscale_tab[1]=1;
  qscale_tab[2]=1;

 
  intravlc_tab[0]=1;
  intravlc_tab[1]=0;
  intravlc_tab[2]=0;
  
  altscan_tab[0]=0;
  altscan_tab[1]=0;
  altscan_tab[2]=0;

  repeatfirst=0;
  prog_frame=0;
/* intra slice interval refresh period */  
  P=0;
  r=0;
  avg_act=0;
  Xi=0;
  Xp=0;
  Xb=0;
  d0i=0;
  d0p=0;
  d0b=0;

 
  motion_data = (struct motion_data *)malloc(M*sizeof(struct motion_data));
  if (!motion_data)
    error("malloc failed\n");

  motion_data[0].forw_hor_f_code=2;
  motion_data[0].forw_vert_f_code=2;
  motion_data[0].sxf=11;
  motion_data[0].syf=11;
/*
  motion_data[1].forw_hor_f_code=1;
  motion_data[1].forw_vert_f_code=1;
  motion_data[1].sxf=3;
  motion_data[1].syf=3;

  motion_data[1].back_hor_f_code=1;
  motion_data[1].back_vert_f_code=1,
  motion_data[1].sxb=7;
  motion_data[1].syb=7;

  motion_data[2].forw_hor_f_code=1;
  motion_data[2].forw_vert_f_code=1;
  motion_data[2].sxf=7;
  motion_data[2].syf=7;

  motion_data[2].back_hor_f_code=1;
  motion_data[2].back_vert_f_code=1,
  motion_data[2].sxb=3;
  motion_data[2].syb=3;
*/
 



  /* make flags boolean (x!=0 -> x=1) */
  mpeg1 = !!mpeg1;
  fieldpic = !!fieldpic;
  low_delay = !!low_delay;
  constrparms = !!constrparms;
  prog_seq = !!prog_seq;
  topfirst = !!topfirst;

  for (i=0; i<3; i++)
  {
    frame_pred_dct_tab[i] = !!frame_pred_dct_tab[i];
    conceal_tab[i] = !!conceal_tab[i];
    qscale_tab[i] = !!qscale_tab[i];
    intravlc_tab[i] = !!intravlc_tab[i];
    altscan_tab[i] = !!altscan_tab[i];
  }
  repeatfirst = !!repeatfirst;
  prog_frame = !!prog_frame;

  /* make sure MPEG specific parameters are valid */
  range_checks();

  frame_rate = ratetab[frame_rate_code-1];

  /* timecode -> frame number */
  tc0 = h;
  tc0 = 60*tc0 + m;
  tc0 = 60*tc0 + s;
  tc0 = (int)(frame_rate+0.5)*tc0 + f;
  /*

  if (!mpeg1)
  {
    profile_and_level_checks();
  }
  else
  {
 
    if (constrparms)
    {
      if (horizontal_size>768
          || vertical_size>576
          || ((horizontal_size+15)/16)*((vertical_size+15)/16)>396
          || ((horizontal_size+15)/16)*((vertical_size+15)/16)*frame_rate>396*25.0
          || frame_rate>30.0)
      {
        if (!quiet)
          fprintf(stderr,"Warning: setting constrained_parameters_flag = 0\n");
        constrparms = 0;
      }
    }

    if (constrparms)
    {
      for (i=0; i<M; i++)
      {
        if (motion_data[i].forw_hor_f_code>4)
        {
          if (!quiet)
            fprintf(stderr,"Warning: setting constrained_parameters_flag = 0\n");
          constrparms = 0;
          break;
        }

        if (motion_data[i].forw_vert_f_code>4)
        {
          if (!quiet)
            fprintf(stderr,"Warning: setting constrained_parameters_flag = 0\n");
          constrparms = 0;
          break;
        }

        if (i!=0)
        {
          if (motion_data[i].back_hor_f_code>4)
          {
            if (!quiet)
              fprintf(stderr,"Warning: setting constrained_parameters_flag = 0\n");
            constrparms = 0;
            break;
          }

          if (motion_data[i].back_vert_f_code>4)
          {
            if (!quiet)
              fprintf(stderr,"Warning: setting constrained_parameters_flag = 0\n");
            constrparms = 0;
            break;
          }
        }
      }
    }
  }

 
  if (mpeg1)
  {
    if (!prog_seq)
    {
      if (!quiet)
        fprintf(stderr,"Warning: setting progressive_sequence = 1\n");
      prog_seq = 1;
    }

    if (chroma_format!=CHROMA420)
    {
      if (!quiet)
        fprintf(stderr,"Warning: setting chroma_format = 1 (4:2:0)\n");
      chroma_format = CHROMA420;
    }

    if (dc_prec!=0)
    {
      if (!quiet)
        fprintf(stderr,"Warning: setting intra_dc_precision = 0\n");
      dc_prec = 0;
    }

    for (i=0; i<3; i++)
      if (qscale_tab[i])
      {
        if (!quiet)
          fprintf(stderr,"Warning: setting qscale_tab[%d] = 0\n",i);
        qscale_tab[i] = 0;
      }

    for (i=0; i<3; i++)
      if (intravlc_tab[i])
      {
        if (!quiet)
          fprintf(stderr,"Warning: setting intravlc_tab[%d] = 0\n",i);
        intravlc_tab[i] = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -