lavfi/setfield: add "progressive" option
Add "prog" parameter value, and deprecate numeric values. Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
This commit is contained in:
		
							parent
							
								
									9849515214
								
							
						
					
					
						commit
						c97201dd29
					
				@ -2534,19 +2534,21 @@ Force field for the output video frame.
 | 
			
		||||
The @code{setfield} filter marks the interlace type field for the
 | 
			
		||||
output frames. It does not change the input frame, but only sets the
 | 
			
		||||
corresponding property, which affects how the frame is treated by
 | 
			
		||||
followig filters (e.g. @code{fieldorder} or @code{yadif}).
 | 
			
		||||
following filters (e.g. @code{fieldorder} or @code{yadif}).
 | 
			
		||||
 | 
			
		||||
It accepts a parameter representing an integer or a string, which can
 | 
			
		||||
assume the following values:
 | 
			
		||||
It accepts a string parameter, which can assume the following values:
 | 
			
		||||
@table @samp
 | 
			
		||||
@item -1, auto
 | 
			
		||||
@item auto
 | 
			
		||||
Keep the same field property.
 | 
			
		||||
 | 
			
		||||
@item 0, bff
 | 
			
		||||
@item bff
 | 
			
		||||
Mark the frame as bottom-field-first.
 | 
			
		||||
 | 
			
		||||
@item 1, tff
 | 
			
		||||
@item tff
 | 
			
		||||
Mark the frame as top-field-first.
 | 
			
		||||
 | 
			
		||||
@item prog
 | 
			
		||||
Mark the frame as progressive.
 | 
			
		||||
@end table
 | 
			
		||||
 | 
			
		||||
@section setpts
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@
 | 
			
		||||
 | 
			
		||||
#define LIBAVFILTER_VERSION_MAJOR  2
 | 
			
		||||
#define LIBAVFILTER_VERSION_MINOR 71
 | 
			
		||||
#define LIBAVFILTER_VERSION_MICRO 101
 | 
			
		||||
#define LIBAVFILTER_VERSION_MICRO 102
 | 
			
		||||
 | 
			
		||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
 | 
			
		||||
                                               LIBAVFILTER_VERSION_MINOR, \
 | 
			
		||||
 | 
			
		||||
@ -40,20 +40,23 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
 | 
			
		||||
        if (sscanf(args, "%d%c", &setfield->top_field_first, &c) != 1) {
 | 
			
		||||
            if      (!strcmp("tff",  args)) setfield->top_field_first = 1;
 | 
			
		||||
            else if (!strcmp("bff",  args)) setfield->top_field_first = 0;
 | 
			
		||||
            else if (!strcmp("prog", args)) setfield->top_field_first = 2;
 | 
			
		||||
            else if (!strcmp("auto", args)) setfield->top_field_first = -1;
 | 
			
		||||
            else {
 | 
			
		||||
                av_log(ctx, AV_LOG_ERROR, "Invalid argument '%s'\n", args);
 | 
			
		||||
                return AVERROR(EINVAL);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            if (setfield->top_field_first < -1 || setfield->top_field_first > 1) {
 | 
			
		||||
                av_log(ctx, AV_LOG_ERROR,
 | 
			
		||||
                       "Provided integer value %d must be included between -1 and +1\n",
 | 
			
		||||
                       setfield->top_field_first);
 | 
			
		||||
                return AVERROR(EINVAL);
 | 
			
		||||
            }
 | 
			
		||||
            av_log(ctx, AV_LOG_WARNING,
 | 
			
		||||
                   "Using -1/0/1 is deprecated, use auto/tff/bff/prog\n", args);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
@ -63,7 +66,9 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
 | 
			
		||||
    SetFieldContext *setfield = inlink->dst->priv;
 | 
			
		||||
    AVFilterBufferRef *outpicref = avfilter_ref_buffer(inpicref, ~0);
 | 
			
		||||
 | 
			
		||||
    if (setfield->top_field_first != -1) {
 | 
			
		||||
    if (setfield->top_field_first == 2) {
 | 
			
		||||
        outpicref->video->interlaced = 0;
 | 
			
		||||
    } else if (setfield->top_field_first != -1) {
 | 
			
		||||
        outpicref->video->interlaced = 1;
 | 
			
		||||
        outpicref->video->top_field_first = setfield->top_field_first;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user