/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.media.vp6; import java.nio.ByteBuffer; import com.ttProject.media.IVideoData; import com.ttProject.media.Unit; import com.ttProject.media.extra.Bit1; import com.ttProject.media.extra.Bit6; import com.ttProject.media.vp6.frame.IntraFrame; /** * on2Vp6のコーデックの映像の内容を解析します。 * @see http://wiki.multimedia.cx/index.php?title=On2_VP6 * 00 78 46 0F 14 0F 14 3F 6E E8 CB 01 8D C9 89 26 9E AD 53 6F 33 FD DD F2 BF AB F6 ED FB 1C * flvにはいっているvp6のデータの先頭は、終端にくる必要があるらしい。 * よって解析データは78から・・・となります。 * @author taktod */ public abstract class Frame extends Unit implements IVideoData { private Bit1 frameMode; private Bit6 qp; private Bit1 marker; private IntraFrame keyFrame = null; public Frame(Bit1 frameMode, Bit6 qp, Bit1 marker) { super(0, 0); this.frameMode = frameMode; this.qp = qp; this.marker = marker; } public void setLastKeyFrame(IntraFrame frame) { this.keyFrame = frame; } @Override public long getPts() { return 0; } @Override public long getDts() { return 0; } @Override public double getTimebase() { return 0; } @Override public ByteBuffer getRawData() throws Exception { return null; } protected Bit1 getFrameMode() { return frameMode; } protected Bit6 getQp() { return qp; } protected Bit1 getMarker() { return marker; } @Override public int getHeight() { if(keyFrame != null) { return keyFrame.getHeight(); } return -1; } @Override public int getWidth() { if(keyFrame != null) { return keyFrame.getWidth(); } return -1; } @Override public String toString() { StringBuilder data = new StringBuilder(); data.append(getClass().getSimpleName()); data.append(" width:").append(getWidth()); data.append(" height:").append(getHeight()); return data.toString(); } }