Android: Add option to mirror vertically in EglRenderer
Bug: None Change-Id: I4f46f9f0e1fa3805880335ebb6a767b8cb33f8c6 Reviewed-on: https://webrtc-review.googlesource.com/c/114540 Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26028}
This commit is contained in:
committed by
Commit Bot
parent
eb02ecd358
commit
3ff71de9da
@ -136,7 +136,9 @@ public class EglRenderer implements VideoSink {
|
|||||||
private final Object layoutLock = new Object();
|
private final Object layoutLock = new Object();
|
||||||
private float layoutAspectRatio;
|
private float layoutAspectRatio;
|
||||||
// If true, mirrors the video stream horizontally.
|
// If true, mirrors the video stream horizontally.
|
||||||
private boolean mirror;
|
private boolean mirrorHorizontally;
|
||||||
|
// If true, mirrors the video stream vertically.
|
||||||
|
private boolean mirrorVertically;
|
||||||
|
|
||||||
// These variables are synchronized on |statisticsLock|.
|
// These variables are synchronized on |statisticsLock|.
|
||||||
private final Object statisticsLock = new Object();
|
private final Object statisticsLock = new Object();
|
||||||
@ -342,12 +344,22 @@ public class EglRenderer implements VideoSink {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set if the video stream should be mirrored or not.
|
* Set if the video stream should be mirrored horizontally or not.
|
||||||
*/
|
*/
|
||||||
public void setMirror(final boolean mirror) {
|
public void setMirror(final boolean mirror) {
|
||||||
logD("setMirror: " + mirror);
|
logD("setMirrorHorizontally: " + mirror);
|
||||||
synchronized (layoutLock) {
|
synchronized (layoutLock) {
|
||||||
this.mirror = mirror;
|
this.mirrorHorizontally = mirror;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set if the video stream should be mirrored vertically or not.
|
||||||
|
*/
|
||||||
|
public void setMirrorVertically(final boolean mirrorVertically) {
|
||||||
|
logD("setMirrorVertically: " + mirrorVertically);
|
||||||
|
synchronized (layoutLock) {
|
||||||
|
this.mirrorVertically = mirrorVertically;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,8 +633,7 @@ public class EglRenderer implements VideoSink {
|
|||||||
|
|
||||||
drawMatrix.reset();
|
drawMatrix.reset();
|
||||||
drawMatrix.preTranslate(0.5f, 0.5f);
|
drawMatrix.preTranslate(0.5f, 0.5f);
|
||||||
if (mirror)
|
drawMatrix.preScale(mirrorHorizontally ? -1f : 1f, mirrorVertically ? -1f : 1f);
|
||||||
drawMatrix.preScale(-1f, 1f);
|
|
||||||
drawMatrix.preScale(scaleX, scaleY);
|
drawMatrix.preScale(scaleX, scaleY);
|
||||||
drawMatrix.preTranslate(-0.5f, -0.5f);
|
drawMatrix.preTranslate(-0.5f, -0.5f);
|
||||||
|
|
||||||
@ -657,8 +668,7 @@ public class EglRenderer implements VideoSink {
|
|||||||
|
|
||||||
drawMatrix.reset();
|
drawMatrix.reset();
|
||||||
drawMatrix.preTranslate(0.5f, 0.5f);
|
drawMatrix.preTranslate(0.5f, 0.5f);
|
||||||
if (mirror)
|
drawMatrix.preScale(mirrorHorizontally ? -1f : 1f, mirrorVertically ? -1f : 1f);
|
||||||
drawMatrix.preScale(-1f, 1f);
|
|
||||||
drawMatrix.preScale(1f, -1f); // We want the output to be upside down for Bitmap.
|
drawMatrix.preScale(1f, -1f); // We want the output to be upside down for Bitmap.
|
||||||
drawMatrix.preTranslate(-0.5f, -0.5f);
|
drawMatrix.preTranslate(-0.5f, -0.5f);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user