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

Unified Diff: media/cast/sender/h264_vt_encoder.cc

Issue 863083002: [cast] Add optional VideoEncoder method to flush frames. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add documentation for VideoConfig::max_number_of_video_buffers_used 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/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(

Powered by Google App Engine
This is Rietveld 408576698