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

Side by Side Diff: webrtc/sdk/objc/Framework/Classes/Video/RTCImageHelper.mm

Issue 2964703002: [iOS] Fix incorrectly oriented frames when rapidly switching between cameras. (Closed)
Patch Set: Renamed RTCImageHelper method, removed gate check for switching cameras. Created 3 years, 4 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 unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10 #import "RTCImageHelper.h"
tkchin_webrtc 2017/07/24 21:30:37 nit: blank line before #import
jtt_webrtc 2017/07/24 22:29:51 Done.
11
12 BOOL CFStringContainsString(CFStringRef theString, CFStringRef stringToFind) {
13 CFRange foundRange;
tkchin_webrtc 2017/07/24 21:30:37 nit: always initialize vars probably set length to
jtt_webrtc 2017/07/24 22:29:51 Since it's not used, I'll pass in nil.
14 return CFStringFindWithOptions(theString,
15 stringToFind,
16 CFRangeMake(0, CFStringGetLength(theString)),
17 kCFCompareCaseInsensitive,
18 &foundRange);
19 }
20
21 @implementation RTCImageHelper
22
23 + (AVCaptureDevicePosition)cameraFromSampleBuffer:(CMSampleBufferRef)sampleBuffe r {
24 // Check the image's EXIF for the actual camera the image came.
25 AVCaptureDevicePosition cameraPosition = AVCaptureDevicePositionUnspecified;
26 CFDictionaryRef attachments = CMCopyDictionaryOfAttachments(
27 kCFAllocatorDefault, sampleBuffer, kCMAttachmentMode_ShouldPropagate);
28 if (attachments) {
29 int size = CFDictionaryGetCount(attachments);
30 if (size > 0) {
31 CFDictionaryRef cfExifDictVal = NULL;
tkchin_webrtc 2017/07/24 21:30:37 nit: nullptr
jtt_webrtc 2017/07/24 22:29:51 Using nil as nullptr isn't defined here.
32 if (CFDictionaryGetValueIfPresent(
33 attachments, (const void *)CFSTR("{Exif}"), (const void **)&cfExif DictVal)) {
tkchin_webrtc 2017/07/24 21:30:37 Consider declaring NSString * and toll bridge to C
tkchin_webrtc 2017/07/24 21:30:37 does the return val need to be released? what are
jtt_webrtc 2017/07/24 22:29:51 Retain count on the returned value is 1. So it is
jtt_webrtc 2017/07/24 22:29:51 CFSTR calls __builtin___CFStringMakeConstantString
34 CFStringRef cfLensModelStrVal;
35 if (CFDictionaryGetValueIfPresent(cfExifDictVal,
36 (const void *)CFSTR("LensModel"),
tkchin_webrtc 2017/07/24 21:30:37 similarly here
jtt_webrtc 2017/07/24 22:29:51 See above.
37 (const void **)&cfLensModelStrVal)) {
38 if (CFStringContainsString(cfLensModelStrVal, CFSTR("front"))) {
39 cameraPosition = AVCaptureDevicePositionFront;
40 } else if (CFStringContainsString(cfLensModelStrVal, CFSTR("back"))) {
41 cameraPosition = AVCaptureDevicePositionBack;
42 }
43 }
44 }
45 }
46 CFRelease(attachments);
47 }
48 return cameraPosition;
49 }
50
51 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698