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

Unified Diff: media/base/android/media_codec_bridge.cc

Issue 14932020: Add Create() function to AudioCodecBridge and VideoCodecBridge to allow return of null pointers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressing comments Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: media/base/android/media_codec_bridge.cc
diff --git a/media/base/android/media_codec_bridge.cc b/media/base/android/media_codec_bridge.cc
index 37949f48d0237bca29abb5292b70e36fd8f5ff5c..3d799100078e64da398829f3462d72343f766e23 100644
--- a/media/base/android/media_codec_bridge.cc
+++ b/media/base/android/media_codec_bridge.cc
@@ -23,30 +23,6 @@ using base::android::AttachCurrentThread;
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
-namespace {
-
-class MediaCodecNativeRegisterer {
- public:
- MediaCodecNativeRegisterer() {
- JNIEnv* env = AttachCurrentThread();
- jni_initialized_ =
- media::RegisterNativesImpl(env) &&
- JNI_MediaFormat::RegisterNativesImpl(env);
- }
-
- bool IsRegistered() {
- return jni_initialized_;
- }
-
- private:
- bool jni_initialized_;
-};
-
-static base::LazyInstance<MediaCodecNativeRegisterer> g_native_registerer =
- LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
namespace media {
enum { kBufferFlagEndOfStream = 4 };
@@ -92,7 +68,6 @@ bool MediaCodecBridge::IsAvailable() {
MediaCodecBridge::MediaCodecBridge(const char* mime) {
JNIEnv* env = AttachCurrentThread();
CHECK(env);
- CHECK(g_native_registerer.Pointer()->IsRegistered());
DCHECK(mime);
ScopedJavaLocalRef<jstring> j_type = ConvertUTF8ToJavaString(env, mime);
@@ -213,8 +188,8 @@ void MediaCodecBridge::GetOutputBuffers() {
Java_MediaCodecBridge_getOutputBuffers(env, j_media_codec_.obj());
}
-AudioCodecBridge::AudioCodecBridge(const AudioCodec codec)
- : MediaCodecBridge(AudioCodecToMimeType(codec)) {
+AudioCodecBridge::AudioCodecBridge(const char* mime)
+ : MediaCodecBridge(mime) {
}
bool AudioCodecBridge::Start(
@@ -300,8 +275,8 @@ void AudioCodecBridge::PlayOutputBuffer(int index, size_t size) {
env, media_codec(), byte_array.obj());
}
-VideoCodecBridge::VideoCodecBridge(const VideoCodec codec)
- : MediaCodecBridge(VideoCodecToMimeType(codec)) {
+VideoCodecBridge::VideoCodecBridge(const char* mime)
+ : MediaCodecBridge(mime) {
}
bool VideoCodecBridge::Start(
@@ -321,5 +296,21 @@ bool VideoCodecBridge::Start(
return true;
}
+AudioCodecBridge* AudioCodecBridge::Create(const AudioCodec codec) {
+ const char* mime = AudioCodecToMimeType(codec);
+ return mime ? new AudioCodecBridge(mime) : NULL;
+}
+
+VideoCodecBridge* VideoCodecBridge::Create(const VideoCodec codec) {
+ const char* mime = VideoCodecToMimeType(codec);
+ return mime ? new VideoCodecBridge(mime) : NULL;
+}
+
+bool MediaCodecBridge::RegisterMediaCodecBridge(JNIEnv* env) {
+ if (!MediaCodecBridge::IsAvailable())
+ return false;
+ return RegisterNativesImpl(env) && JNI_MediaFormat::RegisterNativesImpl(env);
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698