--- branches/dev-api-4/xvidcore/src/bitstream/bitstream.c 2003/03/15 14:32:56 920 +++ branches/dev-api-4/xvidcore/src/bitstream/bitstream.c 2003/03/26 10:47:59 947 @@ -521,7 +521,8 @@ BitstreamShowBits(bs, 8) != VIDOBJLAY_TYPE_CORE && BitstreamShowBits(bs, 8) != VIDOBJLAY_TYPE_MAIN && BitstreamShowBits(bs, 8) != VIDOBJLAY_TYPE_ACE && - BitstreamShowBits(bs, 8) != VIDOBJLAY_TYPE_ART_SIMPLE && + BitstreamShowBits(bs, 8) != VIDOBJLAY_TYPE_ART_SIMPLE && + BitstreamShowBits(bs, 8) != VIDOBJLAY_TYPE_ASP && BitstreamShowBits(bs, 8) != 0) // BUGGY DIVX { DPRINTF(DPRINTF_ERROR,"video_object_type_indication %i not supported ", @@ -1129,18 +1130,23 @@ static const unsigned int vol_id = 0; int vol_ver_id=1; int profile = 0x03; /* simple profile/level 3 */ + int vol_type_ind=VIDOBJLAY_TYPE_SIMPLE; if ( (pParam->vol_flags & XVID_QUARTERPEL) || (pParam->vol_flags & XVID_GMC) || (pParam->vol_flags & XVID_REDUCED_ENABLE)) vol_ver_id = 2; - if ((pParam->vol_flags & XVID_REDUCED_ENABLE)) + if ((pParam->vol_flags & XVID_REDUCED_ENABLE)) { profile = 0x93; /* advanced realtime simple profile/level 3 */ + vol_type_ind = VIDOBJLAY_TYPE_ART_SIMPLE; + } if ((pParam->vol_flags & XVID_QUARTERPEL) || - (pParam->vol_flags & XVID_GMC)) + (pParam->vol_flags & XVID_GMC)) { profile = 0xf3; /* advanced simple profile/level 2 */ + vol_type_ind = VIDOBJLAY_TYPE_ASP; + } // visual_object_sequence_start_code // BitstreamPad(bs); @@ -1204,8 +1210,12 @@ WRITE_MARKER(); - BitstreamPutBit(bs, 1); // fixed_vop_rate = 1 - BitstreamPutBits(bs, pParam->fincr, log2bin(pParam->fbase)); // fixed_vop_time_increment + if (pParam->fincr>0) { + BitstreamPutBit(bs, 1); // fixed_vop_rate = 1 + BitstreamPutBits(bs, pParam->fincr, log2bin(pParam->fbase)); // fixed_vop_time_increment + }else{ + BitstreamPutBit(bs, 0); // fixed_vop_rate = 0 + } WRITE_MARKER(); BitstreamPutBits(bs, pParam->width, 13); // width