View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Vídeos

Abrir menu Fechar menu
  • Coleções
  • Todos os vídeos
  • Sobre

Mais vídeos

  • Sobre
  • Código
  • Edit and play back HDR video with AVFoundation

    Find out how you can support HDR editing and playback in your macOS app, and how you can determine if a specific hardware configuration is eligible for HDR playback. We'll show you how to use AVMutableVideoComposition with the built-in compositor and easily edit HDR content, explain how you can use Core Image's built-in image filters to create your own AVMutableVideoComposition, and demonstrate how to create and use a custom compositor to enable HDR editing.

    Recursos

    • Editing and playing HDR video
    • AVFoundation
      • Vídeo HD
      • Vídeo SD

    Vídeos relacionados

    Tech Talks

    • Discover Reference Mode

    WWDC22

    • Display HDR video in EDR with AVFoundation and Metal

    WWDC21

    • Explore HDR rendering with EDR
    • Explore low-latency video encoding with VideoToolbox
    • What’s new in camera capture
  • Buscar neste vídeo...
    • 6:43 - Create AVVideoComposition with custom compositor class

      // Create AVVideoComposition with custom compositor class
      let videoComposition = AVMutableVideoComposition()
      
      videoComposition.instructions = [videoCompositionInstruction]
      videoComposition.frameDuration = CMTimeMake(value: 1, timescale: 30)
      videoComposition.renderSize = assetSize
    • 9:55 - Create AVVideoComposition using “applyingCIFiltersWithHandler”

      // Create AVVideoComposition using “applyingCIFiltersWithHandler”
      
      let videoComposition = 
       AVMutableVideoComposition(asset: asset, 
       applyingCIFiltersWithHandler: {
           (request: AVAsynchronousCIImageFilteringRequest) -> Void in
           
           let ciFilter = CIFilter(name: “CIZoomBlur”)
      
           ciFilter!.setValue(request.sourceImage, forKey: kCIInputImageKey)
      		 
               request.finish(with: ciFilter!.outputImage!, context: nil)
           })
    • 10:57 - First CIKernel

      // HDRHighlight.metal
      
      #include <metal_stdlib>
      #include <CoreImage/CoreImage.h>
      using namespace metal;
      
      extern “C” float4 HDRHighlight(coreimage::sample_t s, coreimage::destination dest) {       
      	
          if (s.r > 1.0 || s.g > 1.0 || s.b > 1.0)
      		return float4(2.0, 0.0, 0.0, 1.0);
      	else
      		return s;
      }
    • 11:22 - Color Inverter CI Kernel

      // ColorInverter.metal - not HDR ready
      
      #include <metal_stdlib>
      #include <CoreImage/CoreImage.h>
      using namespace metal;
      
      extern “C” float4 ColorInverter(coreimage::sample_t s, coreimage::destination dest) {       
      	
      	return float4(1.0 - s.r, 1.0 - s.g, 1.0 - s.b, 1.0);
      }
    • 12:23 - Custom compositor class

      // Custom compositor class
      class SampleCustomCompositor: NSObject, AVVideoCompositing {
      …
      }
      
      
      // Create AVVideoComposition with custom compositor class
      let videoComposition = AVMutableVideoComposition()
      
      videoComposition.instructions = [videoCompositionInstruction]
      videoComposition.frameDuration = CMTimeMake(value: 1, timescale: 30)
      videoComposition.renderSize = assetSize
      
      videoComposition.customVideoCompositorClass = SampleCustomCompositor.self
    • 13:58 - Setting custom compositor to support HDR

      // Setting custom compositor to support HDR
      
      class SampleCustomCompositor: NSObject, AVVideoCompositing {
      	var sourcePixelBufferAttributes: [String : Any]? =
          [kCVPixelBufferPixelFormatTypeKey as String:
                          [kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange]]
      
      	var requiredPixelBufferAttributesForRenderContext: [String : Any] =
      			[kCVPixelBufferPixelFormatTypeKey as String: 
                                  [kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange]]
      
      	var supportsHDRSourceFrames = true
          var supportsWideColorSourceFrames = true
      
      	func startRequest(_ request: AVAsynchronousVideoCompositionRequest) {
      			 ...
      	}
      
      	func renderContextChanged(_ newRenderContext: AVVideoCompositionRenderContext) {
      	}
      }
    • 21:01 - AVPlayer API definition

      // API definition 
      extension AVPlayer {
          @available(macOS 10.15, *)
          open class var eligibleForHDRPlayback: Bool { get }
      }
    • 21:41 - AVPlayer API definition 2

      // API definition 
      extension AVPlayer {
          @available(macOS 10.15, *)
          open class var eligibleForHDRPlayback: Bool { get }
      }
      
      // Set video composition color properties based on HDR playback eligibility 
      if AVPlayer.eligibleForHDRPlayback {
           videoComposition.colorPrimaries = AVVideoColorPrimaries_ITU_R_2020
      	 videoComposition.colorTransferFunction = AVVideoTransferFunction_ITU_R_2100_HLG
      	 videoComposition.colorYCbCrMatrix = AVVideoYCbCrMatrix_ITU_R_2020
      }
      else {
      	 videoComposition.colorPrimaries = AVVideoColorPrimaries_ITU_R_709_2
      	 videoComposition.colorTransferFunction = AVVideoTransferFunction_ITU_R_709_2
      	 videoComposition.colorYCbCrMatrix = AVVideoYCbCrMatrix_ITU_R_709_2
      }

Developer Footer

  • Vídeos
  • WWDC20
  • Edit and play back HDR video with AVFoundation
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines