/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under GNU GENERAL PUBLIC LICENSE Version 3.
*/
package com.ttProject.transcode.xuggle.packet;
import com.ttProject.media.Unit;
import com.ttProject.transcode.exception.FormatChangeException;
import com.xuggle.xuggler.IPacket;
import com.xuggle.xuggler.IStreamCoder;
/**
* mediaのunitデータをxuggleのpacketに変換するプログラムのインターフェイス
* @author taktod
*/
public interface IPacketizer {
/**
* mediaDataの正当性を確認します。
* 正当でない場合はあらかじめエラーを返します。
* @param unit 確認するデータunit
* @return true:問題ない場合 false:処理対象でない場合
* @throws FormatChangeException データフォーマットが変更していて処理できない場合
*/
public boolean check(Unit unit) throws FormatChangeException;
/**
* packetデータを応答します
* @param unit メディアUnit
* @param packet 既存のpacketメモリーを使い回す場合(使い回すとGCを遅らせることが可能です)
* @return 生成したパケットデータを応答します
* @throws Exception
*/
public IPacket getPacket(Unit unit, IPacket packet) throws Exception;
/**
* デコーダーを応答します
* @return 処理パケットに対応するデコーダーを応答
* @throws Exception
*/
public IStreamCoder createDecoder() throws Exception;
/**
* 後始末
*/
public void close();
}