Adding reference counted version of the module interface.

The reason for this is that we would like to have reference counting on the modules you can register externally with ViE and VoE.
Currently we plan to use this on the ADM, VideoCapture module and VideoRenderModule.
Review URL: http://webrtc-codereview.appspot.com/138010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@517 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
perkj@google.com 2011-09-02 09:47:28 +00:00
parent 563f658013
commit ef04cf4b2e

View File

@ -1,33 +1,58 @@
#ifndef MODULE_H /*
#define MODULE_H * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MODULES_INTERFACE_MODULE_H_
#define MODULES_INTERFACE_MODULE_H_
#include "typedefs.h" #include "typedefs.h"
namespace webrtc namespace webrtc {
{
class Module class Module {
{ public:
public: // Returns version of the module and its components.
// Returns version of the module and its components. virtual int32_t Version(char* version,
virtual int32_t Version(char* version, uint32_t& remaining_buffer_in_bytes,
uint32_t& remainingBufferInBytes, uint32_t& position) const = 0;
uint32_t& position) const = 0;
// Change the unique identifier of this object. // Change the unique identifier of this object.
virtual int32_t ChangeUniqueId(const int32_t id) = 0; virtual int32_t ChangeUniqueId(const int32_t id) = 0;
// Returns the number of milliseconds until the module want a worker // Returns the number of milliseconds until the module want a worker
// thread to call Process. // thread to call Process.
virtual int32_t TimeUntilNextProcess() = 0 ; virtual int32_t TimeUntilNextProcess() = 0;
// Process any pending tasks such as timeouts. // Process any pending tasks such as timeouts.
virtual int32_t Process() = 0 ; virtual int32_t Process() = 0;
protected: protected:
virtual ~Module() {} virtual ~Module() {}
}; };
} // namespace webrtc // Reference counted version of the module interface.
class RefCountedModule : public Module {
public:
// Increase the reference count by one.
// Returns the incremented reference count.
virtual int32_t AddRef() = 0;
#endif // MODULE_H // Decrease the reference count by one.
// Returns the decreased reference count.
// Returns 0 if the last reference was just released.
// When the reference count reach 0 the object will self-destruct.
virtual int32_t Release() = 0;
protected:
virtual ~RefCountedModule() {}
};
} // namespace webrtc
#endif // MODULES_INTERFACE_MODULE_H_