Skip to content

Commit 9c40566

Browse files
committed
feat(): VideoView scaling
closes #12
1 parent ac0ee8d commit 9c40566

File tree

7 files changed

+92
-3
lines changed

7 files changed

+92
-3
lines changed

demo/app/standard/standard.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded" class="page"
22
xmlns:ui="nativescript-webrtc-plugin">
33
<GridLayout rows="*,*,*">
4-
<ui:WebRTCView loaded="videoLoaded" row="0" id="remoteVideoView"/>
5-
<GridLayout verticalAlignment="center" horizontalAlignment="center" row="1" rows="auto,auto,auto,auto" columns="auto,auto,auto">
4+
<ui:WebRTCView stretch="fit" loaded="videoLoaded" row="0" id="remoteVideoView"/>
5+
<GridLayout verticalAlignment="center" horizontalAlignment="center" row="1" rows="auto,auto,auto,auto"
6+
columns="auto,auto,auto">
67
<Button tap="makeCall" row="0" col="1" text="Call"/>
78
<Button row="1" col="0" text="Switch" tap="switchCamera"/>
89
<Button row="1" col="2" text="Mute"/>

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nativescript-webrtc-plugin",
3-
"version": "2.0.0-alpha.13",
3+
"version": "2.0.0-alpha.14",
44
"description": "WebRTC for NativeScript",
55
"main": "webrtc",
66
"typings": "index.d.ts",
1.44 KB
Binary file not shown.

src/typings/android.d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -957,11 +957,22 @@ declare module co {
957957
public setSrcObject(param0: co.fitcom.fancywebrtc.FancyRTCMediaStreamTrack): void;
958958
public constructor(param0: globalAndroid.content.Context, param1: globalAndroid.util.AttributeSet);
959959
public setMirror(param0: boolean): void;
960+
public setScaling(param0: co.fitcom.fancywebrtc.FancyWebRTCView.Scaling): void;
960961
public setSrcObject(param0: co.fitcom.fancywebrtc.FancyRTCMediaStream): void;
961962
public setVideoTrack(param0: org.webrtc.VideoTrack): void;
962963
public setSrcObject(param0: org.webrtc.MediaStream): void;
963964
public setSrcObject(param0: org.webrtc.MediaStreamTrack): void;
964965
}
966+
export module FancyWebRTCView {
967+
export class Scaling {
968+
public static class: java.lang.Class<co.fitcom.fancywebrtc.FancyWebRTCView.Scaling>;
969+
public static FIT: co.fitcom.fancywebrtc.FancyWebRTCView.Scaling;
970+
public static FILL: co.fitcom.fancywebrtc.FancyWebRTCView.Scaling;
971+
public static NONE: co.fitcom.fancywebrtc.FancyWebRTCView.Scaling;
972+
public static values(): native.Array<co.fitcom.fancywebrtc.FancyWebRTCView.Scaling>;
973+
public static valueOf(param0: string): co.fitcom.fancywebrtc.FancyWebRTCView.Scaling;
974+
}
975+
}
965976
}
966977
}
967978
}

src/typings/objc!FancyWebRTC.d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,8 @@ declare class FancyWebRTCView extends UIView {
760760

761761
setMirrorWithMirror(mirror: boolean): void;
762762

763+
setScalingWithScale(scale: FancyWebRTCViewScaling): void;
764+
763765
setSizeWithSize(size: CGSize): void;
764766

765767
setSrcObjectWith(rtcStream: RTCMediaStream): void;
@@ -775,6 +777,15 @@ declare class FancyWebRTCView extends UIView {
775777
videoViewDidChangeVideoSize(videoView: RTCVideoRenderer, size: CGSize): void;
776778
}
777779

780+
declare const enum FancyWebRTCViewScaling {
781+
782+
Fit = 0,
783+
784+
Fill = 1,
785+
786+
None = 2
787+
}
788+
778789
declare class Format extends NSObject {
779790

780791
static alloc(): Format; // inherited from NSObject

src/webrtc.android.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,19 +536,52 @@ export class WebRTC extends Common {
536536
}
537537
}
538538

539+
export enum TNSRTCScaling {
540+
FIT = 'fit',
541+
FILL = 'fill',
542+
NONE = 'none'
543+
}
544+
539545
export class WebRTCView extends View {
540546
private _stream: any;
547+
private _scaling;
541548

542549
createNativeView(): any {
543550
return new co.fitcom.fancywebrtc.FancyWebRTCView(this._context, null);
544551
}
545552

553+
initNativeView(): void {
554+
super.initNativeView();
555+
if (this.nativeView && this._scaling) {
556+
this.nativeView.setScaling(this._scaling);
557+
}
558+
}
559+
546560
set mirror(mirror: boolean) {
547561
if (this.nativeView) {
548562
this.nativeView.setMirror(mirror);
549563
}
550564
}
551565

566+
set scaling(scaling: TNSRTCScaling) {
567+
let nativeScaling = co.fitcom.fancywebrtc.FancyWebRTCView.Scaling.NONE;
568+
switch (scaling) {
569+
case TNSRTCScaling.FILL:
570+
nativeScaling = co.fitcom.fancywebrtc.FancyWebRTCView.Scaling.FILL;
571+
break;
572+
case TNSRTCScaling.FIT:
573+
nativeScaling = co.fitcom.fancywebrtc.FancyWebRTCView.Scaling.FIT;
574+
break;
575+
default:
576+
break;
577+
}
578+
579+
if (this.nativeView) {
580+
this.nativeView.setScaling(nativeScaling);
581+
}
582+
this._scaling = nativeScaling;
583+
}
584+
552585
set videoTrack(track: any) {
553586
if (this.nativeView) {
554587
this.nativeView.setVideoTrack(track);

src/webrtc.ios.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,12 +1025,27 @@ class WebRTCClientDelegate extends NSObject {
10251025
}
10261026
}
10271027

1028+
export enum TNSRTCScaling {
1029+
FIT = 'fit',
1030+
FILL = 'fill',
1031+
NONE = 'none'
1032+
}
1033+
1034+
10281035
export class WebRTCView extends View {
1036+
private _scaling;
10291037

10301038
createNativeView(): Object {
10311039
return FancyWebRTCView.new();
10321040
}
10331041

1042+
initNativeView(): void {
1043+
super.initNativeView();
1044+
if (this.nativeView && this._scaling) {
1045+
this.nativeView.setScalingWithScale(this._scaling);
1046+
}
1047+
}
1048+
10341049
set mirror(mirror: boolean) {
10351050
this.nativeView.setMirrorWithMirror(mirror);
10361051
}
@@ -1045,6 +1060,24 @@ export class WebRTCView extends View {
10451060
}
10461061
}
10471062

1063+
set scaling(scaling: TNSRTCScaling) {
1064+
let nativeScaling = FancyWebRTCViewScaling.None;
1065+
switch (scaling) {
1066+
case TNSRTCScaling.FILL:
1067+
nativeScaling = FancyWebRTCViewScaling.Fill;
1068+
break;
1069+
case TNSRTCScaling.FIT:
1070+
nativeScaling = FancyWebRTCViewScaling.Fit;
1071+
break;
1072+
default:
1073+
break;
1074+
}
1075+
if (this.nativeView) {
1076+
this.nativeView.setScalingWithScale(nativeScaling);
1077+
}
1078+
this._scaling = nativeScaling;
1079+
}
1080+
10481081
set srcObject(value: any) {
10491082
if (!this.nativeView) return;
10501083
if (value instanceof TNSRTCMediaStream) {

0 commit comments

Comments
 (0)