package com.nativelibs4java.ffmpeg.avcodec;
import org.bridj.Callback;
import org.bridj.Pointer;
import org.bridj.StructObject;
import org.bridj.ann.Field;
import org.bridj.ann.Library;
/**
 * <i>native declaration : libavcodec/avcodec.h</i><br>
 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
 * a tool written by <a href="http://ochafik.com/">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("avcodec") 
public class AVBitStreamFilter extends StructObject {
	public AVBitStreamFilter() {
		super();
	}
	public AVBitStreamFilter(Pointer pointer) {
		super(pointer);
	}
	/// C type : const char*
	@Field(0) 
	public Pointer<Byte > name() {
		return this.io.getPointerField(this, 0);
	}
	/// C type : const char*
	@Field(0) 
	public AVBitStreamFilter name(Pointer<Byte > name) {
		this.io.setPointerField(this, 0, name);
		return this;
	}
	/// C type : const char*
	public final Pointer<Byte > name_$eq(Pointer<Byte > name) {
		name(name);
		return name;
	}
	@Field(1) 
	public int priv_data_size() {
		return this.io.getIntField(this, 1);
	}
	@Field(1) 
	public AVBitStreamFilter priv_data_size(int priv_data_size) {
		this.io.setIntField(this, 1, priv_data_size);
		return this;
	}
	public final int priv_data_size_$eq(int priv_data_size) {
		priv_data_size(priv_data_size);
		return priv_data_size;
	}
	/// C type : filter_callback
	@Field(2) 
	public Pointer<AVBitStreamFilter.filter_callback > filter() {
		return this.io.getPointerField(this, 2);
	}
	/// C type : filter_callback
	@Field(2) 
	public AVBitStreamFilter filter(Pointer<AVBitStreamFilter.filter_callback > filter) {
		this.io.setPointerField(this, 2, filter);
		return this;
	}
	/// C type : filter_callback
	public final Pointer<AVBitStreamFilter.filter_callback > filter_$eq(Pointer<AVBitStreamFilter.filter_callback > filter) {
		filter(filter);
		return filter;
	}
	/// C type : close_callback
	@Field(3) 
	public Pointer<com.nativelibs4java.ffmpeg.avformat.RTPDynamicProtocolHandler_s.close_callback > close() {
		return this.io.getPointerField(this, 3);
	}
	/// C type : close_callback
	@Field(3) 
	public AVBitStreamFilter close(Pointer<com.nativelibs4java.ffmpeg.avformat.RTPDynamicProtocolHandler_s.close_callback > close) {
		this.io.setPointerField(this, 3, close);
		return this;
	}
	/// C type : close_callback
	public final Pointer<com.nativelibs4java.ffmpeg.avformat.RTPDynamicProtocolHandler_s.close_callback > close_$eq(Pointer<com.nativelibs4java.ffmpeg.avformat.RTPDynamicProtocolHandler_s.close_callback > close) {
		close(close);
		return close;
	}
	/// C type : AVBitStreamFilter*
	@Field(4) 
	public Pointer<AVBitStreamFilter > next() {
		return this.io.getPointerField(this, 4);
	}
	/// C type : AVBitStreamFilter*
	@Field(4) 
	public AVBitStreamFilter next(Pointer<AVBitStreamFilter > next) {
		this.io.setPointerField(this, 4, next);
		return this;
	}
	/// C type : AVBitStreamFilter*
	public final Pointer<AVBitStreamFilter > next_$eq(Pointer<AVBitStreamFilter > next) {
		next(next);
		return next;
	}
	/// <i>native declaration : libavcodec/avcodec.h</i>
	public static abstract class filter_callback extends Callback<filter_callback > {
		public abstract int apply(Pointer<AVBitStreamFilterContext > bsfc, Pointer<AVCodecContext > avctx, Pointer<Byte > args, Pointer<Pointer<Byte > > poutbuf, Pointer<Integer > poutbuf_size, Pointer<Byte > buf, int buf_size, int keyframe);
	};
	/// <i>native declaration : libavcodec/avcodec.h</i>
	public static abstract class close_callback extends Callback<close_callback > {
		public abstract void apply(Pointer<AVBitStreamFilterContext > bsfc);
	};
}
