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

Side by Side Diff: webrtc/examples/android/media_demo/jni/jni_helpers.h

Issue 1439593002: Remove webrtc/examples/android/media_demo. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 1 month 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
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_EXAMPLES_ANDROID_MEDIA_DEMO_JNI_JNI_HELPERS_H_
12 #define WEBRTC_EXAMPLES_ANDROID_MEDIA_DEMO_JNI_JNI_HELPERS_H_
13
14 // TODO(henrike): this file contains duplication with regards to
15 // talk/app/webrtc/java/jni/peerconnection_jni.cc. When/if code can be shared
16 // between trunk/talk and trunk/webrtc remove the duplication.
17
18 #include <android/log.h>
19 #include <jni.h>
20
21 #include <assert.h>
22 #include <map>
23 #include <string>
24
25 #define TAG "WEBRTC-NATIVE"
26
27 // Abort the process if |x| is false, emitting |msg| to logcat.
28 #define CHECK(x, msg) \
29 if (x) { \
30 } else { \
31 __android_log_print(ANDROID_LOG_ERROR, TAG, "%s:%d: %s", __FILE__, \
32 __LINE__, msg); \
33 assert(false); \
34 }
35
36 // Abort the process if |jni| has a Java exception pending, emitting |msg| to
37 // logcat.
38 #define CHECK_JNI_EXCEPTION(jni, msg) \
39 if (0) { \
40 } else { \
41 if (jni->ExceptionCheck()) { \
42 jni->ExceptionDescribe(); \
43 jni->ExceptionClear(); \
44 CHECK(0, msg); \
45 } \
46 }
47
48 // JNIEnv-helper methods that CHECK success: no Java exception thrown and found
49 // object/class/method/field is non-null.
50 jmethodID GetMethodID(JNIEnv* jni, jclass c, const std::string& name,
51 const char* signature);
52
53 // Return a |jlong| that will automatically convert back to |ptr| when assigned
54 // to a |uint64_t|
55 jlong jlongFromPointer(void* ptr);
56
57 // Given a (UTF-16) jstring return a new UTF-8 native string.
58 std::string JavaToStdString(JNIEnv* jni, const jstring& j_string);
59
60 // Android's FindClass() is trickier than usual because the app-specific
61 // ClassLoader is not consulted when there is no app-specific frame on the
62 // stack. Consequently, we only look up classes once in JNI_OnLoad.
63 // http://developer.android.com/training/articles/perf-jni.html#faq_FindClass
64 class ClassReferenceHolder {
65 public:
66 ClassReferenceHolder(JNIEnv* jni, const char** classes, int size);
67 ~ClassReferenceHolder();
68
69 void FreeReferences(JNIEnv* jni);
70
71 jclass GetClass(const std::string& name);
72
73 private:
74 void LoadClass(JNIEnv* jni, const std::string& name);
75
76 std::map<std::string, jclass> classes_;
77 };
78
79 #endif // WEBRTC_EXAMPLES_ANDROID_MEDIA_DEMO_JNI_JNI_HELPERS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698