| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  * libjingle |     2  * libjingle | 
|     3  * Copyright 2013 Google Inc. |     3  * Copyright 2013 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 728 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   739       : j_callbacks_(jni, j_callbacks), |   739       : j_callbacks_(jni, j_callbacks), | 
|   740         j_render_frame_id_(GetMethodID( |   740         j_render_frame_id_(GetMethodID( | 
|   741             jni, GetObjectClass(jni, j_callbacks), "renderFrame", |   741             jni, GetObjectClass(jni, j_callbacks), "renderFrame", | 
|   742             "(Lorg/webrtc/VideoRenderer$I420Frame;)V")), |   742             "(Lorg/webrtc/VideoRenderer$I420Frame;)V")), | 
|   743         j_can_apply_rotation_id_(GetMethodID( |   743         j_can_apply_rotation_id_(GetMethodID( | 
|   744             jni, GetObjectClass(jni, j_callbacks), |   744             jni, GetObjectClass(jni, j_callbacks), | 
|   745             "canApplyRotation", "()Z")), |   745             "canApplyRotation", "()Z")), | 
|   746         j_frame_class_(jni, |   746         j_frame_class_(jni, | 
|   747                        FindClass(jni, "org/webrtc/VideoRenderer$I420Frame")), |   747                        FindClass(jni, "org/webrtc/VideoRenderer$I420Frame")), | 
|   748         j_i420_frame_ctor_id_(GetMethodID( |   748         j_i420_frame_ctor_id_(GetMethodID( | 
|   749             jni, *j_frame_class_, "<init>", "(III[I[Ljava/nio/ByteBuffer;)V")), |   749             jni, *j_frame_class_, "<init>", "(III[I[Ljava/nio/ByteBuffer;J)V")), | 
|   750         j_texture_frame_ctor_id_(GetMethodID( |   750         j_texture_frame_ctor_id_(GetMethodID( | 
|   751             jni, *j_frame_class_, "<init>", |   751             jni, *j_frame_class_, "<init>", | 
|   752             "(IIILjava/lang/Object;I)V")), |   752             "(IIILjava/lang/Object;IJ)V")), | 
|   753         j_byte_buffer_class_(jni, FindClass(jni, "java/nio/ByteBuffer")), |   753         j_byte_buffer_class_(jni, FindClass(jni, "java/nio/ByteBuffer")), | 
|   754         can_apply_rotation_set_(false), |   754         can_apply_rotation_set_(false), | 
|   755         can_apply_rotation_(false) { |   755         can_apply_rotation_(false) { | 
|   756     CHECK_EXCEPTION(jni); |   756     CHECK_EXCEPTION(jni); | 
|   757   } |   757   } | 
|   758  |   758  | 
|   759   virtual ~JavaVideoRendererWrapper() {} |   759   virtual ~JavaVideoRendererWrapper() {} | 
|   760  |   760  | 
|   761   void RenderFrame(const cricket::VideoFrame* video_frame) override { |   761   void RenderFrame(const cricket::VideoFrame* video_frame) override { | 
|   762     ScopedLocalRefFrame local_ref_frame(jni()); |   762     ScopedLocalRefFrame local_ref_frame(jni()); | 
|   763  |   763  | 
|   764     // Calling CanApplyRotation here to ensure can_apply_rotation_ is set. |   764     // Calling CanApplyRotation here to ensure can_apply_rotation_ is set. | 
|   765     CanApplyRotation(); |   765     CanApplyRotation(); | 
|   766  |   766  | 
|   767     const cricket::VideoFrame* frame = |   767     const cricket::VideoFrame* frame = | 
|   768         can_apply_rotation_ ? video_frame |   768         can_apply_rotation_ ? video_frame | 
|   769                             : video_frame->GetCopyWithRotationApplied(); |   769                             : video_frame->GetCopyWithRotationApplied(); | 
 |   770     // Make a shallow copy. |j_callbacks_| is responsible for releasing the | 
 |   771     // copy by calling VideoRenderer.renderFrameDone(). | 
 |   772     frame = frame->Copy(); | 
|   770     if (frame->GetNativeHandle() != NULL) { |   773     if (frame->GetNativeHandle() != NULL) { | 
|   771       jobject j_frame = CricketToJavaTextureFrame(frame); |   774       jobject j_frame = CricketToJavaTextureFrame(frame); | 
|   772       jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); |   775       jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); | 
|   773       CHECK_EXCEPTION(jni()); |   776       CHECK_EXCEPTION(jni()); | 
|   774     } else { |   777     } else { | 
|   775       jobject j_frame = CricketToJavaI420Frame(frame); |   778       jobject j_frame = CricketToJavaI420Frame(frame); | 
|   776       jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); |   779       jni()->CallVoidMethod(*j_callbacks_, j_render_frame_id_, j_frame); | 
|   777       CHECK_EXCEPTION(jni()); |   780       CHECK_EXCEPTION(jni()); | 
|   778     } |   781     } | 
|   779   } |   782   } | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
|   810         const_cast<uint8*>(frame->GetUPlane()), frame->GetChromaSize()); |   813         const_cast<uint8*>(frame->GetUPlane()), frame->GetChromaSize()); | 
|   811     jobject v_buffer = jni()->NewDirectByteBuffer( |   814     jobject v_buffer = jni()->NewDirectByteBuffer( | 
|   812         const_cast<uint8*>(frame->GetVPlane()), frame->GetChromaSize()); |   815         const_cast<uint8*>(frame->GetVPlane()), frame->GetChromaSize()); | 
|   813     jni()->SetObjectArrayElement(planes, 0, y_buffer); |   816     jni()->SetObjectArrayElement(planes, 0, y_buffer); | 
|   814     jni()->SetObjectArrayElement(planes, 1, u_buffer); |   817     jni()->SetObjectArrayElement(planes, 1, u_buffer); | 
|   815     jni()->SetObjectArrayElement(planes, 2, v_buffer); |   818     jni()->SetObjectArrayElement(planes, 2, v_buffer); | 
|   816     return jni()->NewObject( |   819     return jni()->NewObject( | 
|   817         *j_frame_class_, j_i420_frame_ctor_id_, |   820         *j_frame_class_, j_i420_frame_ctor_id_, | 
|   818         frame->GetWidth(), frame->GetHeight(), |   821         frame->GetWidth(), frame->GetHeight(), | 
|   819         static_cast<int>(frame->GetVideoRotation()), |   822         static_cast<int>(frame->GetVideoRotation()), | 
|   820         strides, planes); |   823         strides, planes, frame); | 
|   821   } |   824   } | 
|   822  |   825  | 
|   823   // Return a VideoRenderer.I420Frame referring texture object in |frame|. |   826   // Return a VideoRenderer.I420Frame referring texture object in |frame|. | 
|   824   jobject CricketToJavaTextureFrame(const cricket::VideoFrame* frame) { |   827   jobject CricketToJavaTextureFrame(const cricket::VideoFrame* frame) { | 
|   825     NativeHandleImpl* handle = |   828     NativeHandleImpl* handle = | 
|   826         reinterpret_cast<NativeHandleImpl*>(frame->GetNativeHandle()); |   829         reinterpret_cast<NativeHandleImpl*>(frame->GetNativeHandle()); | 
|   827     jobject texture_object = reinterpret_cast<jobject>(handle->GetHandle()); |   830     jobject texture_object = reinterpret_cast<jobject>(handle->GetHandle()); | 
|   828     int texture_id = handle->GetTextureId(); |   831     int texture_id = handle->GetTextureId(); | 
|   829     return jni()->NewObject( |   832     return jni()->NewObject( | 
|   830         *j_frame_class_, j_texture_frame_ctor_id_, |   833         *j_frame_class_, j_texture_frame_ctor_id_, | 
|   831         frame->GetWidth(), frame->GetHeight(), |   834         frame->GetWidth(), frame->GetHeight(), | 
|   832         static_cast<int>(frame->GetVideoRotation()), |   835         static_cast<int>(frame->GetVideoRotation()), | 
|   833         texture_object, texture_id); |   836         texture_object, texture_id, frame); | 
|   834   } |   837   } | 
|   835  |   838  | 
|   836   JNIEnv* jni() { |   839   JNIEnv* jni() { | 
|   837     return AttachCurrentThreadIfNeeded(); |   840     return AttachCurrentThreadIfNeeded(); | 
|   838   } |   841   } | 
|   839  |   842  | 
|   840   ScopedGlobalRef<jobject> j_callbacks_; |   843   ScopedGlobalRef<jobject> j_callbacks_; | 
|   841   jmethodID j_render_frame_id_; |   844   jmethodID j_render_frame_id_; | 
|   842   jmethodID j_can_apply_rotation_id_; |   845   jmethodID j_can_apply_rotation_id_; | 
|   843   ScopedGlobalRef<jclass> j_frame_class_; |   846   ScopedGlobalRef<jclass> j_frame_class_; | 
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   947 } |   950 } | 
|   948  |   951  | 
|   949 JOW(void, VideoRenderer_freeGuiVideoRenderer)(JNIEnv*, jclass, jlong j_p) { |   952 JOW(void, VideoRenderer_freeGuiVideoRenderer)(JNIEnv*, jclass, jlong j_p) { | 
|   950   delete reinterpret_cast<VideoRendererWrapper*>(j_p); |   953   delete reinterpret_cast<VideoRendererWrapper*>(j_p); | 
|   951 } |   954 } | 
|   952  |   955  | 
|   953 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { |   956 JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { | 
|   954   delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); |   957   delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); | 
|   955 } |   958 } | 
|   956  |   959  | 
 |   960 JOW(void, VideoRenderer_releaseNativeFrame)( | 
 |   961     JNIEnv* jni, jclass, jlong j_frame_ptr) { | 
 |   962   delete reinterpret_cast<const cricket::VideoFrame*>(j_frame_ptr); | 
 |   963 } | 
 |   964  | 
|   957 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { |   965 JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { | 
|   958   CHECK_RELEASE(reinterpret_cast<MediaStreamTrackInterface*>(j_p)); |   966   CHECK_RELEASE(reinterpret_cast<MediaStreamTrackInterface*>(j_p)); | 
|   959 } |   967 } | 
|   960  |   968  | 
|   961 JOW(jboolean, MediaStream_nativeAddAudioTrack)( |   969 JOW(jboolean, MediaStream_nativeAddAudioTrack)( | 
|   962     JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) { |   970     JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) { | 
|   963   return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack( |   971   return reinterpret_cast<MediaStreamInterface*>(pointer)->AddTrack( | 
|   964       reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)); |   972       reinterpret_cast<AudioTrackInterface*>(j_audio_track_pointer)); | 
|   965 } |   973 } | 
|   966  |   974  | 
| (...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1707 } |  1715 } | 
|  1708  |  1716  | 
|  1709 JOW(void, VideoTrack_nativeRemoveRenderer)( |  1717 JOW(void, VideoTrack_nativeRemoveRenderer)( | 
|  1710     JNIEnv* jni, jclass, |  1718     JNIEnv* jni, jclass, | 
|  1711     jlong j_video_track_pointer, jlong j_renderer_pointer) { |  1719     jlong j_video_track_pointer, jlong j_renderer_pointer) { | 
|  1712   reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)->RemoveRenderer( |  1720   reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)->RemoveRenderer( | 
|  1713       reinterpret_cast<VideoRendererInterface*>(j_renderer_pointer)); |  1721       reinterpret_cast<VideoRendererInterface*>(j_renderer_pointer)); | 
|  1714 } |  1722 } | 
|  1715  |  1723  | 
|  1716 }  // namespace webrtc_jni |  1724 }  // namespace webrtc_jni | 
| OLD | NEW |