[Mesa-dev] [PATCH] xvmc: Replace frame_started by picture_structure
Christian König
deathsimple at vodafone.de
Sat Sep 3 01:44:04 PDT 2011
Looks good, I'm going to push it, but one small thing:
Am Freitag, den 02.09.2011, 16:20 +0200 schrieb Maarten Lankhorst:
> The preferred solution to keeping track of the picture structure
> has been putting it in the state tracker, so use picture_structure
> instead of frame_started to check if a frame needs to begin.
>
> If picture_structure has been changed, end the frame and start again.
>
> Signed-off-by: Maarten Lankhorst <m.b.lankhorst at gmail.com>
[snip]
> @@ -273,7 +277,8 @@ Status XvMCRenderSurface(Display *dpy, XvMCContext *context, unsigned int pictur
> xvmc_mb = macroblocks->macro_blocks + first_macroblock;
>
> /* If the surface we're rendering hasn't changed the ref frames shouldn't change. */
> - if (target_surface_priv->frame_started && (
> + if (target_surface_priv->picture_structure > 0 &&
> + target_surface_priv->picture_structure != picture_structure && (
> target_surface_priv->ref[0] != past_surface ||
> target_surface_priv->ref[1] != future_surface ||
> (xvmc_mb->x == 0 && xvmc_mb->y == 0))) {
That looks a bit odd, since we would call end_frame only when the
picture structure change, and that never happens for progressive
contents. I think it should look something like:
> if (target_surface_priv->picture_structure > 0 && (
> target_surface_priv->picture_structure != picture_structure ||
> target_surface_priv->ref[0] != past_surface ||
> target_surface_priv->ref[1] != future_surface ||
So we call end_frame under the following conditions:
1. begin_frame was called (picture structure is set) AND (
2. picture structure changes OR
3. ref frames change OR
4. mb address is (0,0)
)
Christian.
More information about the mesa-dev
mailing list