Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1784)

Side by Side Diff: webrtc/sdk/android/api/org/webrtc/RendererCommon.java

Issue 3010233002: Remove static/default interface method usage. (Closed)
Patch Set: Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 16 matching lines...) Expand all
27 */ 27 */
28 public void onFirstFrameRendered(); 28 public void onFirstFrameRendered();
29 29
30 /** 30 /**
31 * Callback fired when rendered frame resolution or rotation has changed. 31 * Callback fired when rendered frame resolution or rotation has changed.
32 */ 32 */
33 public void onFrameResolutionChanged(int videoWidth, int videoHeight, int ro tation); 33 public void onFrameResolutionChanged(int videoWidth, int videoHeight, int ro tation);
34 } 34 }
35 35
36 /** Interface for rendering frames on an EGLSurface. */ 36 /** Interface for rendering frames on an EGLSurface. */
37 @SuppressWarnings("StaticOrDefaultInterfaceMethod")
38 public static interface GlDrawer { 37 public static interface GlDrawer {
39 /** 38 /**
40 * Functions for drawing frames with different sources. The rendering surfac e target is 39 * Functions for drawing frames with different sources. The rendering surfac e target is
41 * implied by the current EGL context of the calling thread and requires no explicit argument. 40 * implied by the current EGL context of the calling thread and requires no explicit argument.
42 * The coordinates specify the viewport location on the surface target. 41 * The coordinates specify the viewport location on the surface target.
43 */ 42 */
44 void drawOes(int oesTextureId, float[] texMatrix, int frameWidth, int frameH eight, 43 void drawOes(int oesTextureId, float[] texMatrix, int frameWidth, int frameH eight,
45 int viewportX, int viewportY, int viewportWidth, int viewportHeight); 44 int viewportX, int viewportY, int viewportWidth, int viewportHeight);
46 void drawRgb(int textureId, float[] texMatrix, int frameWidth, int frameHeig ht, int viewportX, 45 void drawRgb(int textureId, float[] texMatrix, int frameWidth, int frameHeig ht, int viewportX,
47 int viewportY, int viewportWidth, int viewportHeight); 46 int viewportY, int viewportWidth, int viewportHeight);
48 void drawYuv(int[] yuvTextures, float[] texMatrix, int frameWidth, int frame Height, 47 void drawYuv(int[] yuvTextures, float[] texMatrix, int frameWidth, int frame Height,
49 int viewportX, int viewportY, int viewportWidth, int viewportHeight); 48 int viewportX, int viewportY, int viewportWidth, int viewportHeight);
50 49
51 /** 50 /**
52 * Draws a VideoFrame.TextureBuffer. Default implementation calls either dra wOes or drawRgb 51 * Release all GL resources. This needs to be done manually, otherwise resou rces may leak.
53 * depending on the type of the buffer. You can supply an additional render matrix. This is
54 * used multiplied together with the transformation matrix of the frame. (M = renderMatrix *
55 * transformationMatrix)
56 */ 52 */
57 default void 53 void release();
58 drawTexture(VideoFrame.TextureBuffer buffer, android.graphics.Matrix rende rMatrix,
59 int frameWidth, int frameHeight, int viewportX, int viewportY, int vie wportWidth,
60 int viewportHeight) {
61 android.graphics.Matrix finalMatrix =
62 new android.graphics.Matrix(buffer.getTransformMatrix());
63 finalMatrix.preConcat(renderMatrix);
64 float[] finalGlMatrix = convertMatrixFromAndroidGraphicsMatrix(finalMatr ix);
65 switch (buffer.getType()) {
66 case OES:
67 drawOes(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHeigh t, viewportX,
68 viewportY, viewportWidth, viewportHeight);
69 break;
70 case RGB:
71 drawRgb(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHeigh t, viewportX,
72 viewportY, viewportWidth, viewportHeight);
73 break;
74 default:
75 throw new RuntimeException("Unknown texture type.");
76 }
77 }
78
79 /**
80 * Release all GL resources. This needs to be done manually, otherwise res ources may leak.
81 */
82 void release();
83 } 54 }
84 55
85 /** 56 /**
57 * Draws a VideoFrame.TextureBuffer. Calls either drawer.drawOes or drawer.dra wRgb
58 * depending on the type of the buffer. You can supply an additional render ma trix. This is
59 * used multiplied together with the transformation matrix of the frame. (M = renderMatrix *
60 * transformationMatrix)
61 */
62 static void drawTexture(GlDrawer drawer, VideoFrame.TextureBuffer buffer,
63 android.graphics.Matrix renderMatrix, int frameWidth, int frameHeight, int viewportX,
64 int viewportY, int viewportWidth, int viewportHeight) {
65 android.graphics.Matrix finalMatrix = new android.graphics.Matrix(buffer.get TransformMatrix());
66 finalMatrix.preConcat(renderMatrix);
67 float[] finalGlMatrix = convertMatrixFromAndroidGraphicsMatrix(finalMatrix);
68 switch (buffer.getType()) {
69 case OES:
70 drawer.drawOes(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHe ight, viewportX,
71 viewportY, viewportWidth, viewportHeight);
72 break;
73 case RGB:
74 drawer.drawRgb(buffer.getTextureId(), finalGlMatrix, frameWidth, frameHe ight, viewportX,
75 viewportY, viewportWidth, viewportHeight);
76 break;
77 default:
78 throw new RuntimeException("Unknown texture type.");
79 }
80 }
81
82 /**
86 * Helper class for uploading YUV bytebuffer frames to textures that handles s tride > width. This 83 * Helper class for uploading YUV bytebuffer frames to textures that handles s tride > width. This
87 * class keeps an internal ByteBuffer to avoid unnecessary allocations for int ermediate copies. 84 * class keeps an internal ByteBuffer to avoid unnecessary allocations for int ermediate copies.
88 */ 85 */
89 public static class YuvUploader { 86 public static class YuvUploader {
90 // Intermediate copy buffer for uploading yuv frames that are not packed, i. e. stride > width. 87 // Intermediate copy buffer for uploading yuv frames that are not packed, i. e. stride > width.
91 // TODO(magjed): Investigate when GL_UNPACK_ROW_LENGTH is available, or make a custom shader 88 // TODO(magjed): Investigate when GL_UNPACK_ROW_LENGTH is available, or make a custom shader
92 // that handles stride and compare performance with intermediate copy. 89 // that handles stride and compare performance with intermediate copy.
93 private ByteBuffer copyBuffer; 90 private ByteBuffer copyBuffer;
94 private int[] yuvTextures; 91 private int[] yuvTextures;
95 92
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 return new Point(maxDisplayWidth, maxDisplayHeight); 386 return new Point(maxDisplayWidth, maxDisplayHeight);
390 } 387 }
391 // Each dimension is constrained on max display size and how much we are all owed to crop. 388 // Each dimension is constrained on max display size and how much we are all owed to crop.
392 final int width = Math.min( 389 final int width = Math.min(
393 maxDisplayWidth, Math.round(maxDisplayHeight / minVisibleFraction * vide oAspectRatio)); 390 maxDisplayWidth, Math.round(maxDisplayHeight / minVisibleFraction * vide oAspectRatio));
394 final int height = Math.min( 391 final int height = Math.min(
395 maxDisplayHeight, Math.round(maxDisplayWidth / minVisibleFraction / vide oAspectRatio)); 392 maxDisplayHeight, Math.round(maxDisplayWidth / minVisibleFraction / vide oAspectRatio));
396 return new Point(width, height); 393 return new Point(width, height);
397 } 394 }
398 } 395 }
OLDNEW
« no previous file with comments | « webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java ('k') | webrtc/sdk/android/src/java/org/webrtc/EglBase10.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698