--- bitstream.c 2002/06/30 10:46:29 1.22 +++ bitstream.c 2002/07/18 23:52:39 1.24 @@ -41,7 +41,10 @@ * * * Revision history: * * * - * 22.05.2002 bs_put_matrix fix + * 11.07.2002 add VOP width & height return to dec when dec->width * + * or dec->height is 0 (for use in examples/ex1.c) * + * MinChen * + * 22.05.2002 bs_put_matrix fix * * 20.05.2002 added BitstreamWriteUserData * * 19.06.2002 Fix a little bug in use custom quant matrix * * MinChen * @@ -327,10 +330,10 @@ DPRINTF(DPRINTF_HEADER,"vop_time_increment_resolution %i", time_increment_resolution); - time_increment_resolution--; +// time_increment_resolution--; if (time_increment_resolution > 0) { - dec->time_inc_bits = log2bin(time_increment_resolution); + dec->time_inc_bits = log2bin(time_increment_resolution-1); } else { // dec->time_inc_bits = 0; // for "old" xvid compatibility, set time_inc_bits = 1 @@ -359,6 +362,12 @@ DPRINTF(DPRINTF_HEADER, "width %i", width); DPRINTF(DPRINTF_HEADER, "height %i", height); + // for auto set width & height + if (dec->width == 0) + dec->width = width; + if (dec->height == 0) + dec->height = height; + if (width != dec->width || height != dec->height) { DPRINTF(DPRINTF_ERROR, "XVID_DEC_PARAM width/height does not match bitstream"); return -1; @@ -541,13 +550,15 @@ dec->time = dec->time_base * time_increment_resolution + time_increment; - dec->time_pp = (uint32_t) (dec->time - dec->last_non_b_time); + dec->time_pp = (uint32_t) + (time_increment_resolution + dec->time - dec->last_non_b_time)%time_increment_resolution; dec->last_non_b_time = dec->time; } else { dec->time = (dec->last_time_base + time_incr) * time_increment_resolution + time_increment; - dec->time_bp = (uint32_t) (dec->last_non_b_time - dec->time); + dec->time_bp = (uint32_t) + (time_increment_resolution + dec->last_non_b_time - dec->time)%time_increment_resolution; } READ_MARKER(); @@ -861,4 +872,4 @@ BitstreamPutBits(bs, data[i], 8); } -} \ No newline at end of file +}