fix(android): video resolution orientation android (#3862)

* fix(android): ensure width/heigh respect rotation of the video + Add rotation info in onVideoTrack event
This commit is contained in:
Olivier Bouillet
2024-05-31 18:53:24 +02:00
committed by GitHub
parent c2ce66ed26
commit b698b1837b
4 changed files with 17 additions and 11 deletions

View File

@@ -12,4 +12,5 @@ class VideoTrack {
var index = -1
var trackId = ""
var isSelected = false
var rotation = 0
}

View File

@@ -223,6 +223,7 @@ public class VideoEventEmitter {
videoTrack.putString("trackId", vTrack.getTrackId());
videoTrack.putInt("index", vTrack.getIndex());
videoTrack.putBoolean("selected", vTrack.isSelected());
videoTrack.putInt("rotation", vTrack.getRotation());
waVideoTracks.pushMap(videoTrack);
}
}

View File

@@ -1375,8 +1375,9 @@ public class ReactExoplayerView extends FrameLayout implements
setSelectedTextTrack(textTrackType, textTrackValue);
}
Format videoFormat = player.getVideoFormat();
int width = videoFormat != null ? videoFormat.width : 0;
int height = videoFormat != null ? videoFormat.height : 0;
boolean isRotatedContent = videoFormat != null && (videoFormat.rotationDegrees == 90 || videoFormat.rotationDegrees == 270);
int width = videoFormat != null ? (isRotatedContent ? videoFormat.height : videoFormat.width) : 0;
int height = videoFormat != null ? (isRotatedContent ? videoFormat.width : videoFormat.height) : 0;
String trackId = videoFormat != null ? videoFormat.id : "-1";
// Properties that must be accessed on the main thread
@@ -1444,6 +1445,7 @@ public class ReactExoplayerView extends FrameLayout implements
videoTrack.setWidth(format.width == Format.NO_VALUE ? 0 : format.width);
videoTrack.setHeight(format.height == Format.NO_VALUE ? 0 : format.height);
videoTrack.setBitrate(format.bitrate == Format.NO_VALUE ? 0 : format.bitrate);
videoTrack.setRotation(format.rotationDegrees);
if (format.codecs != null) videoTrack.setCodecs(format.codecs);
videoTrack.setTrackId(format.id == null ? String.valueOf(trackIndex) : format.id);
videoTrack.setIndex(trackIndex);