| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "media/capture/video/mac/video_capture_device_avfoundation_mac.h" | 5 #import "media/capture/video/mac/video_capture_device_avfoundation_mac.h" |
| 6 | 6 |
| 7 #import <CoreMedia/CoreMedia.h> | 7 #import <CoreMedia/CoreMedia.h> |
| 8 #import <CoreVideo/CoreVideo.h> | 8 #import <CoreVideo/CoreVideo.h> |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 | 474 |
| 475 { | 475 { |
| 476 base::AutoLock lock(lock_); | 476 base::AutoLock lock(lock_); |
| 477 const CoreMediaGlue::CMTime cm_timestamp = | 477 const CoreMediaGlue::CMTime cm_timestamp = |
| 478 CoreMediaGlue::CMSampleBufferGetPresentationTimeStamp(sampleBuffer); | 478 CoreMediaGlue::CMSampleBufferGetPresentationTimeStamp(sampleBuffer); |
| 479 const base::TimeDelta timestamp = | 479 const base::TimeDelta timestamp = |
| 480 CMTIME_IS_VALID(cm_timestamp) | 480 CMTIME_IS_VALID(cm_timestamp) |
| 481 ? base::TimeDelta::FromMicroseconds( | 481 ? base::TimeDelta::FromMicroseconds( |
| 482 cm_timestamp.value * base::TimeTicks::kMicrosecondsPerSecond / | 482 cm_timestamp.value * base::TimeTicks::kMicrosecondsPerSecond / |
| 483 cm_timestamp.timescale) | 483 cm_timestamp.timescale) |
| 484 : media::kNoTimestamp(); | 484 : media::kNoTimestamp; |
| 485 | 485 |
| 486 if (frameReceiver_ && baseAddress) { | 486 if (frameReceiver_ && baseAddress) { |
| 487 frameReceiver_->ReceiveFrame(reinterpret_cast<uint8_t*>(baseAddress), | 487 frameReceiver_->ReceiveFrame(reinterpret_cast<uint8_t*>(baseAddress), |
| 488 frameSize, captureFormat, 0, 0, timestamp); | 488 frameSize, captureFormat, 0, 0, timestamp); |
| 489 } | 489 } |
| 490 } | 490 } |
| 491 | 491 |
| 492 if (videoFrame) | 492 if (videoFrame) |
| 493 CVPixelBufferUnlockBaseAddress(videoFrame, kCVPixelBufferLock_ReadOnly); | 493 CVPixelBufferUnlockBaseAddress(videoFrame, kCVPixelBufferLock_ReadOnly); |
| 494 } | 494 } |
| 495 | 495 |
| 496 - (void)onVideoError:(NSNotification*)errorNotification { | 496 - (void)onVideoError:(NSNotification*)errorNotification { |
| 497 NSError* error = base::mac::ObjCCast<NSError>([[errorNotification userInfo] | 497 NSError* error = base::mac::ObjCCast<NSError>([[errorNotification userInfo] |
| 498 objectForKey:AVFoundationGlue::AVCaptureSessionErrorKey()]); | 498 objectForKey:AVFoundationGlue::AVCaptureSessionErrorKey()]); |
| 499 [self sendErrorString:[NSString | 499 [self sendErrorString:[NSString |
| 500 stringWithFormat:@"%@: %@", | 500 stringWithFormat:@"%@: %@", |
| 501 [error localizedDescription], | 501 [error localizedDescription], |
| 502 [error localizedFailureReason]]]; | 502 [error localizedFailureReason]]]; |
| 503 } | 503 } |
| 504 | 504 |
| 505 - (void)sendErrorString:(NSString*)error { | 505 - (void)sendErrorString:(NSString*)error { |
| 506 DLOG(ERROR) << [error UTF8String]; | 506 DLOG(ERROR) << [error UTF8String]; |
| 507 base::AutoLock lock(lock_); | 507 base::AutoLock lock(lock_); |
| 508 if (frameReceiver_) | 508 if (frameReceiver_) |
| 509 frameReceiver_->ReceiveError(FROM_HERE, [error UTF8String]); | 509 frameReceiver_->ReceiveError(FROM_HERE, [error UTF8String]); |
| 510 } | 510 } |
| 511 | 511 |
| 512 @end | 512 @end |
| OLD | NEW |