📄 mpeg2enc.cpp
字号:
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 + -