summaryrefslogtreecommitdiffstats
path: root/k9vamps/k9requant2.h
diff options
context:
space:
mode:
Diffstat (limited to 'k9vamps/k9requant2.h')
-rwxr-xr-xk9vamps/k9requant2.h126
1 files changed, 126 insertions, 0 deletions
diff --git a/k9vamps/k9requant2.h b/k9vamps/k9requant2.h
new file mode 100755
index 0000000..e28336f
--- /dev/null
+++ b/k9vamps/k9requant2.h
@@ -0,0 +1,126 @@
+#include <qbuffer.h>
+#include "k9fifo.h"
+
+#ifndef K9REQUANT2_H
+#define K9REQUANT2_H
+
+
+class k9Requant2
+{
+public:
+ void setInput(char *data,int size);
+ void setOutput(char*data,int size);
+ uint64_t getOutByteCnt() { return outbytecnt-outbytecnt1;};
+ void setFactor(float fact);
+ void run();
+ k9Requant2();
+ ~k9Requant2();
+private:
+ QBuffer m_buffIn,m_buffOut;
+ QByteArray m_baIn,m_baOut;
+
+ char *m_dataIn,*m_dataOut;
+ int m_sizeIn,m_sizeOut;
+
+ // mpeg2 state
+ // seq header
+ uint horizontal_size_value;
+ uint vertical_size_value;
+
+ // pic header
+ uint picture_coding_type;
+
+ // pic code ext
+ uint f_code[2][2];
+ uint intra_dc_precision;
+ uint picture_structure;
+ uint frame_pred_frame_dct;
+ uint concealment_motion_vectors;
+ uint q_scale_type;
+ uint intra_vlc_format;
+ uint alternate_scan;
+
+ // error
+ int validPicHeader;
+ int validSeqHeader;
+ int validExtHeader;
+ int sliceError;
+
+ // slice or mb
+ uint quantizer_scale;
+ uint new_quantizer_scale;
+ uint last_coded_scale;
+ int h_offset, v_offset;
+
+ // rate
+ double quant_corr;
+
+ // block data
+ typedef struct
+ {
+ uint8_t run;
+ short level;
+ } RunLevel;
+ RunLevel block[6][65]; // terminated by level = 0, so we need 64+1
+ // end mpeg2 state
+ // global variables
+ uint8_t *cbuf, *rbuf, *wbuf, *orbuf, *owbuf;
+ int inbitcnt, outbitcnt;
+ uint32_t inbitbuf, outbitbuf;
+ uint64_t inbytecnt, outbytecnt,outbytecnt1;
+ float fact_x;
+ int mloka1;
+
+ /////---- begin ext mpeg code
+
+private:
+ void putbits(uint val, int n);
+ void Refill_bits(void);
+ uint Show_Bits(uint n);
+ uint Get_Bits(uint n);
+ uint Copy_Bits(uint n);
+ void flush_read_buffer();
+ void flush_write_buffer();
+ int scale_quant(double quant);
+ int increment_quant(int quant);
+ int intmax( register int x, register int y );
+ int intmin( register int x, register int y );
+ int getNewQuant(int curQuant);
+ int isNotEmpty(RunLevel *blk);
+ int putAC(int run, int signed_level, int vlcformat);
+ int putACfirst(int run, int val);
+ void putnonintrablk(RunLevel *blk);
+ void putcbp(int cbp);
+ void putmbtype(int mb_type);
+ int get_macroblock_modes ();
+ int get_quantizer_scale ();
+ int get_motion_delta (const int f_code);
+ int get_dmv ();
+ int get_coded_block_pattern ();
+ int get_luma_dc_dct_diff ();
+ int get_chroma_dc_dct_diff ();
+ void get_intra_block_B14 ();
+ void get_intra_block_B15 ();
+ int get_non_intra_block_drop (RunLevel *blk);
+ int get_non_intra_block_rq (RunLevel *blk);
+ void slice_intra_DCT (const int cc);
+ void slice_non_intra_DCT (int cur_block);
+ void motion_fr_frame ( uint f_code[2] );
+ void motion_fr_field ( uint f_code[2] );
+ void motion_fr_dmv ( uint f_code[2] );
+ void motion_fr_conceal ( );
+ void motion_fi_field ( uint f_code[2] );
+ void motion_fi_16x8 ( uint f_code[2] );
+ void motion_fi_dmv ( uint f_code[2] );
+ void motion_fi_conceal ();
+
+ void putmbdata(int macroblock_modes);
+ void put_quantiser(int quantiser);
+ int slice_init (int code);
+ void mpeg2_slice ( const int code );
+ void Flush_Bits(uint);
+ void init();
+protected:
+};
+
+#endif