| Modifier and Type | Class and Description |
|---|---|
static interface |
AVSampleBufferRenderSynchronizer.Block_addBoundaryTimeObserverForTimesQueueUsingBlock |
static interface |
AVSampleBufferRenderSynchronizer.Block_addPeriodicTimeObserverForIntervalQueueUsingBlock |
static interface |
AVSampleBufferRenderSynchronizer.Block_removeRendererAtTimeCompletionHandler |
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
AVSampleBufferRenderSynchronizer(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
accessInstanceVariablesDirectly() |
java.lang.Object |
addBoundaryTimeObserverForTimesQueueUsingBlock(NSArray<? extends NSValue> times,
NSObject queue,
AVSampleBufferRenderSynchronizer.Block_addBoundaryTimeObserverForTimesQueueUsingBlock block)
addBoundaryTimeObserverForTimes:queue:usingBlock:
|
java.lang.Object |
addPeriodicTimeObserverForIntervalQueueUsingBlock(CMTime interval,
NSObject queue,
AVSampleBufferRenderSynchronizer.Block_addPeriodicTimeObserverForIntervalQueueUsingBlock block)
addPeriodicTimeObserverForInterval:queue:usingBlock:
|
void |
addRenderer(AVQueuedSampleBufferRendering renderer)
addRenderer:
|
static AVSampleBufferRenderSynchronizer |
alloc() |
static AVSampleBufferRenderSynchronizer |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument) |
static NSArray<java.lang.String> |
classFallbacksForKeyedArchiver() |
static org.moe.natj.objc.Class |
classForKeyedUnarchiver() |
CMTime |
currentTime()
currentTime
|
static java.lang.String |
debugDescription_static() |
boolean |
delaysRateChangeUntilHasSufficientMediaData()
[@property] delaysRateChangeUntilHasSufficientMediaData
|
static java.lang.String |
description_static() |
static long |
hash_static() |
AVSampleBufferRenderSynchronizer |
init() |
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
static AVSampleBufferRenderSynchronizer |
new_objc() |
float |
rate()
[@property] rate
|
void |
removeRendererAtTimeCompletionHandler(AVQueuedSampleBufferRendering renderer,
CMTime time,
AVSampleBufferRenderSynchronizer.Block_removeRendererAtTimeCompletionHandler completionHandler)
removeRenderer:atTime:completionHandler:
|
void |
removeTimeObserver(java.lang.Object observer)
removeTimeObserver:
|
NSArray<?> |
renderers()
[@property] renderers
|
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
void |
setDelaysRateChangeUntilHasSufficientMediaData(boolean value)
[@property] delaysRateChangeUntilHasSufficientMediaData
|
void |
setRate(float value)
[@property] rate
|
void |
setRateTime(float rate,
CMTime time)
setRate:time:
|
void |
setRateTimeAtHostTime(float rate,
CMTime time,
CMTime hostTime)
setRate:time:atHostTime:
|
static void |
setVersion_static(long aVersion) |
static org.moe.natj.objc.Class |
superclass_static() |
CMTimebaseRef |
timebase()
[@property] timebase
|
static long |
version_static() |
accessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKeyprotected AVSampleBufferRenderSynchronizer(org.moe.natj.general.Pointer peer)
public static boolean accessInstanceVariablesDirectly()
public java.lang.Object addBoundaryTimeObserverForTimesQueueUsingBlock(NSArray<? extends NSValue> times, NSObject queue, AVSampleBufferRenderSynchronizer.Block_addBoundaryTimeObserverForTimesQueueUsingBlock block)
Requests invocation of a block when specified times are traversed during normal rendering.
Each call to -addPeriodicTimeObserverForInterval:queue:usingBlock: should be paired with a corresponding call to -removeTimeObserver:. Releasing the observer object without a call to -removeTimeObserver: will result in undefined behavior.
times - The times for which the observer requests notification, supplied as an array of NSValues carrying CMTimes.queue - The serial queue onto which block should be enqueued. If you pass NULL, the main queue (obtained using dispatch_get_main_queue()) will be used. Passing a
concurrent queue to this method will result in undefined behavior.block - The block to be invoked when any of the specified times is crossed during normal rendering.public java.lang.Object addPeriodicTimeObserverForIntervalQueueUsingBlock(CMTime interval, NSObject queue, AVSampleBufferRenderSynchronizer.Block_addPeriodicTimeObserverForIntervalQueueUsingBlock block)
Requests invocation of a block during rendering to report changing time.
The block is invoked periodically at the interval specified, interpreted according to the timeline of the timebase. The block is also invoked whenever time jumps and whenever rendering starts or stops.
If the interval corresponds to a very short interval in real time, the synchronizer may invoke the block less frequently than requested. Even so, the synchronizer will invoke the block sufficiently often for the client to update indications of the current time appropriately in its end-user interface.
Each call to -addPeriodicTimeObserverForInterval:queue:usingBlock: should be paired with a corresponding call to -removeTimeObserver:. Releasing the observer object without a call to -removeTimeObserver: will result in undefined behavior.
interval - The interval of invocation of the block during normal rendering, according to progress of the current time of the timebase.queue - The serial queue onto which block should be enqueued. If you pass NULL, the main queue (obtained using dispatch_get_main_queue()) will be used. Passing a concurrent queue to this method will result in undefined behavior.block - The block to be invoked periodically.public void addRenderer(AVQueuedSampleBufferRendering renderer)
Adds a renderer to the list of renderers under the synchronizer's control.
Adds a renderer to begin operating with the synchronizer's timebase.
This method can be called while rate is non-0.0.
renderer - An object conforming to AVQueuedSampleBufferRendering to be synchronized by this synchronizer.public static AVSampleBufferRenderSynchronizer alloc()
public static AVSampleBufferRenderSynchronizer allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public static long hash_static()
public AVSampleBufferRenderSynchronizer init()
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public static AVSampleBufferRenderSynchronizer new_objc()
public float rate()
Playback rate.
Indicates the current rate of rendering. A value of 0.0 means "stopped"; a value of 1.0 means "play at the natural rate of the media". Must be greater than or equal to 0.0.
public void removeRendererAtTimeCompletionHandler(AVQueuedSampleBufferRendering renderer, CMTime time, AVSampleBufferRenderSynchronizer.Block_removeRendererAtTimeCompletionHandler completionHandler)
Removes a renderer from the list of renderers under the synchronizer's control.
This method can be called while rate is non-0.0.
time is used to schedule future removals. If the time is in the past, the renderer will be removed immediately. kCMTimeInvalid can also be used to force immediate removal.
This method removes the renderer asynchronously. The method can be called more than once, with a subsequent scheduled removal replacing a previously scheduled removal.
Clients may provide an optional completionHandler block to be notified when the scheduled removal completes. If provided, completionHandler will always be called with the following values for didRemoveRenderer:
- If the renderer has not been added to this synchronizer, completionHandler will be called and didRemoveRenderer will be NO. - If a removal of a particular renderer is scheduled after another removal of that same renderer has already been scheduled but not yet occurred, the previously-scheduled removal's completionHandler will be called and didRemoveRenderer will be NO. The new scheduled removal's completionHandler will not be called until it is replaced by another scheduled removal or the renderer is actually removed. - When the renderer is removed due to a scheduled removal, the completionHandler provided when that removal was scheduled will be called and didRemoveRenderer will be YES.
renderer - An object conforming to AVQueuedSampleBufferRendering currently synchronized by this synchronizer to no longer be synchronized by the synchronizer.time - The time on the timebase's timeline at which the renderer should be removed.completionHandler - Optional. A block called when the renderer is removed from the synchronizer. If provided, this block will always be called with didRemoveRenderer indicating whether the renderer was removed by this scheduled removal.public void removeTimeObserver(java.lang.Object observer)
Cancels a previously registered time observer.
Upon return, the caller is guaranteed that no new time observer blocks will begin executing. Depending on the calling thread and the queue used to add the time observer, an in-flight block may continue to execute after this method returns. You can guarantee synchronous time observer removal by enqueuing the call to -removeTimeObserver: on that queue. Alternatively, call dispatch_sync(queue, ^{}) after -removeTimeObserver: to wait for any in-flight blocks to finish executing. -removeTimeObserver: should be used to explicitly cancel each time observer added using -addPeriodicTimeObserverForInterval:queue:usingBlock: and -addBoundaryTimeObserverForTimes:queue:usingBlock:.
observer - An object returned by a previous call to -addPeriodicTimeObserverForInterval:queue:usingBlock: or -addBoundaryTimeObserverForTimes:queue:usingBlock:.public NSArray<?> renderers()
Array of id
A list of renderers added to and not removed from the synchronizer. The list also includes renderers that have been scheduled to be removed but have not yet been removed.
This property is not KVO observable.
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public void setRate(float value)
Playback rate.
Indicates the current rate of rendering. A value of 0.0 means "stopped"; a value of 1.0 means "play at the natural rate of the media". Must be greater than or equal to 0.0.
public void setRateTime(float rate,
CMTime time)
Sets the timebase's time and rate.
Sets the timebase's time to time and then sets the rendering rate to rate. A rate value of 0.0 means "stopped"; a rate value of 1.0 means "play at the natural rate of the media". Use kCMTimeInvalid for time to not modify the timebase's time.
rate - A new timebase rate to set. Must be greater than or equal to 0.0time - A new time to set. Must be greater than or equal to kCMTimeZero, or kCMTimeInvalidpublic static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public CMTimebaseRef timebase()
The synchronizer's rendering timebase, which governs how time stamps are interpreted.
By default, this timebase will be driven by the clock of an added AVSampleBufferAudioRenderer.
If no AVSampleBufferAudioRenderer has been added, the source clock will be the host time clock (mach_absolute_time with the appropriate timescale conversion; this is the same as Core Animation's CACurrentMediaTime).
The timebase is a read-only timebase. Use the rate property and corresponding methods to adjust the timebase.
public static long version_static()
public CMTime currentTime()
Returns the current time of the synchronizer.
Returns the current time of the synchronizer. Not key-value observable; use -addPeriodicTimeObserverForInterval:queue:usingBlock: instead.
public boolean delaysRateChangeUntilHasSufficientMediaData()
Indicates whether the playback should be started immediately on rate change request.
If set to YES, playback will be delayed if the value of hasSufficientMediaDataForReliablePlaybackStart of any added renderer is NO. If set to NO, playback will attempt to start immediately regardless of the value of hasSufficientMediaDataForReliablePlaybackStart of added renderers. Default is YES.
public void setDelaysRateChangeUntilHasSufficientMediaData(boolean value)
Indicates whether the playback should be started immediately on rate change request.
If set to YES, playback will be delayed if the value of hasSufficientMediaDataForReliablePlaybackStart of any added renderer is NO. If set to NO, playback will attempt to start immediately regardless of the value of hasSufficientMediaDataForReliablePlaybackStart of added renderers. Default is YES.
public void setRateTimeAtHostTime(float rate,
CMTime time,
CMTime hostTime)
Simultaneously sets the playback rate and the relationship between the current time and host time.
You can use this function to synchronize playback with an external activity.
The timebase is adjusted so that its time will be (or was) time when host time is (or was) hostTime. In other words: if hostTime is in the past, the timebase's time will be interpolated as though the timebase has been running at the requested rate since that time. If hostTime is in the future, the timebase will immediately start running at the requested rate from an earlier time so that it will reach the requested time at the requested hostTime. It is a responsibility of the client to ensure that proper time and hostTime is set. This method will not attempt to validate improper time, hostTime values. In addition, it is also the caller’s responsibility to enqueue samples in the connected renderers that match the timeline defined here. Note that any buffers that are in the past of the defined timeline will still be processed by the renderers.
The recommended approach is to use the output presentation time of the first buffer enqueued in the renderers as time and and an associated hostTime in the future. Example use: CMTime startTime = …; __block CMTime nextBufferTime = startTime; [renderer requestMediaDataWhenReadyOnQueue:queue usingBlock:^{ … CMSampleBufferRef sampleBuffer = [self generateSampleBufferFor: nextBufferTime]; [renderer enqueueSampleBuffer:sampleBuffer]; ... }]; CMTime inOneSecond = CMTimeAdd(CMClockGetTime(CMClockGetHostTimeClock()), CMTimeMake(1, 1)); [synchronizer setRate:rate time:startTime atHostTime:inOneSecond];
rate - A new timebase rate to set. Must be greater than or equal to 0.0time - A new timebase time to set. Must be greater than or equal to kCMTimeZero, or kCMTimeInvalidhostTime - A new hostTime to set. Must be greater than or equal to kCMTimeZero, or kCMTimeInvalid