/*******************************************************************
                      block layer interface
 *******************************************************************/
#ifndef BLOCK_H
#define BLOCK_H

#include "video_stream.h"

typedef struct {
	/* in sequence_header ->
	        sequence_extension */ 
	int chroma_format;

	/* in sequence_header &
	      picture_header ->
	        quant_matrix_extension */
	unsigned char quantizer_weight[4][64];

	/* in picture_header ->
	        picture_coding_extension */
	int picture_structure;
	int intra_dc_precision;
	int intra_vlc_format;
	int alternate_scan;
	int q_scale_type;
	
	/* in macroblock */
	int macroblock_intra;
	int dct_type;
	int dc_dct_predictor[3];
	int quantizer_scale_code;
} READ_BLOCK_OPTION;

#ifdef __cplusplus
extern "C" {
#endif

#ifndef BLOCK_C
extern int read_block(VIDEO_STREAM *in, short *out, int block_number, READ_BLOCK_OPTION *opt);
extern int reset_dc_dct_predictor(READ_BLOCK_OPTION *p);
#endif

#ifdef __cplusplus
}
#endif


#endif