2 * Copyright (C) 2013 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 #ifndef WebMediaStreamTrack_h
26 #define WebMediaStreamTrack_h
28 #include "WebCommon.h"
29 #include "WebNonCopyable.h"
30 #include "WebPrivatePtr.h"
34 class MediaStreamComponent
;
35 class WebAudioSourceProvider
;
37 class WebMediaStreamSource
;
40 class WebMediaStreamTrack
{
44 ExtraData() : m_owner(0) { }
45 virtual ~ExtraData() { }
47 BLINK_PLATFORM_EXPORT WebMediaStreamTrack
owner();
50 BLINK_PLATFORM_EXPORT
void setOwner(MediaStreamComponent
*);
54 MediaStreamComponent
* m_owner
;
57 WebMediaStreamTrack() { }
58 WebMediaStreamTrack(const WebMediaStreamTrack
& other
) { assign(other
); }
59 ~WebMediaStreamTrack() { reset(); }
61 WebMediaStreamTrack
& operator=(const WebMediaStreamTrack
& other
)
66 BLINK_PLATFORM_EXPORT
void assign(const WebMediaStreamTrack
&);
68 BLINK_PLATFORM_EXPORT
void initialize(const WebMediaStreamSource
&);
69 BLINK_PLATFORM_EXPORT
void initialize(const WebString
& id
, const WebMediaStreamSource
&);
71 BLINK_PLATFORM_EXPORT
void reset();
72 bool isNull() const { return m_private
.isNull(); }
74 BLINK_PLATFORM_EXPORT WebString
id() const;
76 BLINK_PLATFORM_EXPORT WebMediaStreamSource
source() const;
77 BLINK_PLATFORM_EXPORT
bool isEnabled() const;
78 BLINK_PLATFORM_EXPORT
bool isMuted() const;
80 // Extra data associated with this WebMediaStream.
81 // If non-null, the extra data pointer will be deleted when the object is destroyed.
82 // Setting the extra data pointer will cause any existing non-null
83 // extra data pointer to be deleted.
84 BLINK_PLATFORM_EXPORT ExtraData
* extraData() const;
85 BLINK_PLATFORM_EXPORT
void setExtraData(ExtraData
*);
87 // The lifetime of the WebAudioSourceProvider should outlive the
88 // WebMediaStreamTrack, and clients are responsible for calling
89 // setSourceProvider(0) before the WebMediaStreamTrack is going away.
90 BLINK_PLATFORM_EXPORT
void setSourceProvider(WebAudioSourceProvider
*);
93 BLINK_PLATFORM_EXPORT
WebMediaStreamTrack(PassRefPtr
<MediaStreamComponent
>);
94 BLINK_PLATFORM_EXPORT
WebMediaStreamTrack(MediaStreamComponent
*);
95 BLINK_PLATFORM_EXPORT WebMediaStreamTrack
& operator=(MediaStreamComponent
*);
96 BLINK_PLATFORM_EXPORT
operator WTF::PassRefPtr
<MediaStreamComponent
>() const;
97 BLINK_PLATFORM_EXPORT
operator MediaStreamComponent
*() const;
101 WebPrivatePtr
<MediaStreamComponent
> m_private
;
106 #endif // WebMediaStreamTrack_h