forked from JumpingYang001/webrtc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Android: Generate all C++ -> Java JNI code for VideoEncoder
The first example CL for generating JNI code (https://webrtc-review.googlesource.com/c/src/+/4500) seems to stick, so this CL updates the rest of the VideoEncoder. The JNI code for Java -> C++ is still done manually. This CL puts the necessary helper Java methods in a class called VideoEncoderWrapper. Bug: webrtc:8278 Change-Id: Ic3a6defe59c094f67ffd8ea86d6c272c676980ae Reviewed-on: https://webrtc-review.googlesource.com/20871 Reviewed-by: Sami Kalliomäki <[email protected]> Commit-Queue: Magnus Jedvert <[email protected]> Cr-Commit-Position: refs/heads/master@{#20587}
- Loading branch information
1 parent
aeb5d88
commit 0371e10
Showing
8 changed files
with
110 additions
and
137 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* | ||
* Copyright 2017 The WebRTC project authors. All Rights Reserved. | ||
* | ||
* Use of this source code is governed by a BSD-style license | ||
* that can be found in the LICENSE file in the root of the source | ||
* tree. An additional intellectual property rights grant can be found | ||
* in the file PATENTS. All contributing project authors may | ||
* be found in the AUTHORS file in the root of the source tree. | ||
*/ | ||
|
||
package org.webrtc; | ||
|
||
// Explicit imports necessary for JNI generation. | ||
import org.webrtc.EncodedImage; | ||
import org.webrtc.VideoEncoder; | ||
import java.nio.ByteBuffer; | ||
|
||
/** | ||
* This class contains the Java glue code for JNI generation of VideoEncoder. | ||
*/ | ||
class VideoEncoderWrapper { | ||
@CalledByNative | ||
static VideoEncoder.Settings createSettings(int numberOfCores, int width, int height, | ||
int startBitrate, int maxFramerate, boolean automaticResizeOn) { | ||
return new VideoEncoder.Settings( | ||
numberOfCores, width, height, startBitrate, maxFramerate, automaticResizeOn); | ||
} | ||
|
||
@CalledByNative | ||
static VideoEncoder.EncodeInfo createEncodeInfo(EncodedImage.FrameType[] frameTypes) { | ||
return new VideoEncoder.EncodeInfo(frameTypes); | ||
} | ||
|
||
@CalledByNative | ||
static VideoEncoder.BitrateAllocation createBitrateAllocation(int[][] bitratesBbs) { | ||
return new VideoEncoder.BitrateAllocation(bitratesBbs); | ||
} | ||
|
||
@CalledByNative | ||
static EncodedImage.FrameType createFrameType(int nativeIndex) { | ||
for (EncodedImage.FrameType type : EncodedImage.FrameType.values()) { | ||
if (type.getNative() == nativeIndex) { | ||
return type; | ||
} | ||
} | ||
throw new IllegalArgumentException("Unknown native frame type: " + nativeIndex); | ||
} | ||
|
||
@CalledByNative | ||
static boolean getScalingSettingsOn(VideoEncoder.ScalingSettings scalingSettings) { | ||
return scalingSettings.on; | ||
} | ||
|
||
@CalledByNative | ||
static Integer getScalingSettingsLow(VideoEncoder.ScalingSettings scalingSettings) { | ||
return scalingSettings.low; | ||
} | ||
|
||
@CalledByNative | ||
static Integer getScalingSettingsHigh(VideoEncoder.ScalingSettings scalingSettings) { | ||
return scalingSettings.high; | ||
} | ||
|
||
@CalledByNative | ||
static int getIntValue(Integer i) { | ||
return i.intValue(); | ||
} | ||
|
||
@CalledByNative | ||
static VideoEncoder.Callback createEncoderCallback(final long nativeEncoder) { | ||
return (EncodedImage frame, VideoEncoder.CodecSpecificInfo info) | ||
-> onEncodedFrame(nativeEncoder, frame.buffer, frame.encodedWidth, | ||
frame.encodedHeight, frame.captureTimeNs, frame.frameType.getNative(), | ||
frame.rotation, frame.completeFrame, frame.qp); | ||
} | ||
|
||
private static native void onEncodedFrame(long nativeEncoder, ByteBuffer buffer, int encodedWidth, | ||
int encodedHeight, long captureTimeNs, int frameType, int rotation, boolean completeFrame, | ||
Integer qp); | ||
} |
35 changes: 0 additions & 35 deletions
35
sdk/android/src/java/org/webrtc/VideoEncoderWrapperCallback.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters