Core Video: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
mNo edit summary
Tags: Mobile edit Mobile app edit iOS app edit
 
(27 intermediate revisions by 23 users not shown)
Line 1: Line 1:
{{Short description|Video processing model used in macOS}}
{| border="0" cellpadding="0" align="right" cellspacing="0"
{{Use mdy dates|date=October 2013}}
|-
{{Mac OS X graphics model
!
|logo= [[File:Macosx audiovideo corevideo 20091030.png|Core Video]]
!
}}
{| class="infobox" style="width: 31em;"
|- style="background:#AADDBB" align="center"
| style="border-bottom: 2px solid #ccffcc"" | '''Mac OS X Graphics Model'''
|-
| [[Image:Apple_Core_Video_Icon_175px.png|Core Video|48px]]
|- style="background:#ccffcc"
| Rendering
|-
| [[QuickDraw]] • [[OpenGL]] • [[Quartz 2D]] • [[Core Image]] • Core Video
|- style="background:#ccffcc"
| Compositing
|-
|
[[Quartz Compositor]]
|}
|}


'''Core Video''' is the video processing model used by [[QuickTime | QuickTime 7]] on Mac OS X to interface with the rendering and compositing layers in its graphics model. It delivers the images from QuickTime or other video source to the rest of the [[Quartz (graphics layer) | Quartz technologies]] in Mac OS X.<ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - Core Video Concepts | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_1.html | accessdate=2007-04-18}}</ref>
'''Core Video''' is the video processing model employed by [[macOS]]. It links the process of decompressing frames from a video source to the rest of the [[Quartz (graphics layer) | Quartz technologies]] for image rendering and composition. Both [[QuickTime X]] and [[QuickTime | QuickTime 7]] depend on Core Video.<ref name="progguide">{{cite web | title=Mac Dev Center - Core Video Programming Guide - Introduction to Core Video Programming Guide | url=https://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Intro/CVProg_Intro.html | access-date=September 24, 2009}}</ref>


== Overview ==
== Overview ==
Core Video provides both a buffering model and a playback synchronization solution within its processing pipeline. A video source provides a decompressed data stream to be rendered as images within a visual context in [[Quartz 2D]]. Core Video can be thought of as the link between this video source and its display context. Rendered images can be further processed by [[Core Image]] before being composed into a final scene with [[Quartz Compositor]]. As part of the composition process, Core Video maintains a ''frame buffer'', keeping a pool of rendered, composed frames ready for playback. To ensure smooth playback, Core Video uses a high-priority thread to maintain its frame buffer. This ''display link'' runs independently from the application which invokes video playback, and it compensates for different display refresh rates and latency.<ref>{{cite web | title=Mac Dev Center - Core Video Programming Guide - Core Video Concepts | url=https://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/CVProg_Concepts.html#//apple_ref/doc/uid/TP40001536-CH202-BABJDFHJ | access-date=September 24, 2009}}</ref>
QuickTime 7 is the first version to fully use the Quartz technologies, and it provides Core Video with decompressed video frames for display.<ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - Introduction to Core Video Programming Guide | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Intro/chapter_1_section_1.html
| accessdate=2007-04-18}}</ref> The processing pipeline in Core Video offers both a buffering model and synchronization solution to ensure smooth playback.<ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - Core Video Concepts | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_1.html
| accessdate=2007-04-18}}</ref>


Because QuickTime 7 employed Core Video, it was the first version of QuickTime to implement the rendering capability of Quartz. Previous versions of QuickTime used [[QuickDraw]] for rendering. Although Core Video typically interacts with QuickTime, it can interact with any video source.<ref name="progguide" />
Core Video can be thought of as the link between a video source and a display context in Quartz 2D. Since Core Video is responsible for passing the video frame data as images into the drawing context, it can maintain a buffer of image data - the ''frame buffer'', feeding that data into Quartz 2D for rendering. Images can be further processed by [[Core Image]] filters before being composed into a final scene with [[Quartz Compositor]]. The Compositor places the images on an OpenGL surface, and Core Video maintains the timing of the flow of images onto the surface with its built-in timer, the ''display link''. The result is that video playback from QuickTime is placed on an OpenGL surface, thus Core Video replaces older QuickTime methods for interacting with QuickDraw.<ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - The Core Video Pipeline | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_2.html | accessdate=2007-04-18}}</ref><ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - The Display Link | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_3.html
| accessdate=2007-04-18}}</ref><ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - Buffer Management | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_4.html
| accessdate=2007-04-18}}</ref>


Core Video benefits from graphics processor (GPU) rendering and composition provided by Quartz GL, Core Image, and [[Quartz Extreme]], since final playback is composed on an OpenGL surface.<ref name="progguide" />
Although Core Video's frame buffer designed to interact with QuickTime 7, it can interact with any video source.<ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - The Display Link | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_3.html
| accessdate=2007-04-18}}</ref><ref>{{cite web | title=Apple - Developer - Core Video Programming Guide - Buffer Management | url=http://developer.apple.com/documentation/GraphicsImaging/Conceptual/CoreVideo/CVProg_Concepts/chapter_2_section_4.html
| accessdate=2007-04-18}}</ref>


== History ==
== History ==
Although Core Video was introduced with the release of [[Mac OS X v10.4]], it is included in the installation of QuickTime 7 on Mac OS X; thus, Core Video is available for Mac OS X 10.3.9 with QuickTime 7 installed as well.<ref name="progguide" />
Core Video is available in:

*[[Mac OS X v10.4]] and later
In Mac OS X 10.4, Core Video is implemented as part of the QuartzCore framework; in Mac OS X 10.5 and later, it resides in its own framework.<ref>{{cite web | title = Mac Dev Center - Mac OS X Technology Overview - Graphics and Multimedia Technologies | url=https://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/OSX_Technology_Overview/GraphicsTechnologies/GraphicsTechnologies.html#//apple_ref/doc/uid/TP40001067-CH273-SW21 | access-date=September 24, 2009}}</ref>
*[[Mac OS X v10.3]] when QuickTime 7.0 or later is installed


== References ==
== References ==
{{reflist}}
<div class="references-small">
<references/>
</div>


{{Mac OS X}}


{{Apple}}
[[Category:Mac OS X APIs]]
{{Core Foundation}}
{{macOS}}


[[es:Core Video]]
[[Category:macOS APIs]]
[[Category:QuickTime]]

Latest revision as of 16:58, 21 September 2023

Core Video is the video processing model employed by macOS. It links the process of decompressing frames from a video source to the rest of the Quartz technologies for image rendering and composition. Both QuickTime X and QuickTime 7 depend on Core Video.[1]

Overview[edit]

Core Video provides both a buffering model and a playback synchronization solution within its processing pipeline. A video source provides a decompressed data stream to be rendered as images within a visual context in Quartz 2D. Core Video can be thought of as the link between this video source and its display context. Rendered images can be further processed by Core Image before being composed into a final scene with Quartz Compositor. As part of the composition process, Core Video maintains a frame buffer, keeping a pool of rendered, composed frames ready for playback. To ensure smooth playback, Core Video uses a high-priority thread to maintain its frame buffer. This display link runs independently from the application which invokes video playback, and it compensates for different display refresh rates and latency.[2]

Because QuickTime 7 employed Core Video, it was the first version of QuickTime to implement the rendering capability of Quartz. Previous versions of QuickTime used QuickDraw for rendering. Although Core Video typically interacts with QuickTime, it can interact with any video source.[1]

Core Video benefits from graphics processor (GPU) rendering and composition provided by Quartz GL, Core Image, and Quartz Extreme, since final playback is composed on an OpenGL surface.[1]

History[edit]

Although Core Video was introduced with the release of Mac OS X v10.4, it is included in the installation of QuickTime 7 on Mac OS X; thus, Core Video is available for Mac OS X 10.3.9 with QuickTime 7 installed as well.[1]

In Mac OS X 10.4, Core Video is implemented as part of the QuartzCore framework; in Mac OS X 10.5 and later, it resides in its own framework.[3]

References[edit]

  1. ^ a b c d "Mac Dev Center - Core Video Programming Guide - Introduction to Core Video Programming Guide". Retrieved September 24, 2009.
  2. ^ "Mac Dev Center - Core Video Programming Guide - Core Video Concepts". Retrieved September 24, 2009.
  3. ^ "Mac Dev Center - Mac OS X Technology Overview - Graphics and Multimedia Technologies". Retrieved September 24, 2009.