[MPlayer-dev-eng] [PATCH] Better double frame rate output and frame limit option.

Vicente Sendra visenri at yahoo.es
Sat Jan 5 02:24:40 CET 2013


> Testing HD ts and m2ts with this and just -framedrop I can't
> find any 
> regressions.

Ok, i'm really happy to hear that.

> Being able to field step is nice, is it possible to
> implement the same 
> for vdpau:deint=2 ?

I thought that the only way of adding frames were the filters tfields and yadiff, but as you say, vdpau adds them too.

I'm taking a look at vo_vdpau.c and it seems it has the same problem that was present in tfields and yadiff, it calls flip_page with no timing in function video_to_output_surface().

New option fpslimit is not going to work as expected with this VO, it will detect a frame limit equal to real frame limit/2, and it will drop frames in pairs, because main loop will process full frames, not fields (as it's done now in tfields and yadiff).

I need to study it deeper, but i think it can be done.

Call stack for one frame (2 fields) is something like this (deinterlace mode):

 filter_video
  -draw_image
   --video_to_output_surface
    ---flip_page
 flip_page

We have to avoid ---flip_page and queue a frame like in tfields and yadiff, then modify video_to_output_surface to output just one field on each call.
New call stack should be something like this:

 (field 1)
 filter_video
  -draw_image
   --video_to_output_surface
    ---vf_queue_frame
 flip_page

 (field 2)
 vf_output_queued_frame
   -video_to_output_surface
 flip_page

vf_queue_frame should handle both frames queued from vo (vo_vdpau) and vf (tfields, yadif)
same applies to vf_output_queued_frame.

Any Ideas?, suggestions are welcome.


More information about the MPlayer-dev-eng mailing list