![JAR search and dependency download from the Maven repository](/logo.png)
com.bugvm.apple.coremedia.CMBufferQueue Maven / Gradle / Ivy
/*
* Copyright (C) 2013-2015 RoboVM AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.bugvm.apple.coremedia;
/**/
import java.io.*;
import java.nio.*;
import java.util.*;
import com.bugvm.objc.*;
import com.bugvm.objc.annotation.*;
import com.bugvm.objc.block.*;
import com.bugvm.rt.*;
import com.bugvm.rt.annotation.*;
import com.bugvm.rt.bro.*;
import com.bugvm.rt.bro.annotation.*;
import com.bugvm.rt.bro.ptr.*;
import com.bugvm.apple.foundation.*;
import com.bugvm.apple.corefoundation.*;
import com.bugvm.apple.dispatch.*;
import com.bugvm.apple.coreaudio.*;
import com.bugvm.apple.coregraphics.*;
import com.bugvm.apple.corevideo.*;
import com.bugvm.apple.audiotoolbox.*;
/* */
/**/
/* */
/**/@Library("CoreMedia")/* */
/**/public/* */ class /**/CMBufferQueue/* */
extends /**/CFType/* */
/**//* */ {
/**/public static class CMBufferQueuePtr extends Ptr {}/* */
public interface ResetCallback {
void reset(CMBuffer buffer);
}
public interface TriggerCallback {
void trigger(CMBufferQueueTriggerToken triggerToken);
}
public interface ValidationCallback {
void validate(CMBufferQueue bufferQueue, CMBuffer buffer);
}
public interface ForEachCallback {
void invoke(CMBuffer buffer) throws OSStatusException;
}
private static java.util.concurrent.atomic.AtomicLong refconId = new java.util.concurrent.atomic.AtomicLong();
private static java.util.concurrent.atomic.AtomicLong triggerId = new java.util.concurrent.atomic.AtomicLong();
private static final LongMap bufferQueueCallbacks = new LongMap<>();
private static final LongMap resetCallbacks = new LongMap<>();
private static final LongMap triggerCallbacks = new LongMap<>();
private static final LongMap validationCallbacks = new LongMap<>();
private static final LongMap forEachCallbacks = new LongMap<>();
private static final java.lang.reflect.Method cbGetDecodeTimeStamp;
private static final java.lang.reflect.Method cbGetPresentationTimeStamp;
private static final java.lang.reflect.Method cbGetDuration;
private static final java.lang.reflect.Method cbIsDataReady;
private static final java.lang.reflect.Method cbCompare;
private static final java.lang.reflect.Method cbGetSize;
private static final java.lang.reflect.Method cbReset;
private static final java.lang.reflect.Method cbTrigger;
private static final java.lang.reflect.Method cbValidate;
private static final java.lang.reflect.Method cbForEach;
static {
try {
cbGetDecodeTimeStamp = CMBufferQueue.class.getDeclaredMethod("cbGetDecodeTimeStamp", CFType.class, long.class);
cbGetPresentationTimeStamp = CMBufferQueue.class.getDeclaredMethod("cbGetPresentationTimeStamp", CFType.class, long.class);
cbGetDuration = CMBufferQueue.class.getDeclaredMethod("cbGetDuration", CFType.class, long.class);
cbIsDataReady = CMBufferQueue.class.getDeclaredMethod("cbIsDataReady", CFType.class, long.class);
cbCompare = CMBufferQueue.class.getDeclaredMethod("cbCompare", CFType.class, CFType.class, long.class);
cbGetSize = CMBufferQueue.class.getDeclaredMethod("cbGetSize", CFType.class, long.class);
cbReset = CMBufferQueue.class.getDeclaredMethod("cbReset", CFType.class, long.class);
cbTrigger = CMBufferQueue.class.getDeclaredMethod("cbTrigger", long.class, CMBufferQueueTriggerToken.class);
cbValidate = CMBufferQueue.class.getDeclaredMethod("cbValidate", CMBufferQueue.class, CFType.class, long.class);
cbForEach = CMBufferQueue.class.getDeclaredMethod("cbForEach", CFType.class, long.class);
} catch (Throwable e) {
throw new Error(e);
}
}
/**/static { Bro.bind(CMBufferQueue.class); }/* */
/**//* */
/**/
protected CMBufferQueue() {}
/* */
/**//* */
/**//* */
@Callback
private static CMTime cbGetDecodeTimeStamp(CFType buffer, @Pointer long refcon) {
CMBufferQueueCallbacks callback = null;
synchronized (bufferQueueCallbacks) {
callback = bufferQueueCallbacks.get(refcon);
}
return callback.getDecodeTimeStamp((CMBuffer)buffer);
}
@Callback
private static CMTime cbGetPresentationTimeStamp(CFType buffer, @Pointer long refcon) {
CMBufferQueueCallbacks callback = null;
synchronized (bufferQueueCallbacks) {
callback = bufferQueueCallbacks.get(refcon);
}
return callback.getPresentationTimeStamp((CMBuffer)buffer);
}
@Callback
private static CMTime cbGetDuration(CFType buffer, @Pointer long refcon) {
CMBufferQueueCallbacks callback = null;
synchronized (bufferQueueCallbacks) {
callback = bufferQueueCallbacks.get(refcon);
}
return callback.getDuration((CMBuffer)buffer);
}
@Callback
private static boolean cbIsDataReady(CFType buffer, @Pointer long refcon) {
CMBufferQueueCallbacks callback = null;
synchronized (bufferQueueCallbacks) {
callback = bufferQueueCallbacks.get(refcon);
}
return callback.isDataReady((CMBuffer)buffer);
}
@Callback
private static CFComparisonResult cbCompare(CFType buffer1, CFType buffer2, @Pointer long refcon) {
CMBufferQueueCallbacks callback = null;
synchronized (bufferQueueCallbacks) {
callback = bufferQueueCallbacks.get(refcon);
}
return callback.compare((CMBuffer)buffer1, (CMBuffer)buffer2);
}
@Callback
private static int cbGetSize(CFType buffer, @Pointer long refcon) {
CMBufferQueueCallbacks callback = null;
synchronized (bufferQueueCallbacks) {
callback = bufferQueueCallbacks.get(refcon);
}
return callback.getSize((CMBuffer)buffer);
}
@Callback
private static void cbReset(CFType buffer, @Pointer long refcon) {
ResetCallback callback = null;
synchronized (resetCallbacks) {
callback = resetCallbacks.get(refcon);
}
callback.reset((CMBuffer)buffer);
}
@Callback
private static void cbTrigger(@Pointer long refcon, CMBufferQueueTriggerToken triggerToken) {
TriggerCallback callback = null;
synchronized (triggerCallbacks) {
callback = triggerCallbacks.get(refcon);
}
callback.trigger(triggerToken);
}
@Callback
private static void cbValidate(CMBufferQueue bufferQueue, CFType buffer, @Pointer long refcon) {
ValidationCallback callback = null;
synchronized (validationCallbacks) {
callback = validationCallbacks.get(refcon);
}
callback.validate(bufferQueue, (CMBuffer)buffer);
}
@Callback
private static OSStatus cbForEach(CFType buffer, @Pointer long refcon) {
synchronized (forEachCallbacks) {
try {
forEachCallbacks.get(refcon).invoke((CMBuffer)buffer);
} catch (OSStatusException e) {
return e.getStatus();
}
return OSStatus.NO_ERR;
}
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public static CMBufferQueue create(@MachineSizedSInt long capacity, CMBufferQueueCallbacks callback) throws OSStatusException {
long refconId = CMBufferQueue.refconId.getAndIncrement();
CMBufferCallbacksStruct callbacks = new CMBufferCallbacksStruct();
callbacks.setRefcon(refconId);
callbacks.setGetDecodeTimeStamp(new FunctionPtr(cbGetDecodeTimeStamp));
callbacks.setGetPresentationTimeStamp(new FunctionPtr(cbGetPresentationTimeStamp));
callbacks.setGetDuration(new FunctionPtr(cbGetDuration));
callbacks.setIsDataReady(new FunctionPtr(cbIsDataReady));
callbacks.setCompare(new FunctionPtr(cbCompare));
callbacks.setGetSize(new FunctionPtr(cbGetSize));
CMBufferQueuePtr ptr = new CMBufferQueuePtr();
OSStatus status = create0(null, capacity, callbacks, ptr);
if (OSStatusException.throwIfNecessary(status)) {
synchronized (bufferQueueCallbacks) {
bufferQueueCallbacks.put(refconId, callback);
}
return ptr.get();
}
return null;
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void markEndOfData() throws OSStatusException {
OSStatus status = markEndOfData0();
OSStatusException.throwIfNecessary(status);
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void reset() throws OSStatusException {
OSStatus status = reset0();
OSStatusException.throwIfNecessary(status);
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void reset(ResetCallback callback) throws OSStatusException {
long refconId = CMBufferQueue.refconId.get();
OSStatus status = reset0(new FunctionPtr(cbReset), refconId);
if (OSStatusException.throwIfNecessary(status)) {
synchronized (resetCallbacks) {
resetCallbacks.put(refconId, callback);
}
}
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void installTrigger(TriggerCallback callback, CMBufferQueueTriggerCondition triggerCondition, @ByVal CMTime triggerTime) throws OSStatusException {
long refconId = CMBufferQueue.triggerId.getAndIncrement();
OSStatus status = installTrigger0(new FunctionPtr(cbTrigger), refconId, triggerCondition, triggerTime, null);
if (OSStatusException.throwIfNecessary(status)) {
synchronized (triggerCallbacks) {
triggerCallbacks.put(refconId, callback);
}
}
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void installTrigger(TriggerCallback callback, CMBufferQueueTriggerCondition triggerCondition, @MachineSizedSInt long triggerThreshold) throws OSStatusException {
long refconId = CMBufferQueue.triggerId.getAndIncrement();
OSStatus status = installTrigger0(new FunctionPtr(cbTrigger), refconId, triggerCondition, triggerThreshold, null);
if (OSStatusException.throwIfNecessary(status)) {
synchronized (triggerCallbacks) {
triggerCallbacks.put(refconId, callback);
}
}
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void removeTrigger(CMBufferQueueTriggerToken triggerToken) throws OSStatusException {
OSStatus status = removeTrigger0(triggerToken);
OSStatusException.throwIfNecessary(status);
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void callForEachBuffer(ForEachCallback callback) throws OSStatusException {
long refconId = CMBufferQueue.refconId.get();
OSStatus status = callForEachBuffer0(new FunctionPtr(cbReset), refconId);
if (OSStatusException.throwIfNecessary(status)) {
synchronized (forEachCallbacks) {
forEachCallbacks.put(refconId, callback);
}
}
}
/**
* @throws OSStatusException
* @since Available in iOS 4.0 and later.
*/
public void setValidationCallback(ValidationCallback callback) throws OSStatusException {
long refconId = CMBufferQueue.refconId.get();
OSStatus status = setValidationCallback0(new FunctionPtr(cbValidate), refconId);
if (OSStatusException.throwIfNecessary(status)) {
synchronized (validationCallbacks) {
validationCallbacks.put(refconId, callback);
}
}
}
/**/
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueCreate", optional=true)
protected static native OSStatus create0(CFAllocator allocator, @MachineSizedSInt long capacity, CMBufferCallbacksStruct callbacks, CMBufferQueue.CMBufferQueuePtr queueOut);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetTypeID", optional=true)
public static native @MachineSizedUInt long getClassTypeID();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueEnqueue", optional=true)
protected native OSStatus enqueue0(CFType buf);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueDequeueAndRetain", optional=true)
public native CFType dequeueAndRetain();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueDequeueIfDataReadyAndRetain", optional=true)
public native CFType dequeueIfDataReadyAndRetain();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetHead", optional=true)
public native CFType getHead();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueIsEmpty", optional=true)
public native boolean isEmpty();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueMarkEndOfData", optional=true)
protected native OSStatus markEndOfData0();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueContainsEndOfData", optional=true)
public native boolean containsEndOfData();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueIsAtEndOfData", optional=true)
public native boolean isAtEndOfData();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueReset", optional=true)
protected native OSStatus reset0();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueResetWithCallback", optional=true)
protected native OSStatus reset0(FunctionPtr callback, @Pointer long refcon);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetBufferCount", optional=true)
public native @MachineSizedSInt long getBufferCount();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetDuration", optional=true)
public native @ByVal CMTime getDuration();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetMinDecodeTimeStamp", optional=true)
public native @ByVal CMTime getMinDecodeTimeStamp();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetFirstDecodeTimeStamp", optional=true)
public native @ByVal CMTime getFirstDecodeTimeStamp();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetMinPresentationTimeStamp", optional=true)
public native @ByVal CMTime getMinPresentationTimeStamp();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetFirstPresentationTimeStamp", optional=true)
public native @ByVal CMTime getFirstPresentationTimeStamp();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetMaxPresentationTimeStamp", optional=true)
public native @ByVal CMTime getMaxPresentationTimeStamp();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueGetEndPresentationTimeStamp", optional=true)
public native @ByVal CMTime getEndPresentationTimeStamp();
/**
* @since Available in iOS 7.1 and later.
*/
@Bridge(symbol="CMBufferQueueGetTotalSize", optional=true)
public native @MachineSizedUInt long getTotalSize();
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueInstallTrigger", optional=true)
protected native OSStatus installTrigger0(FunctionPtr triggerCallback, @Pointer long triggerRefcon, CMBufferQueueTriggerCondition triggerCondition, @ByVal CMTime triggerTime, CMBufferQueueTriggerToken.CMBufferQueueTriggerTokenPtr triggerTokenOut);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueInstallTriggerWithIntegerThreshold", optional=true)
protected native OSStatus installTrigger0(FunctionPtr triggerCallback, @Pointer long triggerRefcon, CMBufferQueueTriggerCondition triggerCondition, @MachineSizedSInt long triggerThreshold, CMBufferQueueTriggerToken.CMBufferQueueTriggerTokenPtr triggerTokenOut);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueRemoveTrigger", optional=true)
protected native OSStatus removeTrigger0(CMBufferQueueTriggerToken triggerToken);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueTestTrigger", optional=true)
protected native boolean testTrigger0(CMBufferQueueTriggerToken triggerToken);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueCallForEachBuffer", optional=true)
protected native OSStatus callForEachBuffer0(FunctionPtr callback, @Pointer long refcon);
/**
* @since Available in iOS 4.0 and later.
*/
@Bridge(symbol="CMBufferQueueSetValidationCallback", optional=true)
protected native OSStatus setValidationCallback0(FunctionPtr validationCallback, @Pointer long validationRefCon);
/* */
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy