package com.nativelibs4java.ffmpeg.avfilter;
import com.nativelibs4java.ffmpeg.avutil.AVClass;
import org.bridj.Pointer;
import org.bridj.StructObject;
import org.bridj.ann.Field;
import org.bridj.ann.Library;
/**
 * An instance of a filter<br>
 * <i>native declaration : libavfilter/avfilter.h:536</i><br>
 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
 * a tool written by <a href="http://ochafik.free.fr/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>
 * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> or <a href="http://bridj.googlecode.com/">BridJ</a> .
 */
@Library("avfilter") 
public class AVFilterContext extends StructObject {
	public AVFilterContext() {
		super();
	}
	public AVFilterContext(Pointer pointer) {
		super(pointer);
	}
	/**
	 * < needed for av_log()<br>
	 * C type : const AVClass*
	 */
	@Field(0) 
	public Pointer<AVClass > av_class() {
		return this.io.getPointerField(this, 0);
	}
	/**
	 * < needed for av_log()<br>
	 * C type : const AVClass*
	 */
	@Field(0) 
	public AVFilterContext av_class(Pointer<AVClass > av_class) {
		this.io.setPointerField(this, 0, av_class);
		return this;
	}
	/// C type : const AVClass*
	public final Pointer<AVClass > av_class_$eq(Pointer<AVClass > av_class) {
		av_class(av_class);
		return av_class;
	}
	/**
	 * < the AVFilter of which this is an instance<br>
	 * C type : AVFilter*
	 */
	@Field(1) 
	public Pointer<AVFilter > filter() {
		return this.io.getPointerField(this, 1);
	}
	/**
	 * < the AVFilter of which this is an instance<br>
	 * C type : AVFilter*
	 */
	@Field(1) 
	public AVFilterContext filter(Pointer<AVFilter > filter) {
		this.io.setPointerField(this, 1, filter);
		return this;
	}
	/// C type : AVFilter*
	public final Pointer<AVFilter > filter_$eq(Pointer<AVFilter > filter) {
		filter(filter);
		return filter;
	}
	/**
	 * < name of this filter instance<br>
	 * C type : char*
	 */
	@Field(2) 
	public Pointer<Byte > name() {
		return this.io.getPointerField(this, 2);
	}
	/**
	 * < name of this filter instance<br>
	 * C type : char*
	 */
	@Field(2) 
	public AVFilterContext name(Pointer<Byte > name) {
		this.io.setPointerField(this, 2, name);
		return this;
	}
	/// C type : char*
	public final Pointer<Byte > name_$eq(Pointer<Byte > name) {
		name(name);
		return name;
	}
	/// < number of input pads
	@Field(3) 
	public int input_count() {
		return this.io.getIntField(this, 3);
	}
	/// < number of input pads
	@Field(3) 
	public AVFilterContext input_count(int input_count) {
		this.io.setIntField(this, 3, input_count);
		return this;
	}
	public final int input_count_$eq(int input_count) {
		input_count(input_count);
		return input_count;
	}
	/**
	 * < array of input pads<br>
	 * C type : AVFilterPad*
	 */
	@Field(4) 
	public Pointer<AVFilterPad > input_pads() {
		return this.io.getPointerField(this, 4);
	}
	/**
	 * < array of input pads<br>
	 * C type : AVFilterPad*
	 */
	@Field(4) 
	public AVFilterContext input_pads(Pointer<AVFilterPad > input_pads) {
		this.io.setPointerField(this, 4, input_pads);
		return this;
	}
	/// C type : AVFilterPad*
	public final Pointer<AVFilterPad > input_pads_$eq(Pointer<AVFilterPad > input_pads) {
		input_pads(input_pads);
		return input_pads;
	}
	/**
	 * < array of pointers to input links<br>
	 * C type : AVFilterLink**
	 */
	@Field(5) 
	public Pointer<Pointer<AVFilterLink > > inputs() {
		return this.io.getPointerField(this, 5);
	}
	/**
	 * < array of pointers to input links<br>
	 * C type : AVFilterLink**
	 */
	@Field(5) 
	public AVFilterContext inputs(Pointer<Pointer<AVFilterLink > > inputs) {
		this.io.setPointerField(this, 5, inputs);
		return this;
	}
	/// C type : AVFilterLink**
	public final Pointer<Pointer<AVFilterLink > > inputs_$eq(Pointer<Pointer<AVFilterLink > > inputs) {
		inputs(inputs);
		return inputs;
	}
	/// < number of output pads
	@Field(6) 
	public int output_count() {
		return this.io.getIntField(this, 6);
	}
	/// < number of output pads
	@Field(6) 
	public AVFilterContext output_count(int output_count) {
		this.io.setIntField(this, 6, output_count);
		return this;
	}
	public final int output_count_$eq(int output_count) {
		output_count(output_count);
		return output_count;
	}
	/**
	 * < array of output pads<br>
	 * C type : AVFilterPad*
	 */
	@Field(7) 
	public Pointer<AVFilterPad > output_pads() {
		return this.io.getPointerField(this, 7);
	}
	/**
	 * < array of output pads<br>
	 * C type : AVFilterPad*
	 */
	@Field(7) 
	public AVFilterContext output_pads(Pointer<AVFilterPad > output_pads) {
		this.io.setPointerField(this, 7, output_pads);
		return this;
	}
	/// C type : AVFilterPad*
	public final Pointer<AVFilterPad > output_pads_$eq(Pointer<AVFilterPad > output_pads) {
		output_pads(output_pads);
		return output_pads;
	}
	/**
	 * < array of pointers to output links<br>
	 * C type : AVFilterLink**
	 */
	@Field(8) 
	public Pointer<Pointer<AVFilterLink > > outputs() {
		return this.io.getPointerField(this, 8);
	}
	/**
	 * < array of pointers to output links<br>
	 * C type : AVFilterLink**
	 */
	@Field(8) 
	public AVFilterContext outputs(Pointer<Pointer<AVFilterLink > > outputs) {
		this.io.setPointerField(this, 8, outputs);
		return this;
	}
	/// C type : AVFilterLink**
	public final Pointer<Pointer<AVFilterLink > > outputs_$eq(Pointer<Pointer<AVFilterLink > > outputs) {
		outputs(outputs);
		return outputs;
	}
	/**
	 * < private data for use by the filter<br>
	 * C type : void*
	 */
	@Field(9) 
	public Pointer<? > priv() {
		return this.io.getPointerField(this, 9);
	}
	/**
	 * < private data for use by the filter<br>
	 * C type : void*
	 */
	@Field(9) 
	public AVFilterContext priv(Pointer<? > priv) {
		this.io.setPointerField(this, 9, priv);
		return this;
	}
	/// C type : void*
	public final Pointer<? > priv_$eq(Pointer<? > priv) {
		priv(priv);
		return priv;
	}
}
