| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2015 Google Inc. | 3 * Copyright 2015 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 | 243 |
| 244 MediaCodecVideoEncoder::~MediaCodecVideoEncoder() { | 244 MediaCodecVideoEncoder::~MediaCodecVideoEncoder() { |
| 245 // Call Release() to ensure no more callbacks to us after we are deleted. | 245 // Call Release() to ensure no more callbacks to us after we are deleted. |
| 246 Release(); | 246 Release(); |
| 247 } | 247 } |
| 248 | 248 |
| 249 MediaCodecVideoEncoder::MediaCodecVideoEncoder( | 249 MediaCodecVideoEncoder::MediaCodecVideoEncoder( |
| 250 JNIEnv* jni, VideoCodecType codecType, jobject egl_context) : | 250 JNIEnv* jni, VideoCodecType codecType, jobject egl_context) : |
| 251 codecType_(codecType), | 251 codecType_(codecType), |
| 252 callback_(NULL), | 252 callback_(NULL), |
| 253 inited_(false), | |
| 254 use_surface_(false), | |
| 255 picture_id_(0), | |
| 256 codec_thread_(new Thread()), | 253 codec_thread_(new Thread()), |
| 257 j_media_codec_video_encoder_class_( | 254 j_media_codec_video_encoder_class_( |
| 258 jni, | 255 jni, |
| 259 FindClass(jni, "org/webrtc/MediaCodecVideoEncoder")), | 256 FindClass(jni, "org/webrtc/MediaCodecVideoEncoder")), |
| 260 j_media_codec_video_encoder_( | 257 j_media_codec_video_encoder_( |
| 261 jni, | 258 jni, |
| 262 jni->NewObject(*j_media_codec_video_encoder_class_, | 259 jni->NewObject(*j_media_codec_video_encoder_class_, |
| 263 GetMethodID(jni, | 260 GetMethodID(jni, |
| 264 *j_media_codec_video_encoder_class_, | 261 *j_media_codec_video_encoder_class_, |
| 265 "<init>", | 262 "<init>", |
| 266 "()V"))), | 263 "()V"))), |
| 264 inited_(false), |
| 265 use_surface_(false), |
| 266 picture_id_(0), |
| 267 egl_context_(egl_context) { | 267 egl_context_(egl_context) { |
| 268 ScopedLocalRefFrame local_ref_frame(jni); | 268 ScopedLocalRefFrame local_ref_frame(jni); |
| 269 // It would be nice to avoid spinning up a new thread per MediaCodec, and | 269 // It would be nice to avoid spinning up a new thread per MediaCodec, and |
| 270 // instead re-use e.g. the PeerConnectionFactory's |worker_thread_|, but bug | 270 // instead re-use e.g. the PeerConnectionFactory's |worker_thread_|, but bug |
| 271 // 2732 means that deadlocks abound. This class synchronously trampolines | 271 // 2732 means that deadlocks abound. This class synchronously trampolines |
| 272 // to |codec_thread_|, so if anything else can be coming to _us_ from | 272 // to |codec_thread_|, so if anything else can be coming to _us_ from |
| 273 // |codec_thread_|, or from any thread holding the |_sendCritSect| described | 273 // |codec_thread_|, or from any thread holding the |_sendCritSect| described |
| 274 // in the bug, we have a problem. For now work around that with a dedicated | 274 // in the bug, we have a problem. For now work around that with a dedicated |
| 275 // thread. | 275 // thread. |
| 276 codec_thread_->SetName("MediaCodecVideoEncoder", NULL); | 276 codec_thread_->SetName("MediaCodecVideoEncoder", NULL); |
| (...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1169 } | 1169 } |
| 1170 | 1170 |
| 1171 void MediaCodecVideoEncoderFactory::DestroyVideoEncoder( | 1171 void MediaCodecVideoEncoderFactory::DestroyVideoEncoder( |
| 1172 webrtc::VideoEncoder* encoder) { | 1172 webrtc::VideoEncoder* encoder) { |
| 1173 ALOGD << "Destroy video encoder."; | 1173 ALOGD << "Destroy video encoder."; |
| 1174 delete encoder; | 1174 delete encoder; |
| 1175 } | 1175 } |
| 1176 | 1176 |
| 1177 } // namespace webrtc_jni | 1177 } // namespace webrtc_jni |
| 1178 | 1178 |
| OLD | NEW |