292 |
{ |
{ |
293 |
uint32_t Flags = MotionFlags; |
uint32_t Flags = MotionFlags; |
294 |
|
|
295 |
if (!(VopFlags & XVID_VOP_MODEDECISION_BITS)) |
if (!(VopFlags & XVID_VOP_MODEDECISION_RD)) |
296 |
Flags &= ~(XVID_ME_QUARTERPELREFINE16_BITS+XVID_ME_QUARTERPELREFINE8_BITS+XVID_ME_HALFPELREFINE16_BITS+XVID_ME_HALFPELREFINE8_BITS+XVID_ME_EXTSEARCH_BITS); |
Flags &= ~(XVID_ME_QUARTERPELREFINE16_RD+XVID_ME_QUARTERPELREFINE8_RD+XVID_ME_HALFPELREFINE16_RD+XVID_ME_HALFPELREFINE8_RD+XVID_ME_EXTSEARCH_RD); |
297 |
|
|
298 |
if (Flags & XVID_ME_EXTSEARCH_BITS) |
if (Flags & XVID_ME_EXTSEARCH_RD) |
299 |
Flags |= XVID_ME_HALFPELREFINE16_BITS; |
Flags |= XVID_ME_HALFPELREFINE16_RD; |
300 |
|
|
301 |
if (Flags & XVID_ME_EXTSEARCH_BITS && MotionFlags & XVID_ME_EXTSEARCH8) |
if (Flags & XVID_ME_EXTSEARCH_RD && MotionFlags & XVID_ME_EXTSEARCH8) |
302 |
Flags |= XVID_ME_HALFPELREFINE8_BITS; |
Flags |= XVID_ME_HALFPELREFINE8_RD; |
303 |
|
|
304 |
if (Flags & XVID_ME_HALFPELREFINE16_BITS) |
if (Flags & XVID_ME_HALFPELREFINE16_RD) |
305 |
Flags |= XVID_ME_QUARTERPELREFINE16_BITS; |
Flags |= XVID_ME_QUARTERPELREFINE16_RD; |
306 |
|
|
307 |
if (Flags & XVID_ME_HALFPELREFINE8_BITS) { |
if (Flags & XVID_ME_HALFPELREFINE8_RD) { |
308 |
Flags |= XVID_ME_QUARTERPELREFINE8_BITS; |
Flags |= XVID_ME_QUARTERPELREFINE8_RD; |
309 |
Flags &= ~XVID_ME_HALFPELREFINE8; |
Flags &= ~XVID_ME_HALFPELREFINE8; |
310 |
} |
} |
311 |
|
|
312 |
if (Flags & XVID_ME_QUARTERPELREFINE8_BITS) |
if (Flags & XVID_ME_QUARTERPELREFINE8_RD) |
313 |
Flags &= ~XVID_ME_QUARTERPELREFINE8; |
Flags &= ~XVID_ME_QUARTERPELREFINE8; |
314 |
|
|
315 |
if (!(VolFlags & XVID_VOL_QUARTERPEL)) |
if (!(VolFlags & XVID_VOL_QUARTERPEL)) |
316 |
Flags &= ~(XVID_ME_QUARTERPELREFINE16+XVID_ME_QUARTERPELREFINE8+XVID_ME_QUARTERPELREFINE16_BITS+XVID_ME_QUARTERPELREFINE8_BITS); |
Flags &= ~(XVID_ME_QUARTERPELREFINE16+XVID_ME_QUARTERPELREFINE8+XVID_ME_QUARTERPELREFINE16_RD+XVID_ME_QUARTERPELREFINE8_RD); |
317 |
|
|
318 |
if (!(VopFlags & XVID_VOP_HALFPEL)) |
if (!(VopFlags & XVID_VOP_HALFPEL)) |
319 |
Flags &= ~(XVID_ME_EXTSEARCH16+XVID_ME_HALFPELREFINE16+XVID_ME_HALFPELREFINE8+XVID_ME_HALFPELREFINE16_BITS+XVID_ME_HALFPELREFINE8_BITS); |
Flags &= ~(XVID_ME_EXTSEARCH16+XVID_ME_HALFPELREFINE16+XVID_ME_HALFPELREFINE8+XVID_ME_HALFPELREFINE16_RD+XVID_ME_HALFPELREFINE8_RD); |
320 |
|
|
321 |
if ((VopFlags & XVID_VOP_GREYSCALE) || (VopFlags & XVID_VOP_REDUCED)) |
if ((VopFlags & XVID_VOP_GREYSCALE) || (VopFlags & XVID_VOP_REDUCED)) |
322 |
Flags &= ~(XVID_ME_CHROMA16 + XVID_ME_CHROMA8); |
Flags &= ~(XVID_ME_CHROMA_PVOP + XVID_ME_CHROMA_BVOP); |
323 |
|
|
324 |
return Flags; |
return Flags; |
325 |
} |
} |
326 |
|
|
327 |
/* BITS mode decision and search */ |
/* RD mode decision and search */ |
328 |
|
|
329 |
#include "../bitstream/zigzag.h" |
#include "../bitstream/zigzag.h" |
330 |
#include "../quant/quant_mpeg4.h" |
#include "../quant/quant_mpeg4.h" |