package com.nativelibs4java.ffmpeg.avfilter;
import org.bridj.Pointer;
import org.bridj.StructObject;
import org.bridj.ann.Array;
import org.bridj.ann.Field;
import org.bridj.ann.Library;
/**
 * <i>native declaration : libavfilter/avfilter.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.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 AVFilterBufferRef extends StructObject {
	public AVFilterBufferRef() {
		super();
	}
	public AVFilterBufferRef(Pointer pointer) {
		super(pointer);
	}
	/**
	 * < the buffer that this is a reference to<br>
	 * C type : AVFilterBuffer*
	 */
	@Field(0) 
	public Pointer<AVFilterBuffer > buf() {
		return this.io.getPointerField(this, 0);
	}
	/**
	 * < the buffer that this is a reference to<br>
	 * C type : AVFilterBuffer*
	 */
	@Field(0) 
	public AVFilterBufferRef buf(Pointer<AVFilterBuffer > buf) {
		this.io.setPointerField(this, 0, buf);
		return this;
	}
	/// C type : AVFilterBuffer*
	public final Pointer<AVFilterBuffer > buf_$eq(Pointer<AVFilterBuffer > buf) {
		buf(buf);
		return buf;
	}
	/**
	 * < picture/audio data for each plane<br>
	 * C type : uint8_t*[8]
	 */
	@Array({8}) 
	@Field(1) 
	public Pointer<Pointer<Byte > > data() {
		return this.io.getPointerField(this, 1);
	}
	/**
	 * < number of bytes per line<br>
	 * C type : int[8]
	 */
	@Array({8}) 
	@Field(2) 
	public Pointer<Integer > linesize() {
		return this.io.getPointerField(this, 2);
	}
	/// < media format
	@Field(3) 
	public int format() {
		return this.io.getIntField(this, 3);
	}
	/// < media format
	@Field(3) 
	public AVFilterBufferRef format(int format) {
		this.io.setIntField(this, 3, format);
		return this;
	}
	public final int format_$eq(int format) {
		format(format);
		return format;
	}
	/**
	 * presentation timestamp. The time unit may change during<br>
	 * filtering, as it is specified in the link and the filter code<br>
	 * may need to rescale the PTS accordingly.
	 */
	@Field(4) 
	public long pts() {
		return this.io.getLongField(this, 4);
	}
	/**
	 * presentation timestamp. The time unit may change during<br>
	 * filtering, as it is specified in the link and the filter code<br>
	 * may need to rescale the PTS accordingly.
	 */
	@Field(4) 
	public AVFilterBufferRef pts(long pts) {
		this.io.setLongField(this, 4, pts);
		return this;
	}
	public final long pts_$eq(long pts) {
		pts(pts);
		return pts;
	}
	/// < byte position in stream, -1 if unknown
	@Field(5) 
	public long pos() {
		return this.io.getLongField(this, 5);
	}
	/// < byte position in stream, -1 if unknown
	@Field(5) 
	public AVFilterBufferRef pos(long pos) {
		this.io.setLongField(this, 5, pos);
		return this;
	}
	public final long pos_$eq(long pos) {
		pos(pos);
		return pos;
	}
	/// < permissions, see the AV_PERM_* flags
	@Field(6) 
	public int perms() {
		return this.io.getIntField(this, 6);
	}
	/// < permissions, see the AV_PERM_* flags
	@Field(6) 
	public AVFilterBufferRef perms(int perms) {
		this.io.setIntField(this, 6, perms);
		return this;
	}
	public final int perms_$eq(int perms) {
		perms(perms);
		return perms;
	}
	/**
	 * < video buffer specific properties<br>
	 * C type : AVFilterBufferRefVideoProps*
	 */
	@Field(8) 
	public Pointer<AVFilterBufferRefVideoProps > video() {
		return this.io.getPointerField(this, 8);
	}
	/**
	 * < video buffer specific properties<br>
	 * C type : AVFilterBufferRefVideoProps*
	 */
	@Field(8) 
	public AVFilterBufferRef video(Pointer<AVFilterBufferRefVideoProps > video) {
		this.io.setPointerField(this, 8, video);
		return this;
	}
	/// C type : AVFilterBufferRefVideoProps*
	public final Pointer<AVFilterBufferRefVideoProps > video_$eq(Pointer<AVFilterBufferRefVideoProps > video) {
		video(video);
		return video;
	}
	/**
	 * < audio buffer specific properties<br>
	 * C type : AVFilterBufferRefAudioProps*
	 */
	@Field(9) 
	public Pointer<AVFilterBufferRefAudioProps > audio() {
		return this.io.getPointerField(this, 9);
	}
	/**
	 * < audio buffer specific properties<br>
	 * C type : AVFilterBufferRefAudioProps*
	 */
	@Field(9) 
	public AVFilterBufferRef audio(Pointer<AVFilterBufferRefAudioProps > audio) {
		this.io.setPointerField(this, 9, audio);
		return this;
	}
	/// C type : AVFilterBufferRefAudioProps*
	public final Pointer<AVFilterBufferRefAudioProps > audio_$eq(Pointer<AVFilterBufferRefAudioProps > audio) {
		audio(audio);
		return audio;
	}
}
