qscale has a range of 0..51 we thus do not need a 256 entry table and neither need

to and it with 0xFF.

Originally committed as revision 14336 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Michael Niedermayer 17 years ago
parent a82688b003
commit 5a78bfbde7
  1. 6
      libavcodec/h264.c
  2. 2
      libavcodec/h264.h

@ -1584,7 +1584,7 @@ static void chroma_dc_dct_c(DCTELEM *block){
* gets the chroma qp. * gets the chroma qp.
*/ */
static inline int get_chroma_qp(H264Context *h, int t, int qscale){ static inline int get_chroma_qp(H264Context *h, int t, int qscale){
return h->pps.chroma_qp_table[t][qscale & 0xff]; return h->pps.chroma_qp_table[t][qscale];
} }
//FIXME need to check that this does not overflow signed 32 bit for low qp, I am not sure, it's very close //FIXME need to check that this does not overflow signed 32 bit for low qp, I am not sure, it's very close
@ -7337,8 +7337,8 @@ static void
build_qp_table(PPS *pps, int t, int index) build_qp_table(PPS *pps, int t, int index)
{ {
int i; int i;
for(i = 0; i < 255; i++) for(i = 0; i < 52; i++)
pps->chroma_qp_table[t][i & 0xff] = chroma_qp[av_clip(i + index, 0, 51)]; pps->chroma_qp_table[t][i] = chroma_qp[av_clip(i + index, 0, 51)];
} }
static inline int decode_picture_parameter_set(H264Context *h, int bit_length){ static inline int decode_picture_parameter_set(H264Context *h, int bit_length){

@ -138,7 +138,7 @@ typedef struct PPS{
int transform_8x8_mode; ///< transform_8x8_mode_flag int transform_8x8_mode; ///< transform_8x8_mode_flag
uint8_t scaling_matrix4[6][16]; uint8_t scaling_matrix4[6][16];
uint8_t scaling_matrix8[2][64]; uint8_t scaling_matrix8[2][64];
uint8_t chroma_qp_table[2][256]; ///< pre-scaled (with chroma_qp_index_offset) version of qp_table uint8_t chroma_qp_table[2][64]; ///< pre-scaled (with chroma_qp_index_offset) version of qp_table
int chroma_qp_diff; int chroma_qp_diff;
}PPS; }PPS;

Loading…
Cancel
Save