/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.frame.vp9; import java.nio.ByteBuffer; import org.apache.log4j.Logger; import com.ttProject.frame.CodecType; import com.ttProject.frame.VideoFrame; import com.ttProject.frame.vp9.type.KeyFrame; import com.ttProject.unit.extra.BitConnector; import com.ttProject.unit.extra.bit.Bit1; import com.ttProject.unit.extra.bit.Bit2; /** * base for vp9 frame. * @author taktod */ public abstract class Vp9Frame extends VideoFrame { /** logger */ @SuppressWarnings("unused") private Logger logger = Logger.getLogger(Vp9Frame.class); private final Bit2 frameMarker; private final Bit1 profile; private final Bit1 reserved; private final Bit1 refFlag; private final Bit1 keyFrameFlag; // flip? private final Bit1 invisibleFlag; // flip? private final Bit1 errorRes; /** keyFrame object for ref */ private KeyFrame keyFrame = null; /** * constructor * @param frameMarker * @param profile * @param reserved * @param refFlag * @param keyFrameFlag * @param invisibleFlag * @param errorRes */ public Vp9Frame(Bit2 frameMarker, Bit1 profile, Bit1 reserved, Bit1 refFlag, Bit1 keyFrameFlag, Bit1 invisibleFlag, Bit1 errorRes) { this.frameMarker = frameMarker; this.profile = profile; this.reserved = reserved; this.refFlag = refFlag; this.keyFrameFlag = keyFrameFlag; this.invisibleFlag = invisibleFlag; this.errorRes = errorRes; } public void setKeyFrame(KeyFrame keyFrame) { this.keyFrame = keyFrame; } protected KeyFrame getKeyFrame() { return keyFrame; } protected ByteBuffer getHeaderBuffer() { BitConnector connector = new BitConnector(); return connector.connect( frameMarker, profile, reserved, refFlag, keyFrameFlag, invisibleFlag, errorRes ); } /** * is invisible? * @return */ public boolean isInvisible() { return invisibleFlag.get() == 0; } /** * {@inheritDoc} */ @Override public CodecType getCodecType() { return CodecType.VP9; } }