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 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 }; | 552 }; |
553 | 553 |
554 // Adapter for a Java DataChannel$Observer presenting a C++ DataChannelObserver | 554 // Adapter for a Java DataChannel$Observer presenting a C++ DataChannelObserver |
555 // and dispatching the callback from C++ back to Java. | 555 // and dispatching the callback from C++ back to Java. |
556 class DataChannelObserverWrapper : public DataChannelObserver { | 556 class DataChannelObserverWrapper : public DataChannelObserver { |
557 public: | 557 public: |
558 DataChannelObserverWrapper(JNIEnv* jni, jobject j_observer) | 558 DataChannelObserverWrapper(JNIEnv* jni, jobject j_observer) |
559 : j_observer_global_(jni, j_observer), | 559 : j_observer_global_(jni, j_observer), |
560 j_observer_class_(jni, GetObjectClass(jni, j_observer)), | 560 j_observer_class_(jni, GetObjectClass(jni, j_observer)), |
561 j_buffer_class_(jni, FindClass(jni, "org/webrtc/DataChannel$Buffer")), | 561 j_buffer_class_(jni, FindClass(jni, "org/webrtc/DataChannel$Buffer")), |
562 j_on_state_change_mid_(GetMethodID(jni, *j_observer_class_, | 562 j_on_buffered_amount_change_mid_(GetMethodID( |
563 "onStateChange", "()V")), | 563 jni, *j_observer_class_, "onBufferedAmountChange", "(J)V")), |
| 564 j_on_state_change_mid_( |
| 565 GetMethodID(jni, *j_observer_class_, "onStateChange", "()V")), |
564 j_on_message_mid_(GetMethodID(jni, *j_observer_class_, "onMessage", | 566 j_on_message_mid_(GetMethodID(jni, *j_observer_class_, "onMessage", |
565 "(Lorg/webrtc/DataChannel$Buffer;)V")), | 567 "(Lorg/webrtc/DataChannel$Buffer;)V")), |
566 j_buffer_ctor_(GetMethodID(jni, *j_buffer_class_, | 568 j_buffer_ctor_(GetMethodID(jni, *j_buffer_class_, "<init>", |
567 "<init>", "(Ljava/nio/ByteBuffer;Z)V")) { | 569 "(Ljava/nio/ByteBuffer;Z)V")) {} |
568 } | |
569 | 570 |
570 virtual ~DataChannelObserverWrapper() {} | 571 virtual ~DataChannelObserverWrapper() {} |
571 | 572 |
| 573 void OnBufferedAmountChange(uint64 previous_amount) override { |
| 574 ScopedLocalRefFrame local_ref_frame(jni()); |
| 575 jni()->CallVoidMethod(*j_observer_global_, j_on_buffered_amount_change_mid_, |
| 576 previous_amount); |
| 577 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; |
| 578 } |
| 579 |
572 void OnStateChange() override { | 580 void OnStateChange() override { |
573 ScopedLocalRefFrame local_ref_frame(jni()); | 581 ScopedLocalRefFrame local_ref_frame(jni()); |
574 jni()->CallVoidMethod(*j_observer_global_, j_on_state_change_mid_); | 582 jni()->CallVoidMethod(*j_observer_global_, j_on_state_change_mid_); |
575 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; | 583 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; |
576 } | 584 } |
577 | 585 |
578 void OnMessage(const DataBuffer& buffer) override { | 586 void OnMessage(const DataBuffer& buffer) override { |
579 ScopedLocalRefFrame local_ref_frame(jni()); | 587 ScopedLocalRefFrame local_ref_frame(jni()); |
580 jobject byte_buffer = jni()->NewDirectByteBuffer( | 588 jobject byte_buffer = jni()->NewDirectByteBuffer( |
581 const_cast<char*>(buffer.data.data<char>()), buffer.data.size()); | 589 const_cast<char*>(buffer.data.data<char>()), buffer.data.size()); |
582 jobject j_buffer = jni()->NewObject(*j_buffer_class_, j_buffer_ctor_, | 590 jobject j_buffer = jni()->NewObject(*j_buffer_class_, j_buffer_ctor_, |
583 byte_buffer, buffer.binary); | 591 byte_buffer, buffer.binary); |
584 jni()->CallVoidMethod(*j_observer_global_, j_on_message_mid_, j_buffer); | 592 jni()->CallVoidMethod(*j_observer_global_, j_on_message_mid_, j_buffer); |
585 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; | 593 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; |
586 } | 594 } |
587 | 595 |
588 private: | 596 private: |
589 JNIEnv* jni() { | 597 JNIEnv* jni() { |
590 return AttachCurrentThreadIfNeeded(); | 598 return AttachCurrentThreadIfNeeded(); |
591 } | 599 } |
592 | 600 |
593 const ScopedGlobalRef<jobject> j_observer_global_; | 601 const ScopedGlobalRef<jobject> j_observer_global_; |
594 const ScopedGlobalRef<jclass> j_observer_class_; | 602 const ScopedGlobalRef<jclass> j_observer_class_; |
595 const ScopedGlobalRef<jclass> j_buffer_class_; | 603 const ScopedGlobalRef<jclass> j_buffer_class_; |
| 604 const jmethodID j_on_buffered_amount_change_mid_; |
596 const jmethodID j_on_state_change_mid_; | 605 const jmethodID j_on_state_change_mid_; |
597 const jmethodID j_on_message_mid_; | 606 const jmethodID j_on_message_mid_; |
598 const jmethodID j_buffer_ctor_; | 607 const jmethodID j_buffer_ctor_; |
599 }; | 608 }; |
600 | 609 |
601 // Adapter for a Java StatsObserver presenting a C++ StatsObserver and | 610 // Adapter for a Java StatsObserver presenting a C++ StatsObserver and |
602 // dispatching the callback from C++ back to Java. | 611 // dispatching the callback from C++ back to Java. |
603 class StatsObserverWrapper : public StatsObserver { | 612 class StatsObserverWrapper : public StatsObserver { |
604 public: | 613 public: |
605 StatsObserverWrapper(JNIEnv* jni, jobject j_observer) | 614 StatsObserverWrapper(JNIEnv* jni, jobject j_observer) |
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1676 } | 1685 } |
1677 | 1686 |
1678 JOW(void, VideoTrack_nativeRemoveRenderer)( | 1687 JOW(void, VideoTrack_nativeRemoveRenderer)( |
1679 JNIEnv* jni, jclass, | 1688 JNIEnv* jni, jclass, |
1680 jlong j_video_track_pointer, jlong j_renderer_pointer) { | 1689 jlong j_video_track_pointer, jlong j_renderer_pointer) { |
1681 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)->RemoveRenderer( | 1690 reinterpret_cast<VideoTrackInterface*>(j_video_track_pointer)->RemoveRenderer( |
1682 reinterpret_cast<VideoRendererInterface*>(j_renderer_pointer)); | 1691 reinterpret_cast<VideoRendererInterface*>(j_renderer_pointer)); |
1683 } | 1692 } |
1684 | 1693 |
1685 } // namespace webrtc_jni | 1694 } // namespace webrtc_jni |
OLD | NEW |