Author: cehoyos Date: Fri Feb 27 22:52:59 2009 New Revision: 28743 Log: Add one-field-only output for -vo vdpau. Change syntax of -vo vdpau:deint for the last time. Modified: trunk/libvo/vo_vdpau.c Modified: trunk/libvo/vo_vdpau.c ============================================================================== --- trunk/libvo/vo_vdpau.c Fri Feb 27 22:46:13 2009 (r28742) +++ trunk/libvo/vo_vdpau.c Fri Feb 27 22:52:59 2009 (r28743) @@ -208,7 +208,7 @@ static void video_to_output_surface(void // we would need to provide 2 past and 1 future frames to allow advanced // deinterlacing, which is not really possible currently. - for (i = 0; i <= !!deint; i++) { + for (i = 0; i <= !!(deint > 1); i++) { int field = VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME; VdpOutputSurface output_surface; if (i) @@ -394,9 +394,9 @@ static int create_vdp_mixer(VdpChromaTyp &vid_height, &vdp_chroma_type }; - if (deint == 2) - features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL; if (deint == 3) + features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL; + if (deint == 4) features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL; if (pullup) features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE; @@ -946,9 +946,10 @@ static const char help_msg[] = "\nOptions:\n" " deint (all modes > 0 respect -field-dominance)\n" " 0: no deinterlacing\n" - " 1: bob deinterlacing (current fallback)\n" - " 2: temporal deinterlacing (not yet working)\n" - " 3: temporal-spatial deinterlacing (not yet working)\n" + " 1: only show first field\n" + " 2: bob deinterlacing (current fallback)\n" + " 3: temporal deinterlacing (not yet working)\n" + " 4: temporal-spatial deinterlacing (not yet working)\n" " pullup\n" " Try to apply inverse-telecine (needs deinterlacing, not working)\n" " denoise\n"
Hi, sorry for extremely late reply! cehoyos wrote:
Author: cehoyos Date: Fri Feb 27 22:52:59 2009 New Revision: 28743
Log: Add one-field-only output for -vo vdpau. Change syntax of -vo vdpau:deint for the last time.
Modified: trunk/libvo/vo_vdpau.c
Modified: trunk/libvo/vo_vdpau.c ============================================================================== --- trunk/libvo/vo_vdpau.c Fri Feb 27 22:46:13 2009 (r28742) +++ trunk/libvo/vo_vdpau.c Fri Feb 27 22:52:59 2009 (r28743) @@ -208,7 +208,7 @@ static void video_to_output_surface(void
// we would need to provide 2 past and 1 future frames to allow advanced // deinterlacing, which is not really possible currently. - for (i = 0; i <= !!deint; i++) { + for (i = 0; i <= !!(deint > 1); i++) { int field = VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME; VdpOutputSurface output_surface; if (i)
I do not know the workings of vo vdpau but this change seems a bit obfuscated. If I understood correctly you need two iterations of the loop for some of the deinterlacers. Previously the only case this was not needed was when the deint id was zero so all other ids were evaluated to one by the double negation. But then this commit added another id that did not need it, namely number 1, so you changed it to "deint > 1". AFAIK the relational operators are guaranteed to always return 0 or 1 and thus render the double negation useless. Or am I missing something? [...] Alexander
participants (2)
-
Alexander Strasser -
cehoyos