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

📄 newmotiondlg.h

📁 机器视觉的程序
💻 H
字号:
// newmotionDlg.h : header file
//
//{{AFX_INCLUDES()
#include "activemovie3.h"
//}}AFX_INCLUDES

#if !defined(AFX_NEWMOTIONDLG_H__D3E3A872_F5A5_4559_B7AF_05C999A86C8E__INCLUDED_)
#define AFX_NEWMOTIONDLG_H__D3E3A872_F5A5_4559_B7AF_05C999A86C8E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CNewmotionDlg dialog

class CNewmotionDlg : public CDialog
{
// Construction
public:
	CNewmotionDlg(CWnd* pParent = NULL);	// standard constructor
	//CFileDialog dlg;

	CString PathName;
	char* postfix;
	CString strPostfix;

	CFile bitfile;
    //BOOL DlgSetup;

	int headerstamp;
	int byteidx;
	int bitidx ;
	WORD totbits;
	int bufcount;
	int CodeType;
	BOOL eobs;
	int masks[8];
	BYTE* bfr;
//	int mb_width;
//	int mb_height;
	int width;
    int height;

	int P_Num;
	int Pic_Rate;
    int	slice_vert_pos;
    int Frame_Num,PFrame_Num,IFrame_Num,BFrame_Num;//,Slice_Num;
	int PMV_out[100][1000][2],MB_Num;//[100];
	int mih[5];
	int intensity,direction;
	CString m_strsql;
	CRecordset m_rset;


public://公共函数
    int Next_Start_Code();
	int Next_Pic_Start_Code();
	void Sequence_Header_Code();
	int  SeekSync(UINT sync, int N);
	int Endbs();
	UINT GetBits(int N);	
	UINT Get1Bit();
	UINT LookAhead(int N);
	void InitGetBits();
	void FinishGetBits();

	BOOL ReFillBuffer();
//	unsigned int Show_Bits(int N);
	unsigned long NextBits(int i);
	int Get_macroblock_type();
	int Get_macroblock_address_increment();
/* private data */
short iclip[1024]; /* clipping table */
short *iclp;
double c[8][8];

public://公共函数
int decode_macroblock(int *macroblock_type, int *stwtype, int *stwclass,  int *motion_type, 
					  int *dct_type, int PMV[2][2][2],int dc_dct_pred[3],
					  int motion_vertical_field_select[2][2],int dmvector[2]);
void skipped_macroblock(int dc_dct_pred[3], int PMV[2][2][2], int *motion_type,
						int motion_vertical_field_select[2][2], int *stwtype, int *macroblock_type);

void motion_vector(int *PMV,int *dmvector,  int h_r_size,int v_r_size,int dmv,int mvscale,
				   int full_pel_vector);
void decode_motion_vector(int *pred,int r_size,int motion_code,int motion_residual,
						  int full_pel_vector);
void macroblock_modes(int *pmacroblock_type,int *pstwtype,int *pstwclass,int *pmotion_type,
					  int *pmotion_vector_count,int *pmv_format,int *pdmv,int *pmvscale,int *pdct_type);
int start_of_slice(int MBAmax, int *MBA, int *MBAinc,int dc_dct_pred[3], int PMV[2][2][2]);
//void motion_compensation(int MBA, int macroblock_type, int motion_type, int PMV[2][2][2], 
           // int motion_vertical_field_select[2][2], int dmvector[2], int stwtype, int dct_type);
int slice(int MBAmax);
int Get_coded_block_pattern();
int Get_dmvector();
int Get_motion_code();
void Decode_MPEG1_Non_Intra_Block(int comp);
void Decode_MPEG1_Intra_Block(int comp,int dc_dct_pred[]);
int Get_Luma_DC_dct_diff();
int Get_Chroma_DC_dct_diff();
void Clear_Block(int comp);
void Sum_Block(int comp);
void Reference_IDCT(short *block);
void Saturate(short *Block_Ptr);
void Fast_IDCT(short *block);
void idctrow(short *blk);
void idctcol(short *blk);
int activity_quantize_angle(float f_angle);

public:
 unsigned char scan[2][64]
#ifdef GLOBAL
=
{
  { /* Zig-Zag scan pattern  */
    0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,
    12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,
    35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,
    58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63
  },
  { /* Alternate scan pattern */
    0,8,16,24,1,9,2,10,17,25,32,40,48,56,57,49,
    41,33,26,18,3,11,4,12,19,27,34,42,50,58,35,43,
    51,59,20,28,5,13,6,14,21,29,36,44,52,60,37,45,
    53,61,22,30,7,15,23,31,38,46,54,62,39,47,55,63
  }
}
#endif
;

/* default intra quantization matrix */
unsigned char default_intra_quantizer_matrix[64]
#ifdef GLOBAL
=
{
  8, 16, 19, 22, 26, 27, 29, 34,
  16, 16, 22, 24, 27, 29, 34, 37,
  19, 22, 26, 27, 29, 34, 34, 38,
  22, 22, 26, 27, 29, 34, 37, 40,
  22, 26, 27, 29, 32, 35, 40, 48,
  26, 27, 29, 32, 35, 40, 48, 58,
  26, 27, 29, 34, 38, 46, 56, 69,
  27, 29, 35, 38, 46, 56, 69, 83
}
#endif
;

/* non-linear quantization coefficient table */
unsigned char Non_Linear_quantizer_scale[32]
#ifdef GLOBAL
=
{
   0, 1, 2, 3, 4, 5, 6, 7,
   8,10,12,14,16,18,20,22,
  24,28,32,36,40,44,48,52,
  56,64,72,80,88,96,104,112
}
#endif
;

/* color space conversion coefficients
 * for YCbCr -> RGB mapping
 *
 * entries are {crv,cbu,cgu,cgv}
 *
 * crv=(255/224)*65536*(1-cr)/0.5
 * cbu=(255/224)*65536*(1-cb)/0.5
 * cgu=(255/224)*65536*(cb/cg)*(1-cb)/0.5
 * cgv=(255/224)*65536*(cr/cg)*(1-cr)/0.5
 *
 * where Y=cr*R+cg*G+cb*B (cr+cg+cb=1)
 */

/* ISO/IEC 13818-2 section 6.3.6 sequence_display_extension() */

int Inverse_Table_6_9[8][4]
#ifdef GLOBAL
=
{
  {117504, 138453, 13954, 34903}, /* no sequence_display_extension */
  {117504, 138453, 13954, 34903}, /* ITU-R Rec. 709 (1990) */
  {104597, 132201, 25675, 53279}, /* unspecified */
  {104597, 132201, 25675, 53279}, /* reserved */
  {104448, 132798, 24759, 53109}, /* FCC */
  {104597, 132201, 25675, 53279}, /* ITU-R Rec. 624-4 System B, G */
  {104597, 132201, 25675, 53279}, /* SMPTE 170M */
  {117579, 136230, 16907, 35559}  /* SMPTE 240M (1987) */
}
#endif
;





/* output types (Output_Type) */
#define T_YUV   0
#define T_SIF   1
#define T_TGA   2
#define T_PPM   3
#define T_X11   4
#define T_X11HIQ 5

/* decoder operation control variables */
int Output_Type;
int hiQdither;

/* decoder operation control flags */
int Quiet_Flag;
int Trace_Flag;
int Fault_Flag;
int Verbose_Flag;
int Two_Streams;
int Spatial_Flag;
int Reference_IDCT_Flag;
int Frame_Store_Flag;
int System_Stream_Flag;
int Display_Progressive_Flag;
int Ersatz_Flag;
int Big_Picture_Flag;
int Verify_Flag;
int Stats_Flag;
int User_Data_Flag;
int Main_Bitstream_Flag;


/* filenames */
char *Output_Picture_Filename;
char *Substitute_Picture_Filename;
char *Main_Bitstream_Filename; 
char *Enhancement_Layer_Bitstream_Filename; 


/* buffers for multiuse purposes */
char Error_Text[256];
unsigned char *Clip;

/* pointers to generic picture buffers */
unsigned char *backward_reference_frame[3];
unsigned char *forward_reference_frame[3];

unsigned char *auxframe[3];
unsigned char *current_frame[3];
unsigned char *substitute_frame[3];


/* pointers to scalability picture buffers */
unsigned char *llframe0[3];
unsigned char *llframe1[3];

short *lltmp;
char *Lower_Layer_Picture_Filename;




/* non-normative variables derived from normative elements */
int Coded_Picture_Width;
int Coded_Picture_Height;
int Chroma_Width;
int Chroma_Height;
int block_count;
int Second_Field;
int profile, level;

/* normative derived variables (as per ISO/IEC 13818-2) */
int horizontal_size;
int vertical_size;
int mb_width;
int mb_height;
double bit_rate;
double frame_rate; 
int quantizer_scale_code;


/* headers */

/* ISO/IEC 13818-2 section 6.2.2.1:  sequence_header() */
int aspect_ratio_information;
int frame_rate_code; 
int bit_rate_value; 
int vbv_buffer_size;
int constrained_parameters_flag;

/* ISO/IEC 13818-2 section 6.2.2.3:  sequence_extension() */
int profile_and_level_indication;
int progressive_sequence;
int chroma_format;
int low_delay;
int frame_rate_extension_n;
int frame_rate_extension_d;

/* ISO/IEC 13818-2 section 6.2.2.4:  sequence_display_extension() */
int video_format;  
int color_description;
int color_primaries;
int transfer_characteristics;
int matrix_coefficients;
int display_horizontal_size;
int display_vertical_size;

/* ISO/IEC 13818-2 section 6.2.3: picture_header() */
int temporal_reference;
int picture_coding_type;
int vbv_delay;
int full_pel_forward_vector;
int forward_f_code;
int full_pel_backward_vector;
int backward_f_code;


/* ISO/IEC 13818-2 section 6.2.3.1: picture_coding_extension() header */
int f_code[2][2];
int intra_dc_precision;
int picture_structure;
int top_field_first;
int frame_pred_frame_dct;
int concealment_motion_vectors;

int intra_vlc_format;

int repeat_first_field;

int chroma_420_type;
int progressive_frame;
int composite_display_flag;
int v_axis;
int field_sequence;
int sub_carrier_phase;



/* ISO/IEC 13818-2 section 6.2.3.3: picture_display_extension() header */
int frame_center_horizontal_offset[3];
int frame_center_vertical_offset[3];



/* ISO/IEC 13818-2 section 6.2.2.5: sequence_scalable_extension() header */
int layer_id;
int lower_layer_prediction_horizontal_size;
int lower_layer_prediction_vertical_size;
int horizontal_subsampling_factor_m;
int horizontal_subsampling_factor_n;
int vertical_subsampling_factor_m;
int vertical_subsampling_factor_n;


/* ISO/IEC 13818-2 section 6.2.3.5: picture_spatial_scalable_extension() header */
int lower_layer_temporal_reference;
int lower_layer_horizontal_offset;
int lower_layer_vertical_offset;
int spatial_temporal_weight_code_table_index;
int lower_layer_progressive_frame;
int lower_layer_deinterlaced_field_select;






/* ISO/IEC 13818-2 section 6.2.3.6: copyright_extension() header */
int copyright_flag;
int copyright_identifier;
int original_or_copy;
int copyright_number_1;
int copyright_number_2;
int copyright_number_3;

/* ISO/IEC 13818-2 section 6.2.2.6: group_of_pictures_header()  */
int drop_flag;
int hour;
int minute;
int sec;
int frame;
int closed_gop;
int broken_link;



/* layer specific variables (needed for SNR and DP scalability) */
struct layer_data {
  /* bit input */
  int Infile;
  unsigned char Rdbfr[2048];
  unsigned char *Rdptr;
  unsigned char Inbfr[16];
  /* from mpeg2play */
  unsigned int Bfr;
  unsigned char *Rdmax;
  int Incnt;
  int Bitcnt;
  /* sequence header and quant_matrix_extension() */
  int intra_quantizer_matrix[64];
  int non_intra_quantizer_matrix[64];
  int chroma_intra_quantizer_matrix[64];
  int chroma_non_intra_quantizer_matrix[64];
  
  int load_intra_quantizer_matrix;
  int load_non_intra_quantizer_matrix;
  int load_chroma_intra_quantizer_matrix;
  int load_chroma_non_intra_quantizer_matrix;

  int MPEG2_Flag;
  /* sequence scalable extension */
  int scalable_mode;
  /* picture coding extension */
  int q_scale_type;
  int alternate_scan;
  /* picture spatial scalable extension */
  int pict_scal;
  /* slice/macroblock */
  int priority_breakpoint;
  int quantizer_scale;
  int intra_slice;
  short block[12][64];
} base, enhan, *ld;


/*
#ifdef VERIFY
EXTERN int verify_sequence_header;
EXTERN int verify_group_of_pictures_header;
EXTERN int verify_picture_header;
EXTERN int verify_slice_header;
EXTERN int verify_sequence_extension;
EXTERN int verify_sequence_display_extension;
EXTERN int verify_quant_matrix_extension;
EXTERN int verify_sequence_scalable_extension;
EXTERN int verify_picture_display_extension;
EXTERN int verify_picture_coding_extension;
EXTERN int verify_picture_spatial_scalable_extension;
EXTERN int verify_picture_temporal_scalable_extension;
EXTERN int verify_copyright_extension;
#endif /* VERIFY */


int Decode_Layer;

/* verify.c */
/*
#ifdef VERIFY
void Check_Headers _ANSI_ARGS_((int Bitstream_Framenum, int Sequence_Framenum));
void Clear_Verify_Headers _ANSI_ARGS_((void));
#endif /* VERIFY */


int global_MBA;
int global_pic;
int True_Framenum;

// Dialog Data
	//{{AFX_DATA(CNewmotionDlg)
	enum { IDD = IDD_NEWMOTION_DIALOG };
	CActiveMovie3	m_ActiveMovie;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CNewmotionDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CNewmotionDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnOpen();
	afx_msg void OnPframe();
	afx_msg void OnBaisc();
	afx_msg void OnExit();
	afx_msg void OnMih();
	afx_msg void OnSend();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_NEWMOTIONDLG_H__D3E3A872_F5A5_4559_B7AF_05C999A86C8E__INCLUDED_)

⌨️ 快捷键说明

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