20 |
* along with this program ; if not, write to the Free Software |
* along with this program ; if not, write to the Free Software |
21 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 |
* |
* |
23 |
* $Id: bitstream.c,v 1.39.2.19 2003-11-19 15:42:38 syskin Exp $ |
* $Id: bitstream.c,v 1.39.2.20 2003-11-30 16:13:15 edgomez Exp $ |
24 |
* |
* |
25 |
****************************************************************************/ |
****************************************************************************/ |
26 |
|
|
662 |
DPRINTF(XVID_DEBUG_HEADER, "load_intra_quant_mat\n"); |
DPRINTF(XVID_DEBUG_HEADER, "load_intra_quant_mat\n"); |
663 |
|
|
664 |
bs_get_matrix(bs, matrix); |
bs_get_matrix(bs, matrix); |
665 |
set_intra_matrix(matrix); |
set_intra_matrix(dec->mpeg_quant_matrices, matrix); |
666 |
} else |
} else |
667 |
set_intra_matrix(get_default_intra_matrix()); |
set_intra_matrix(dec->mpeg_quant_matrices, get_default_intra_matrix()); |
668 |
|
|
669 |
if (BitstreamGetBit(bs)) /* load_inter_quant_mat */ |
if (BitstreamGetBit(bs)) /* load_inter_quant_mat */ |
670 |
{ |
{ |
673 |
DPRINTF(XVID_DEBUG_HEADER, "load_inter_quant_mat\n"); |
DPRINTF(XVID_DEBUG_HEADER, "load_inter_quant_mat\n"); |
674 |
|
|
675 |
bs_get_matrix(bs, matrix); |
bs_get_matrix(bs, matrix); |
676 |
set_inter_matrix(matrix); |
set_inter_matrix(dec->mpeg_quant_matrices, matrix); |
677 |
} else |
} else |
678 |
set_inter_matrix(get_default_inter_matrix()); |
set_inter_matrix(dec->mpeg_quant_matrices, get_default_inter_matrix()); |
679 |
|
|
680 |
if (dec->shape == VIDOBJLAY_SHAPE_GRAYSCALE) { |
if (dec->shape == VIDOBJLAY_SHAPE_GRAYSCALE) { |
681 |
DPRINTF(XVID_DEBUG_ERROR, "greyscale matrix not supported\n"); |
DPRINTF(XVID_DEBUG_ERROR, "greyscale matrix not supported\n"); |
1053 |
|
|
1054 |
static void |
static void |
1055 |
bs_put_matrix(Bitstream * bs, |
bs_put_matrix(Bitstream * bs, |
1056 |
const int16_t * matrix) |
const uint16_t * matrix) |
1057 |
{ |
{ |
1058 |
int i, j; |
int i, j; |
1059 |
const int last = matrix[scan_tables[0][63]]; |
const int last = matrix[scan_tables[0][63]]; |
1211 |
BitstreamPutBit(bs, pParam->vol_flags & XVID_VOL_MPEGQUANT); |
BitstreamPutBit(bs, pParam->vol_flags & XVID_VOL_MPEGQUANT); |
1212 |
|
|
1213 |
if ((pParam->vol_flags & XVID_VOL_MPEGQUANT)) { |
if ((pParam->vol_flags & XVID_VOL_MPEGQUANT)) { |
1214 |
BitstreamPutBit(bs, get_intra_matrix_status()); /* load_intra_quant_mat */ |
BitstreamPutBit(bs, is_custom_intra_matrix(pParam->mpeg_quant_matrices)); /* load_intra_quant_mat */ |
1215 |
if (get_intra_matrix_status()) { |
if(is_custom_intra_matrix(pParam->mpeg_quant_matrices)) |
1216 |
bs_put_matrix(bs, get_intra_matrix()); |
bs_put_matrix(bs, get_intra_matrix(pParam->mpeg_quant_matrices)); |
1217 |
} |
|
1218 |
|
BitstreamPutBit(bs, is_custom_inter_matrix(pParam->mpeg_quant_matrices)); /* load_inter_quant_mat */ |
1219 |
BitstreamPutBit(bs, get_inter_matrix_status()); /* load_inter_quant_mat */ |
if(is_custom_inter_matrix(pParam->mpeg_quant_matrices)) |
1220 |
if (get_inter_matrix_status()) { |
bs_put_matrix(bs, get_inter_matrix(pParam->mpeg_quant_matrices)); |
|
bs_put_matrix(bs, get_inter_matrix()); |
|
|
} |
|
|
|
|
1221 |
} |
} |
1222 |
|
|
1223 |
if (vol_ver_id != 1) { |
if (vol_ver_id != 1) { |