static final int STATUS_SLEEPING = 4;
static final int STATUS_FINISHED = 5;
static final int STATUS_ERROR = 6;
+ static final int STATUS_RELEASED = 7;
private String mName;
}
final synchronized void performProcess(FilterContext context) {
+ if (mStatus == STATUS_RELEASED) {
+ throw new RuntimeException("Filter " + this + " is already torn down!");
+ }
transferInputFrames(context);
if (mStatus < STATUS_PROCESSING) {
performOpen(context);
}
}
+ final synchronized void performTearDown(FilterContext context) {
+ performClose(context);
+ if (mStatus != STATUS_RELEASED) {
+ tearDown(context);
+ mStatus = STATUS_RELEASED;
+ }
+ }
+
synchronized final boolean canProcess() {
if (mLogVerbose) Log.v(TAG, "Checking if can process: " + this + " (" + mStatus + ").");
if (mStatus <= STATUS_PROCESSING) {