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

📄 mpeg2enc.cpp

📁 mpeg2编码解码源程序代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    sscanf(line,"%d %d %d %d",      &motion_data[i].forw_hor_f_code, &motion_data[i].forw_vert_f_code,      &motion_data[i].sxf, &motion_data[i].syf);    if (i!=0)    {      fgets(line,254,fd);      sscanf(line,"%d %d %d %d",        &motion_data[i].back_hor_f_code, &motion_data[i].back_vert_f_code,        &motion_data[i].sxb, &motion_data[i].syb);    }  }  fclose(fd);  /* 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  {    /* MPEG-1 */    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;          }        }      }    }  }  /* relational checks */  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;      }    for (i=0; i<3; i++)      if (altscan_tab[i])      {        if (!quiet)          fprintf(stderr,"Warning: setting altscan_tab[%d] = 0\n",i);        altscan_tab[i] = 0;      }  }  if (!mpeg1 && constrparms)  {    if (!quiet)      fprintf(stderr,"Warning: setting constrained_parameters_flag = 0\n");    constrparms = 0;  }  if (prog_seq && !prog_frame)  {    if (!quiet)      fprintf(stderr,"Warning: setting progressive_frame = 1\n");    prog_frame = 1;  }  if (prog_frame && fieldpic)  {    if (!quiet)      fprintf(stderr,"Warning: setting field_pictures = 0\n");    fieldpic = 0;  }  if (!prog_frame && repeatfirst)  {    if (!quiet)      fprintf(stderr,"Warning: setting repeat_first_field = 0\n");    repeatfirst = 0;  }  if (prog_frame)  {    for (i=0; i<3; i++)      if (!frame_pred_dct_tab[i])      {        if (!quiet)          fprintf(stderr,"Warning: setting frame_pred_frame_dct[%d] = 1\n",i);        frame_pred_dct_tab[i] = 1;      }  }  if (prog_seq && !repeatfirst && topfirst)  {    if (!quiet)      fprintf(stderr,"Warning: setting top_field_first = 0\n");    topfirst = 0;  }  /* search windows */  for (i=0; i<M; i++)  {    if (motion_data[i].sxf > (4<<motion_data[i].forw_hor_f_code)-1)    {      if (!quiet)        fprintf(stderr,          "Warning: reducing forward horizontal search width to %d\n",          (4<<motion_data[i].forw_hor_f_code)-1);      motion_data[i].sxf = (4<<motion_data[i].forw_hor_f_code)-1;    }    if (motion_data[i].syf > (4<<motion_data[i].forw_vert_f_code)-1)    {      if (!quiet)        fprintf(stderr,          "Warning: reducing forward vertical search width to %d\n",          (4<<motion_data[i].forw_vert_f_code)-1);      motion_data[i].syf = (4<<motion_data[i].forw_vert_f_code)-1;    }    if (i!=0)    {      if (motion_data[i].sxb > (4<<motion_data[i].back_hor_f_code)-1)      {        if (!quiet)          fprintf(stderr,            "Warning: reducing backward horizontal search width to %d\n",            (4<<motion_data[i].back_hor_f_code)-1);        motion_data[i].sxb = (4<<motion_data[i].back_hor_f_code)-1;      }      if (motion_data[i].syb > (4<<motion_data[i].back_vert_f_code)-1)      {        if (!quiet)          fprintf(stderr,            "Warning: reducing backward vertical search width to %d\n",            (4<<motion_data[i].back_vert_f_code)-1);        motion_data[i].syb = (4<<motion_data[i].back_vert_f_code)-1;      }    }  }}void set_param(long width,long height,double b,double fr)
{
  int i;
  int h,m,s,f;
  static double ratetab[8]=

⌨️ 快捷键说明

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