Class AVSampleBufferRenderSynchronizer

  • All Implemented Interfaces:
    NSObject

    public class AVSampleBufferRenderSynchronizer
    extends NSObject
    AVSampleBufferRenderSynchronizer AVSampleBufferRenderSynchronizer can synchronize multiple objects conforming to AVQueuedSampleBufferRendering to a single timebase.
    • Constructor Detail

      • AVSampleBufferRenderSynchronizer

        protected AVSampleBufferRenderSynchronizer​(org.moe.natj.general.Pointer peer)
    • Method Detail

      • accessInstanceVariablesDirectly

        public static boolean accessInstanceVariablesDirectly()
      • addBoundaryTimeObserverForTimesQueueUsingBlock

        public java.lang.Object addBoundaryTimeObserverForTimesQueueUsingBlock​(NSArray<? extends NSValue> times,
                                                                               NSObject queue,
                                                                               AVSampleBufferRenderSynchronizer.Block_addBoundaryTimeObserverForTimesQueueUsingBlock block)
        addBoundaryTimeObserverForTimes:queue:usingBlock: 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.
        Parameters:
        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.
        Returns:
        An object conforming to the NSObject protocol. You must retain this returned value as long as you want the time observer to be invoked by the synchronizer. Pass this object to -removeTimeObserver: to cancel time observation.
      • addPeriodicTimeObserverForIntervalQueueUsingBlock

        public java.lang.Object addPeriodicTimeObserverForIntervalQueueUsingBlock​(CMTime interval,
                                                                                  NSObject queue,
                                                                                  AVSampleBufferRenderSynchronizer.Block_addPeriodicTimeObserverForIntervalQueueUsingBlock block)
        addPeriodicTimeObserverForInterval:queue:usingBlock: 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.
        Parameters:
        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.
        Returns:
        An object conforming to the NSObject protocol. You must retain this returned value as long as you want the time observer to be invoked by the synchronizer. Pass this object to -removeTimeObserver: to cancel time observation.
      • addRenderer

        public void addRenderer​(AVQueuedSampleBufferRendering renderer)
        addRenderer: 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.
        Parameters:
        renderer - An object conforming to AVQueuedSampleBufferRendering to be synchronized by this synchronizer.
      • allocWithZone

        public static java.lang.Object allocWithZone​(org.moe.natj.general.ptr.VoidPtr zone)
      • automaticallyNotifiesObserversForKey

        public static boolean automaticallyNotifiesObserversForKey​(java.lang.String key)
      • cancelPreviousPerformRequestsWithTarget

        public static void cancelPreviousPerformRequestsWithTarget​(java.lang.Object aTarget)
      • cancelPreviousPerformRequestsWithTargetSelectorObject

        public static void cancelPreviousPerformRequestsWithTargetSelectorObject​(java.lang.Object aTarget,
                                                                                 org.moe.natj.objc.SEL aSelector,
                                                                                 java.lang.Object anArgument)
      • classFallbacksForKeyedArchiver

        public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
      • classForKeyedUnarchiver

        public static org.moe.natj.objc.Class classForKeyedUnarchiver()
      • debugDescription_static

        public static java.lang.String debugDescription_static()
      • description_static

        public static java.lang.String description_static()
      • hash_static

        public static long hash_static()
      • instanceMethodSignatureForSelector

        public static NSMethodSignature instanceMethodSignatureForSelector​(org.moe.natj.objc.SEL aSelector)
      • instancesRespondToSelector

        public static boolean instancesRespondToSelector​(org.moe.natj.objc.SEL aSelector)
      • isSubclassOfClass

        public static boolean isSubclassOfClass​(org.moe.natj.objc.Class aClass)
      • keyPathsForValuesAffectingValueForKey

        public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey​(java.lang.String key)
      • new_objc

        public static java.lang.Object new_objc()
      • rate

        public float rate()
        [@property] 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.
      • removeRendererAtTimeCompletionHandler

        public void removeRendererAtTimeCompletionHandler​(AVQueuedSampleBufferRendering renderer,
                                                          CMTime time,
                                                          AVSampleBufferRenderSynchronizer.Block_removeRendererAtTimeCompletionHandler completionHandler)
        removeRenderer:atTime: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.
        Parameters:
        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.
      • removeTimeObserver

        public void removeTimeObserver​(java.lang.Object observer)
        removeTimeObserver: 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:.
        Parameters:
        observer - An object returned by a previous call to -addPeriodicTimeObserverForInterval:queue:usingBlock: or -addBoundaryTimeObserverForTimes:queue:usingBlock:.
      • renderers

        public NSArray<?> renderers()
        [@property] renderers Array of id currently attached to the synchronizer. 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.
      • resolveClassMethod

        public static boolean resolveClassMethod​(org.moe.natj.objc.SEL sel)
      • resolveInstanceMethod

        public static boolean resolveInstanceMethod​(org.moe.natj.objc.SEL sel)
      • setRate

        public void setRate​(float value)
        [@property] 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.
      • setRateTime

        public void setRateTime​(float rate,
                                CMTime time)
        setRate: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.
        Parameters:
        rate - A new timebase rate to set. Must be greater than or equal to 0.0
        time - A new time to set. Must be greater than or equal to kCMTimeZero, or kCMTimeInvalid
      • setVersion_static

        public static void setVersion_static​(long aVersion)
      • superclass_static

        public static org.moe.natj.objc.Class superclass_static()
      • timebase

        public CMTimebaseRef timebase()
        [@property] 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 master 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.
      • version_static

        public static long version_static()
      • currentTime

        public CMTime currentTime()
        currentTime Returns the current time of the synchronizer. Returns the current time of the synchronizer. Not key-value observable; use -addPeriodicTimeObserverForInterval:queue:usingBlock: instead.
        Returns:
        A CMTime