[Ffmpeg-devel] MPEG4: Edge emulation for field motion vectors

Rahul Kumar kr.rahul
Fri Feb 17 15:37:54 CET 2006


Hi everyone,
  I have a doubt regarding handling of unrestricted motion vectors
for field macroblocks  (ie MV_TYPE_FIELD), in a frame picture  (ie
s->picture_structure == PICT_FRAME)

In such a scenario we call edge emulation routine with the following args:
// in function mpeg_motion
ff_emulated_edge_mc(s->edge_emu_buffer, ptr_y, s->linesize, 17, 17+field_based,
 src_x, src_y<<field_based, s->h_edge_pos, s->v_edge_pos);

However shouldn't we be calling the above function with (2 * s->linesize)

Best regards,
Rahul

PS: Alternatively if we look at the MPEG4 ISO code (microsoft's
implementation of natural video coding):
The function "motionCompMB()" (in file mc.cpp) which handles motion
compensation calls "motionCompYField()" for field macroblock, which
in-turn doubles frame-width before performing edge emulation.





More information about the ffmpeg-devel mailing list