Index: media/cast/sender/h264_vt_encoder.cc |
diff --git a/media/cast/sender/h264_vt_encoder.cc b/media/cast/sender/h264_vt_encoder.cc |
index 33923488c51daa96b99847893ea713204588837c..202a8e3d4dea02b946cc516d4b6cc773ca3623f4 100644 |
--- a/media/cast/sender/h264_vt_encoder.cc |
+++ b/media/cast/sender/h264_vt_encoder.cc |
@@ -309,6 +309,11 @@ void H264VideoToolboxEncoder::ConfigureSession( |
SetSessionProperty( |
videotoolbox_glue_->kVTCompressionPropertyKey_YCbCrMatrix(), |
kCVImageBufferYCbCrMatrix_ITU_R_709_2); |
+ if (video_config.max_number_of_video_buffers_used > 0) { |
+ SetSessionProperty( |
+ videotoolbox_glue_->kVTCompressionPropertyKey_MaxFrameDelayCount(), |
+ video_config.max_number_of_video_buffers_used); |
+ } |
} |
void H264VideoToolboxEncoder::Teardown() { |
@@ -404,6 +409,21 @@ H264VideoToolboxEncoder::CreateVideoFrameFactory() { |
new VideoFrameFactoryCVPixelBufferPoolImpl(pool)); |
} |
+void H264VideoToolboxEncoder::EmitFrames() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ |
+ if (!compression_session_) { |
+ DLOG(ERROR) << " compression session is null"; |
+ return; |
+ } |
+ |
+ OSStatus status = videotoolbox_glue_->VTCompressionSessionCompleteFrames( |
+ compression_session_, CoreMediaGlue::CMTime{0, 0, 0, 0}); |
+ if (status != noErr) { |
+ DLOG(ERROR) << " VTCompressionSessionCompleteFrames failed: " << status; |
+ } |
+} |
+ |
bool H264VideoToolboxEncoder::SetSessionProperty(CFStringRef key, |
int32_t value) { |
base::ScopedCFTypeRef<CFNumberRef> cfvalue( |