| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 } | 71 } |
| 72 return self; | 72 return self; |
| 73 } | 73 } |
| 74 | 74 |
| 75 - (void)configure { | 75 - (void)configure { |
| 76 _adapters = [NSMutableArray array]; | 76 _adapters = [NSMutableArray array]; |
| 77 } | 77 } |
| 78 | 78 |
| 79 - (void)dealloc { | 79 - (void)dealloc { |
| 80 for (RTCVideoRendererAdapter *adapter in _adapters) { | 80 for (RTCVideoRendererAdapter *adapter in _adapters) { |
| 81 self.nativeVideoTrack->RemoveRenderer(adapter.nativeVideoRenderer); | 81 self.nativeVideoTrack->RemoveSink(adapter.nativeVideoRenderer); |
| 82 } | 82 } |
| 83 } | 83 } |
| 84 | 84 |
| 85 - (void)addRenderer:(id<RTCVideoRenderer>)renderer { | 85 - (void)addRenderer:(id<RTCVideoRenderer>)renderer { |
| 86 // Make sure we don't have this renderer yet. | 86 // Make sure we don't have this renderer yet. |
| 87 for (RTCVideoRendererAdapter* adapter in _adapters) { | 87 for (RTCVideoRendererAdapter* adapter in _adapters) { |
| 88 NSParameterAssert(adapter.videoRenderer != renderer); | 88 NSParameterAssert(adapter.videoRenderer != renderer); |
| 89 } | 89 } |
| 90 // Create a wrapper that provides a native pointer for us. | 90 // Create a wrapper that provides a native pointer for us. |
| 91 RTCVideoRendererAdapter* adapter = | 91 RTCVideoRendererAdapter* adapter = |
| 92 [[RTCVideoRendererAdapter alloc] initWithVideoRenderer:renderer]; | 92 [[RTCVideoRendererAdapter alloc] initWithVideoRenderer:renderer]; |
| 93 [_adapters addObject:adapter]; | 93 [_adapters addObject:adapter]; |
| 94 self.nativeVideoTrack->AddRenderer(adapter.nativeVideoRenderer); | 94 self.nativeVideoTrack->AddOrUpdateSink(adapter.nativeVideoRenderer, |
| 95 rtc::VideoSinkWants()); |
| 95 } | 96 } |
| 96 | 97 |
| 97 - (void)removeRenderer:(id<RTCVideoRenderer>)renderer { | 98 - (void)removeRenderer:(id<RTCVideoRenderer>)renderer { |
| 98 RTCVideoRendererAdapter* adapter = nil; | 99 RTCVideoRendererAdapter* adapter = nil; |
| 99 NSUInteger indexToRemove = NSNotFound; | 100 NSUInteger indexToRemove = NSNotFound; |
| 100 for (NSUInteger i = 0; i < _adapters.count; i++) { | 101 for (NSUInteger i = 0; i < _adapters.count; i++) { |
| 101 adapter = _adapters[i]; | 102 adapter = _adapters[i]; |
| 102 if (adapter.videoRenderer == renderer) { | 103 if (adapter.videoRenderer == renderer) { |
| 103 indexToRemove = i; | 104 indexToRemove = i; |
| 104 break; | 105 break; |
| 105 } | 106 } |
| 106 } | 107 } |
| 107 if (indexToRemove == NSNotFound) { | 108 if (indexToRemove == NSNotFound) { |
| 108 return; | 109 return; |
| 109 } | 110 } |
| 110 self.nativeVideoTrack->RemoveRenderer(adapter.nativeVideoRenderer); | 111 self.nativeVideoTrack->RemoveSink(adapter.nativeVideoRenderer); |
| 111 [_adapters removeObjectAtIndex:indexToRemove]; | 112 [_adapters removeObjectAtIndex:indexToRemove]; |
| 112 } | 113 } |
| 113 | 114 |
| 114 @end | 115 @end |
| 115 | 116 |
| 116 @implementation RTCVideoTrack (Internal) | 117 @implementation RTCVideoTrack (Internal) |
| 117 | 118 |
| 118 - (rtc::scoped_refptr<webrtc::VideoTrackInterface>)nativeVideoTrack { | 119 - (rtc::scoped_refptr<webrtc::VideoTrackInterface>)nativeVideoTrack { |
| 119 return static_cast<webrtc::VideoTrackInterface*>(self.mediaTrack.get()); | 120 return static_cast<webrtc::VideoTrackInterface*>(self.mediaTrack.get()); |
| 120 } | 121 } |
| 121 | 122 |
| 122 @end | 123 @end |
| OLD | NEW |