クラス


MAFlashingLightsProcessor


フレームバッファ オブジェクトを処理して、一連の点滅ライトを検出して暗くするクラス。



iOS 17.0+ iPadOS 17.0+ macOS 14.0+ Mac Catalyst 17.0+ tvOS 17.0+ visionOS 1.0+   Beta  

class MAFlashingLightsProcessor : NSObject






概観


[薄暗く点滅するライト] 設定がオンになっているデバイスは、ビデオコンテンツ内で点滅エフェクトシーケンスを検出すると、その明るさを自動的に薄暗くします。あなたのアプリが AVFoundation API を使用する代わりにカスタムビデオ描画を実行する場合は、MAFlashingLightsProcessor クラスを使用して、あなたのビデオコンテンツ内の一連の点滅効果を検出して軽減できます。


以下の例は、コアビデオ (Core Video) API を使用するコードに MAFlashingLightsProcessor を組み込む方法を示しています。


  1. import MediaAccessibility
  2. import CoreVideo
  3. import OSLog
  4. private let processor = MAFlashingLightsProcessor()
  5. private let logger = Logger()
  6. func readVideoBuffer() {
  7. // Confirm that the Dim Flashing Lights setting is on before processing video.
  8. if !MADimFlashingLightsEnabled() { return }
  9. // Retrieve the CVPixelBuffer from your video content.
  10. // ...
  11. // Get the IOSurface that backs the pixel buffer.
  12. guard let inSurface = CVPixelBufferGetIOSurface(pixelBuffer)?.takeUnretainedValue() else {
  13. logger.debug("Can't initialize input surface.")
  14. return
  15. }
  16. // Use the properties of the pixel buffer to initialize an output IOSurface.
  17. guard var outSurface = IOSurface(properties: [
  18. .width: CVPixelBufferGetWidth(pixelBuffer),
  19. .height: CVPixelBufferGetHeight(pixelBuffer),
  20. .bytesPerRow: CVPixelBufferGetWidth(pixelBuffer) * 4,
  21. .bytesPerElement: 4,
  22. .pixelFormat: CVPixelBufferGetPixelFormatType(pixelBuffer)
  23. ]) as IOSurfaceRef? else {
  24. logger.debug("Can't initialize output surface.")
  25. return
  26. }
  27. // Verify that the input IOSurface is compatible with the flashing lights processor.
  28. if processor.canProcessSurface(inSurface) {
  29. // Analyze input IOSurface for flashing light sequences
  30. // and write mitigated content to output IOSurface.
  31. let result = processor.processSurface(inSurface, outSurface: &outSurface,
  32. timestamp: CFAbsoluteTimeGetCurrent())
  33. if result.surfaceProcessed {
  34. logger.debug("""
  35. Processed content with flashing lights intensity \(result.intensityLevel)
  36. and mitigated output with mitigation level \(result.mitigationLevel).
  37. """)
  38. // Convert the mitigated output surface back to CVPixelBuffer
  39. // and draw the video content.
  40. // ...
  41. } else {
  42. logger.debug("Can't process input surface.")
  43. }
  44. }
  45. }


詳細については、ライトの点滅 を参照してください。






トピックス


互換性チェック


func canProcessSurface(IOSurfaceRef) -> Bool

点滅するライトのプロセッサが一連の点滅するライトの表面内のコンテンツを処理できるかどうかを示すブール値を返します。



ビデオコンテンツの処理


func processSurface(IOSurfaceRef, outSurface: inout IOSurfaceRef, timestamp: CFAbsoluteTime, options: [MAFlashingLightsProcessor.OptionKey : Any]?) -> MAFlashingLightsProcessor.Result

一連の点滅するライトのピクセルを分析することで表面を処理し、コンテンツを薄暗くすることでそれらを軽減します。


struct MAFlashingLightsProcessor.Result

点滅するライトのプロセッサの結果を報告するオブジェクト。


struct MAFlashingLightsProcessor.OptionKey

点滅するライトプロセッサのオプション。






関連


以下からの継承


NSObject






以下も見よ


薄暗く点滅するライト


{}   点滅ライトの設定変更への対応

人が Apple デバイスの点滅ライトを薄暗くすることを選択した場合に、あなたの UI を調整して下さい。


func MADimFlashingLightsEnabled() -> Bool

デバイスでライトの点滅設定が有効かどうかを示すブール値を返します。


class MAFlashingLightsProcessor

フレームバッファ オブジェクトを処理して、一連の点滅ライトを検出して暗くするクラス。















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ