Limit initial fps value used in Android HW encoder initialization.

BUG=b/30951236
R=magjed@webrtc.org, wzh@webrtc.org

Review URL: https://codereview.webrtc.org/2303893002 .

Cr-Commit-Position: refs/heads/master@{#14054}
This commit is contained in:
Alex Glaznev
2016-09-02 12:16:27 -07:00
parent 79c6458575
commit c55c39ddf7

View File

@ -51,6 +51,7 @@ public class MediaCodecVideoEncoder {
private static final int MEDIA_CODEC_RELEASE_TIMEOUT_MS = 5000; // Timeout for codec releasing. private static final int MEDIA_CODEC_RELEASE_TIMEOUT_MS = 5000; // Timeout for codec releasing.
private static final int DEQUEUE_TIMEOUT = 0; // Non-blocking, no wait. private static final int DEQUEUE_TIMEOUT = 0; // Non-blocking, no wait.
private static final int BITRATE_ADJUSTMENT_FPS = 30; private static final int BITRATE_ADJUSTMENT_FPS = 30;
private static final int MAXIMUM_INITIAL_FPS = 30;
// Active running encoder instance. Set in initEncode() (called from native code) // Active running encoder instance. Set in initEncode() (called from native code)
// and reset to null in release() call. // and reset to null in release() call.
private static MediaCodecVideoEncoder runningInstance = null; private static MediaCodecVideoEncoder runningInstance = null;
@ -377,9 +378,12 @@ public class MediaCodecVideoEncoder {
bitrateAdjustmentRequired = properties.bitrateAdjustment; bitrateAdjustmentRequired = properties.bitrateAdjustment;
if (bitrateAdjustmentRequired) { if (bitrateAdjustmentRequired) {
fps = BITRATE_ADJUSTMENT_FPS; fps = BITRATE_ADJUSTMENT_FPS;
} else {
fps = Math.min(fps, MAXIMUM_INITIAL_FPS);
} }
Logging.d(TAG, "Color format: " + colorFormat + Logging.d(TAG, "Color format: " + colorFormat +
". Bitrate adjustment: " + bitrateAdjustmentRequired); ". Bitrate adjustment: " + bitrateAdjustmentRequired +
". Initial fps: " + fps);
mediaCodecThread = Thread.currentThread(); mediaCodecThread = Thread.currentThread();
try { try {
@ -531,7 +535,7 @@ public class MediaCodecVideoEncoder {
Logging.v(TAG, "setRates: " + kbps + " -> " + (codecBitrate / 1000) Logging.v(TAG, "setRates: " + kbps + " -> " + (codecBitrate / 1000)
+ " kbps. Fps: " + frameRate); + " kbps. Fps: " + frameRate);
} else { } else {
Logging.v(TAG, "setRates: " + kbps); Logging.v(TAG, "setRates: " + kbps + " kbps. Fps: " + frameRate);
} }
try { try {
Bundle params = new Bundle(); Bundle params = new Bundle();