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

Side by Side Diff: Source/platform/mediastream/MediaStreamComponent.cpp

Issue 552653005: Oilpan: Move MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor to oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Ericsson AB. All rights reserved. 2 * Copyright (C) 2011 Ericsson AB. All rights reserved.
3 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * Copyright (C) 2013 Google Inc. All rights reserved.
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 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 22 matching lines...) Expand all
33 33
34 #include "platform/mediastream/MediaStreamComponent.h" 34 #include "platform/mediastream/MediaStreamComponent.h"
35 35
36 #include "platform/UUID.h" 36 #include "platform/UUID.h"
37 #include "platform/audio/AudioBus.h" 37 #include "platform/audio/AudioBus.h"
38 #include "platform/mediastream/MediaStreamSource.h" 38 #include "platform/mediastream/MediaStreamSource.h"
39 #include "public/platform/WebAudioSourceProvider.h" 39 #include "public/platform/WebAudioSourceProvider.h"
40 40
41 namespace blink { 41 namespace blink {
42 42
43 PassRefPtr<MediaStreamComponent> MediaStreamComponent::create(PassRefPtr<MediaSt reamSource> source) 43 MediaStreamComponent* MediaStreamComponent::create(MediaStreamSource* source)
44 { 44 {
45 return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), source )); 45 return new MediaStreamComponent(createCanonicalUUIDString(), source);
46 } 46 }
47 47
48 PassRefPtr<MediaStreamComponent> MediaStreamComponent::create(const String& id, PassRefPtr<MediaStreamSource> source) 48 MediaStreamComponent* MediaStreamComponent::create(const String& id, MediaStream Source* source)
49 { 49 {
50 return adoptRef(new MediaStreamComponent(id, source)); 50 return new MediaStreamComponent(id, source);
51 } 51 }
52 52
53 MediaStreamComponent::MediaStreamComponent(const String& id, PassRefPtr<MediaStr eamSource> source) 53 class MediaStreamComponentDisposer {
54 public:
55 explicit MediaStreamComponentDisposer(MediaStreamComponent& component) : m_c omponent(component) { }
56 ~MediaStreamComponentDisposer()
57 {
58 m_component.dispose();
59 }
60
61 private:
62 MediaStreamComponent& m_component;
63 };
64
65 typedef HeapHashMap<WeakMember<MediaStreamComponent>, OwnPtr<MediaStreamComponen tDisposer> > ComponentDisposers;
66
67 static ComponentDisposers& componentDisposers()
68 {
69 DEFINE_STATIC_LOCAL(Persistent<ComponentDisposers>, disposers, (new Componen tDisposers));
70 return *disposers;
71 }
72
73 MediaStreamComponent::MediaStreamComponent(const String& id, MediaStreamSource* source)
54 : m_source(source) 74 : m_source(source)
55 , m_id(id) 75 , m_id(id)
56 , m_enabled(true) 76 , m_enabled(true)
57 , m_muted(false) 77 , m_muted(false)
58 { 78 {
59 ASSERT(m_id.length()); 79 ASSERT(m_id.length());
80 componentDisposers().add(this, adoptPtr(new MediaStreamComponentDisposer(*th is)));
81 }
82
83 void MediaStreamComponent::dispose()
84 {
85 m_extraData = nullptr;
60 } 86 }
61 87
62 #if ENABLE(WEB_AUDIO) 88 #if ENABLE(WEB_AUDIO)
63 void MediaStreamComponent::AudioSourceProviderImpl::wrap(blink::WebAudioSourcePr ovider* provider) 89 void MediaStreamComponent::AudioSourceProviderImpl::wrap(blink::WebAudioSourcePr ovider* provider)
64 { 90 {
65 MutexLocker locker(m_provideInputLock); 91 MutexLocker locker(m_provideInputLock);
66 m_webAudioSourceProvider = provider; 92 m_webAudioSourceProvider = provider;
67 } 93 }
68 94
69 void MediaStreamComponent::AudioSourceProviderImpl::provideInput(AudioBus* bus, size_t framesToProcess) 95 void MediaStreamComponent::AudioSourceProviderImpl::provideInput(AudioBus* bus, size_t framesToProcess)
(...skipping 11 matching lines...) Expand all
81 // Wrap the AudioBus channel data using WebVector. 107 // Wrap the AudioBus channel data using WebVector.
82 size_t n = bus->numberOfChannels(); 108 size_t n = bus->numberOfChannels();
83 blink::WebVector<float*> webAudioData(n); 109 blink::WebVector<float*> webAudioData(n);
84 for (size_t i = 0; i < n; ++i) 110 for (size_t i = 0; i < n; ++i)
85 webAudioData[i] = bus->channel(i)->mutableData(); 111 webAudioData[i] = bus->channel(i)->mutableData();
86 112
87 m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess); 113 m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess);
88 } 114 }
89 #endif // #if ENABLE(WEB_AUDIO) 115 #endif // #if ENABLE(WEB_AUDIO)
90 116
117 void MediaStreamComponent::trace(Visitor* visitor)
118 {
119 visitor->trace(m_source);
120 }
121
91 } // namespace blink 122 } // namespace blink
92 123
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698