Ensure the progress messages aren't obscured by the video layer

This commit is contained in:
Cameron Gutman
2018-06-02 01:01:45 -07:00
parent 941c414930
commit 30ec68cd4e
2 changed files with 15 additions and 4 deletions

View File

@@ -88,10 +88,13 @@
_config.appVersion = appversion; _config.appVersion = appversion;
_config.gfeVersion = gfeVersion; _config.gfeVersion = gfeVersion;
VideoDecoderRenderer* renderer = [[VideoDecoderRenderer alloc]initWithView:_renderView]; // Initializing the renderer must be done on the main thread
_connection = [[Connection alloc] initWithConfig:_config renderer:renderer connectionCallbacks:_callbacks]; dispatch_async(dispatch_get_main_queue(), ^{
NSOperationQueue* opQueue = [[NSOperationQueue alloc] init]; VideoDecoderRenderer* renderer = [[VideoDecoderRenderer alloc] initWithView:self->_renderView];
[opQueue addOperation:_connection]; self->_connection = [[Connection alloc] initWithConfig:self->_config renderer:renderer connectionCallbacks:self->_callbacks];
NSOperationQueue* opQueue = [[NSOperationQueue alloc] init];
[opQueue addOperation:self->_connection];
});
} }
- (void) stopStream - (void) stopStream

View File

@@ -33,6 +33,10 @@
displayLayer.position = CGPointMake(CGRectGetMidX(_view.bounds), CGRectGetMidY(_view.bounds)); displayLayer.position = CGPointMake(CGRectGetMidX(_view.bounds), CGRectGetMidY(_view.bounds));
displayLayer.videoGravity = AVLayerVideoGravityResizeAspect; displayLayer.videoGravity = AVLayerVideoGravityResizeAspect;
// Hide the layer until we get an IDR frame. This ensures we
// can see the loading progress label as the stream is starting.
displayLayer.hidden = YES;
if (oldLayer != nil) { if (oldLayer != nil) {
// Switch out the old display layer with the new one // Switch out the old display layer with the new one
[_view.layer replaceSublayer:oldLayer with:displayLayer]; [_view.layer replaceSublayer:oldLayer with:displayLayer];
@@ -349,8 +353,12 @@
// Enqueue video samples on the main thread // Enqueue video samples on the main thread
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
// Enqueue the next frame
[self->displayLayer enqueueSampleBuffer:sampleBuffer]; [self->displayLayer enqueueSampleBuffer:sampleBuffer];
// Ensure the layer is visible now
self->displayLayer.hidden = NO;
// Dereference the buffers // Dereference the buffers
CFRelease(blockBuffer); CFRelease(blockBuffer);
CFRelease(sampleBuffer); CFRelease(sampleBuffer);