/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under The MIT license.
*/
package com.ttProject.frame.vp8;
import java.nio.ByteBuffer;
import org.apache.log4j.Logger;
import com.ttProject.frame.CodecType;
import com.ttProject.frame.VideoFrame;
import com.ttProject.frame.vp8.type.KeyFrame;
import com.ttProject.unit.extra.BitConnector;
import com.ttProject.unit.extra.bit.Bit1;
import com.ttProject.unit.extra.bit.Bit19;
import com.ttProject.unit.extra.bit.Bit3;
/**
* base for vp8 frame
* @author taktod
*/
public abstract class Vp8Frame extends VideoFrame {
/** logger */
@SuppressWarnings("unused")
private Logger logger = Logger.getLogger(Vp8Frame.class);
private final Bit1 frameType; // 0:keyFrame
private final Bit3 version;
private final Bit1 showFrame; // flag for invisible?
private final Bit19 firstPartSize;
/** keyFrame object for ref */
private KeyFrame keyFrame = null;
/**
* constructor
* @param frameType
* @param version
* @param showFrame
* @param firstPartSize
*/
public Vp8Frame(Bit1 frameType, Bit3 version, Bit1 showFrame, Bit19 firstPartSize) {
this.frameType = frameType;
this.version = version;
this.showFrame = showFrame;
this.firstPartSize = firstPartSize;
}
/**
* set the keyFrame
* @param keyFrame
*/
public void setKeyFrame(KeyFrame keyFrame) {
this.keyFrame = keyFrame;
super.setWidth(keyFrame.getWidth());
super.setHeight(keyFrame.getHeight());
}
/**
* ref the keyFrame.
* @return
*/
protected KeyFrame getKeyFrame() {
return keyFrame;
}
protected ByteBuffer getHeaderBuffer() {
BitConnector connector = new BitConnector();
connector.setLittleEndianFlg(true);
return connector.connect(frameType, version, showFrame, firstPartSize);
}
/**
* ref the invisible?
* @return
*/
public boolean isInvisible() {
return showFrame.get() != 1;
}
/**
* {@inheritDoc}
*/
@Override
public CodecType getCodecType() {
return CodecType.VP8;
}
}