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

📄 main.h

📁 传输流分析
💻 H
📖 第 1 页 / 共 2 页
字号:
//----------------------------------------------------------------------------
//   AVI2MPG main header
//----------------------------------------------------------------------------

#define STRICT

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#ifndef MAXPATH
#define MAXPATH 260
#endif

#ifndef MAXFILE
#define MAXFILE 256
#endif

#ifdef MPEGMAIN
#define EXTERN
#else
#define EXTERN extern
#endif

#define FALSE 0
#define TRUE  1
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <netinet/in.h>

#include "common.h"
#include "mplex.h"
#include "ringbuffy.h"


#define MPEG_MPEG1  0
#define MPEG_VCD    1
#define MPEG_MPEG2  2
#define MPEG_SVCD   3
#define MPEG_DVD    4

#define COMPBITRATE_NONE 0
#define COMPBITRATE_AVG  1
#define COMPBITRATE_MAX  2

#define PULLDOWN_NONE 0
#define PULLDOWN_23   1
#define PULLDOWN_32   2
#define PULLDOWN_AUTO 3

#define TIMESTAMPS_ALL    0
#define TIMESTAMPS_IPONLY 1
#define TIMESTAMPS_IONLY  2

#define PICTURE_START_CODE 0x100L
#define SLICE_MIN_START    0x101L
#define SLICE_MAX_START    0x1AFL
#define USER_START_CODE    0x1B2L
#define SEQ_START_CODE     0x1B3L
#define EXT_START_CODE     0x1B5L
#define SEQ_END_CODE       0x1B7L
#define GOP_START_CODE     0x1B8L
#define ISO_END_CODE       0x1B9L
#define PACK_START_CODE    0x1BAL
#define SYSTEM_START_CODE  0x1BBL

/* picture coding type */
#define I_TYPE 1
#define P_TYPE 2
#define B_TYPE 3
#define D_TYPE 4

/* picture structure */
#define TOP_FIELD     1
#define BOTTOM_FIELD  2
#define FRAME_PICTURE 3

/* macroblock type */
#define MB_INTRA    1
#define MB_PATTERN  2
#define MB_BACKWARD 4
#define MB_FORWARD  8
#define MB_QUANT    16

/* motion_type */
#define MC_FIELD 1
#define MC_FRAME 2
#define MC_16X8  2
#define MC_DMV   3

/* mv_format */
#define MV_FIELD 0
#define MV_FRAME 1

/* chroma_format */
#define CHROMA420 1
#define CHROMA422 2
#define CHROMA444 3

/* extension start code IDs */
#define SEQ_ID       1
#define DISP_ID      2
#define QUANT_ID     3
#define SEQSCAL_ID   5
#define PANSCAN_ID   7
#define CODING_ID    8
#define SPATSCAL_ID  9
#define TEMPSCAL_ID 10

/* inputtype */
#define T_Y_U_V 0
#define T_YUV   1
#define T_PPM   2
#define T_AVI   3

#define MAXM 16
#define MAXN 32

/* macroblock information */
struct mbinfo {
  int mb_type; /* intra/forward/backward/interpolated */
  int motion_type; /* frame/field/16x8/dual_prime */
  int dct_type; /* field/frame DCT */
  int mquant; /* quantization parameter */
  int cbp; /* coded block pattern */
  int skipped; /* skipped macroblock */
  int MV[2][2][2]; /* motion vectors */
  int mv_field_sel[2][2]; /* motion vertical field select */
  int dmvector[2]; /* dual prime vectors */
  double act; /* activity measure */
  int var; /* for debugging */
};

/* motion data */
struct motion_data {
  int forw_hor_f_code,forw_vert_f_code; /* vector range */
  int sxf,syf; /* search range */
  int back_hor_f_code,back_vert_f_code;
  int sxb,syb;
};

/* type definitions for variable length code table entries */

typedef struct
{
  unsigned char code; /* right justified */
  char len;
} VLCtable;

/* for codes longer than 8 bits (excluding leading zeroes) */
typedef struct
{
  unsigned short code; /* right justified */
  char len;
} sVLCtable;

struct mpegOutSettings
{
  /* general settings */
  int useFP;
  int verbose;

  /* control flags */
  int MplexVideo; /* multiplex video flag */
  int MplexAudio; /* multiplex audio flag */
  int UserEncodeVideo;
  int UserEncodeAudio;
  int EncodeVideo; /* encode video flag */
  int EncodeAudio; /* encode audio flag */
  int SaveTempVideo; /* 1 = do not remove temp video file after multiplexing */
  int SaveTempAudio; /* 1 = do not remove temp audio file after multiplexing */
  int B_W; /* do black and white, i.e. do no chromanance */

  /* name strings */
  char id_string[MAXPATH];
  char iqname[MAXPATH], niqname[MAXPATH];
  char statname[MAXPATH];

  /* coding model parameters */
  int video_type; /* type of video stream, mpeg1, mpeg2, etc */
  int video_pulldown_flag; /* video is 24fps converted to 25.0 or 29.97fps */
  int constrparms;  /* constrained parameters flag (MPEG-1 only) */
  int N; /* number of frames in Group of Pictures */
  int M; /* distance between I/P frames */
  int P; /* intra slice refresh interval */
  int tc0; /* timecode of first frame */
  int hours, mins, sec, tframe;
  int fieldpic; /* use field pictures */
  int write_sec; /* write a sequence end code */
  int embed_SVCD_user_blocks;

  /* sequence specific data (sequence header) */
  int aspectratio; /* aspect ratio information (pel or display) */
  int frame_rate_code; /* coded value of frame rate */
  double frame_rate; /* frames per second */
  double bit_rate; /* bits per second */
  double max_bit_rate; /* maximum bit rate for variable bitrate mode */
  double avg_bit_rate;
  double min_bit_rate;
  int auto_bitrate; /* automatically compute bitrate based on res and frame rate */
  int vbv_buffer_size; /* size of VBV buffer (* 16 kbit) */
  int constant_bitrate; /* constant bitrate flag */
  int mquant_value; /* macroblock quantization value */
  int maxquality; //(min mquant allowed);
  int minquality; //(max mquant allowed unless ypu try to pass the max-bit-rate)

  /* sequence specific data (sequence extension) */
  int profile, level; /* syntax / parameter constraints */
  int prog_seq; /* progressive sequence */
  int chroma_format;
  int low_delay; /* no B pictures, skipped pictures */

  /* motion data */
  struct motion_data motion_data[MAXM];
  int xmotion, ymotion; /* x/y motion from frame to frame in pixels */
  int automotion; /* automatically compute motion vectors based on xmotion, ymotion */
  int maxmotion; /* max motion search windows for variable motion mode */

  /* sequence specific data (sequence display extension) */
  int write_sde; // write a Seq Dsply Ext
  int video_format; /* component, PAL, NTSC, SECAM or MAC */
  int color_primaries; /* source primary chromaticity coordinates */
  int transfer_characteristics; /* opto-electronic transfer char. (gamma) */
  int matrix_coefficients; /* Eg,Eb,Er / Y,Cb,Cr matrix coefficients */
  int display_horizontal_size, display_vertical_size; /* display size */

  /* picture specific data (picture coding extension) */
  int dc_prec; /* DC coefficient precision for intra coded blocks */
  int topfirst; /* display top field first */

  /* picture display extension */
  int write_pde;
  int frame_centre_horizontal_offset;
  int frame_centre_vertical_offset;

  /* use only frame prediction and frame DCT (I,P,B,current) */
  int frame_pred_dct_tab[3];
  int conceal_tab[3]; /* use concealment motion vectors (I,P,B) */
  int qscale_tab[3]; /* linear/non-linear quantizaton table */
  int intravlc_tab[3]; /* intra vlc format (I,P,B,current) */
  int altscan_tab[3]; /* alternate scan (I,P,B,current) */
  int repeatfirst; /* repeat first field after second field */
  int prog_frame; /* progressive frame */

  /* rate control vars */
  int Xi;
  int Xp;
  int Xb;
  int r;
  int d0i;
  int d0p;
  int d0b;
  int reset_d0pb;
  int avg_act;
  int fixed_vbv_delay; /* force a 0xffff vbv_delay */
  int min_frame_percent;
  int pad_frame_percent;

  /* audio vars */
  int audio_mode;
  int audio_layer;
  int psych_model;
  int audio_bitrate;
  int emphasis;
  int extension;
  int error_protection;
  int copyright;
  int original;

  /* multiplex vars */
  unsigned long sectors_delay;
  unsigned long video_delay_ms;
  unsigned long audio_delay_ms;
  unsigned long audio1_delay_ms;
  unsigned long sector_size;
  unsigned long packets_per_pack;
  unsigned long audio_buffer_size;
  unsigned long audio1_buffer_size;
  unsigned long video_buffer_size;
  int always_sys_header;
  int use_computed_bitrate;
  int mplex_type; /* type of program stream, mpeg1, mpeg2, etc */
  int mplex_pulldown_flag; /* video stream is 24fps converted to 25.0 or 29.97fps */
  int vcd_audio_pad; /* pad each vcd audio sector with zeros */
  int align_sequence_headers; /* align sequence headers to a sector */
  int user_mux_rate; /* force a particular mux rate */
  int put_private2; /* put private stream 2's instead of padding packets */
  int frame_timestamps; /* which frames to timestamp */
  int VBR_multiplex;
  int write_pec; /* write a program end code */
  int mux_SVCD_scan_offsets;
  unsigned int max_file_size;
  unsigned int mux_start_time;
  unsigned int mux_stop_time;
  int reset_clocks;
  int write_end_codes; /* write program end codes in split files */
  int set_broken_link;
};

EXTERN int B_W;
EXTERN int PALDefaults;
EXTERN int BatchMode;
EXTERN int UseAdobeAPI;
EXTERN int MMXMode;
EXTERN unsigned int MMXAvail;
EXTERN int UseFP;
EXTERN mpegOutSettings tempSettings1;
EXTERN mpegOutSettings tempSettings2;
EXTERN int verbose;
EXTERN int FileOutError;
EXTERN int AbortMPEG;
EXTERN int VideoAvail;
EXTERN int vVideoCDAvail;
EXTERN int vSVCDAvail;
EXTERN int aVideoCDAvail;
EXTERN int aSVCDAvail;
EXTERN int vDVDAvail;
EXTERN int aDVDAvail;
EXTERN int AudioAvail;
EXTERN int InvalidVideo;
EXTERN int InvalidAudio;
EXTERN char VideoFilename[255];
EXTERN char AudioFilename[255];
EXTERN char Audio1Filename[255];
EXTERN char ProgramFilename[255];
EXTERN unsigned int currentFrame;
EXTERN unsigned int currentSample;
EXTERN unsigned int nSamples;
EXTERN int vbvUnderflows;
EXTERN int vbvOverflows;
EXTERN unsigned int min_bitrate, max_bitrate;
EXTERN unsigned int min_frame_bitrate, max_frame_bitrate;
EXTERN unsigned int min_mquant, max_mquant;
EXTERN double avg_mquant;
EXTERN double paddingSum;   // video padding bits (cumulative)
EXTERN unsigned int maxPadding; // max video padding bits in  frame
EXTERN double headerSum;        // cumulative sum of video header bits

/* control flags */
EXTERN int MplexVideo;
EXTERN int MplexAudio;
EXTERN int UserEncodeVideo;
EXTERN int UserEncodeAudio;
EXTERN int EncodeVideo;
EXTERN int EncodeAudio;
EXTERN int SaveTempVideo;
EXTERN int SaveTempAudio;

/* audio stuff */
EXTERN int audio_mode;
EXTERN int audio_layer;
EXTERN int psych_model;
EXTERN int audio_bitrate;
EXTERN int emphasis;
EXTERN int extension;
EXTERN int error_protection;
EXTERN int copyright;
EXTERN int original;
EXTERN unsigned long audioSampleRate;
EXTERN int audioStereo;
EXTERN int  audioSampleSize;

/* multiplex stuff */
EXTERN unsigned long sectors_delay;
EXTERN unsigned long video_delay_ms;
EXTERN unsigned long audio_delay_ms;
EXTERN unsigned long audio1_delay_ms;
EXTERN unsigned long sector_size;
EXTERN unsigned long packets_per_pack;
EXTERN unsigned long init_audio_buffer_size;
EXTERN unsigned long init_audio1_buffer_size;
EXTERN unsigned long init_video_buffer_size;
EXTERN int always_sys_header;
EXTERN int use_computed_bitrate;
EXTERN int mplex_type;
EXTERN int vcd_audio_pad;
EXTERN int mplex_pulldown_flag;
EXTERN int align_sequence_headers;
EXTERN int user_mux_rate;
EXTERN int put_private2;
EXTERN int frame_timestamps; /* which frames to timestamp */
EXTERN int VBR_multiplex;

⌨️ 快捷键说明

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