Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1369)

Unified Diff: media/base/mac/videotoolbox_glue.mm

Issue 863083002: [cast] Add optional VideoEncoder method to flush frames. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/mac/videotoolbox_glue.mm
diff --git a/media/base/mac/videotoolbox_glue.mm b/media/base/mac/videotoolbox_glue.mm
index 7cffc46a79116c80301bc12c40a62d69550fcad2..18a4f0017b48cdaf7feecc73b12a2141c953a39f 100644
--- a/media/base/mac/videotoolbox_glue.mm
+++ b/media/base/mac/videotoolbox_glue.mm
@@ -34,6 +34,9 @@ struct VideoToolboxGlue::Library {
typedef CVPixelBufferPoolRef (*VTCompressionSessionGetPixelBufferPoolMethod)(
VTCompressionSessionRef);
typedef void (*VTCompressionSessionInvalidateMethod)(VTCompressionSessionRef);
+ typedef OSStatus (*VTCompressionSessionCompleteFramesMethod)(
+ VTCompressionSessionRef,
+ CoreMediaGlue::CMTime);
typedef OSStatus (*VTSessionSetPropertyMethod)(VTSessionRef,
CFStringRef,
CFTypeRef);
@@ -43,12 +46,14 @@ struct VideoToolboxGlue::Library {
VTCompressionSessionGetPixelBufferPoolMethod
VTCompressionSessionGetPixelBufferPool;
VTCompressionSessionInvalidateMethod VTCompressionSessionInvalidate;
+ VTCompressionSessionCompleteFramesMethod VTCompressionSessionCompleteFrames;
VTSessionSetPropertyMethod VTSessionSetProperty;
CFStringRef* kVTCompressionPropertyKey_AllowFrameReordering;
CFStringRef* kVTCompressionPropertyKey_AverageBitRate;
CFStringRef* kVTCompressionPropertyKey_ColorPrimaries;
CFStringRef* kVTCompressionPropertyKey_ExpectedFrameRate;
+ CFStringRef* kVTCompressionPropertyKey_MaxFrameDelayCount;
CFStringRef* kVTCompressionPropertyKey_MaxKeyFrameInterval;
CFStringRef* kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration;
CFStringRef* kVTCompressionPropertyKey_ProfileLevel;
@@ -86,12 +91,14 @@ class VideoToolboxGlue::Loader {
LOAD_SYMBOL(VTCompressionSessionEncodeFrame)
LOAD_SYMBOL(VTCompressionSessionGetPixelBufferPool)
LOAD_SYMBOL(VTCompressionSessionInvalidate)
+ LOAD_SYMBOL(VTCompressionSessionCompleteFrames)
LOAD_SYMBOL(VTSessionSetProperty)
LOAD_SYMBOL(kVTCompressionPropertyKey_AllowFrameReordering)
LOAD_SYMBOL(kVTCompressionPropertyKey_AverageBitRate)
LOAD_SYMBOL(kVTCompressionPropertyKey_ColorPrimaries)
LOAD_SYMBOL(kVTCompressionPropertyKey_ExpectedFrameRate)
+ LOAD_SYMBOL(kVTCompressionPropertyKey_MaxFrameDelayCount)
LOAD_SYMBOL(kVTCompressionPropertyKey_MaxKeyFrameInterval)
LOAD_SYMBOL(kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration)
LOAD_SYMBOL(kVTCompressionPropertyKey_ProfileLevel)
@@ -189,6 +196,13 @@ void VideoToolboxGlue::VTCompressionSessionInvalidate(
library_->VTCompressionSessionInvalidate(session);
}
+OSStatus VideoToolboxGlue::VTCompressionSessionCompleteFrames(
+ VTCompressionSessionRef session,
+ CoreMediaGlue::CMTime completeUntilPresentationTimeStamp) const {
+ return library_->VTCompressionSessionCompleteFrames(
+ session, completeUntilPresentationTimeStamp);
+}
+
OSStatus VideoToolboxGlue::VTSessionSetProperty(VTSessionRef session,
CFStringRef propertyKey,
CFTypeRef propertyValue) const {
@@ -202,6 +216,7 @@ KEY_ACCESSOR(kVTCompressionPropertyKey_AllowFrameReordering)
KEY_ACCESSOR(kVTCompressionPropertyKey_AverageBitRate)
KEY_ACCESSOR(kVTCompressionPropertyKey_ColorPrimaries)
KEY_ACCESSOR(kVTCompressionPropertyKey_ExpectedFrameRate)
+KEY_ACCESSOR(kVTCompressionPropertyKey_MaxFrameDelayCount)
KEY_ACCESSOR(kVTCompressionPropertyKey_MaxKeyFrameInterval)
KEY_ACCESSOR(kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration)
KEY_ACCESSOR(kVTCompressionPropertyKey_ProfileLevel)

Powered by Google App Engine
This is Rietveld 408576698