- add sources.
[platform/framework/web/crosswalk.git] / src / media / audio / android / opensles_util.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MEDIA_AUDIO_ANDROID_OPENSLES_UTIL_H_
6 #define MEDIA_AUDIO_ANDROID_OPENSLES_UTIL_H_
7
8 #include <SLES/OpenSLES.h>
9
10 #include "base/logging.h"
11
12 namespace media {
13
14 template <typename SLType, typename SLDerefType>
15 class ScopedSLObject {
16  public:
17   ScopedSLObject() : obj_(NULL) {}
18
19   ~ScopedSLObject() { Reset(); }
20
21   SLType* Receive() {
22     DCHECK(!obj_);
23     return &obj_;
24   }
25
26   SLDerefType operator->() { return *obj_; }
27
28   SLType Get() const { return obj_; }
29
30   void Reset() {
31     if (obj_) {
32       (*obj_)->Destroy(obj_);
33       obj_ = NULL;
34     }
35   }
36
37  private:
38   SLType obj_;
39 };
40
41 typedef ScopedSLObject<SLObjectItf, const SLObjectItf_*> ScopedSLObjectItf;
42
43 }  // namespace media
44
45 #endif  // MEDIA_AUDIO_ANDROID_OPENSLES_UTIL_H_