@@ -897,6 +897,37 @@ export interface Destination {
897897 detail ?: DestinationDetail ;
898898}
899899
900+ /**
901+ * @public
902+ * @enum
903+ */
904+ export const VideoAspectRatio = {
905+ AUTO : "AUTO" ,
906+ PORTRAIT : "PORTRAIT" ,
907+ SQUARE : "SQUARE" ,
908+ VIDEO : "VIDEO" ,
909+ } as const ;
910+
911+ /**
912+ * @public
913+ */
914+ export type VideoAspectRatio = ( typeof VideoAspectRatio ) [ keyof typeof VideoAspectRatio ] ;
915+
916+ /**
917+ * @public
918+ * @enum
919+ */
920+ export const VideoFillMode = {
921+ CONTAIN : "CONTAIN" ,
922+ COVER : "COVER" ,
923+ FILL : "FILL" ,
924+ } as const ;
925+
926+ /**
927+ * @public
928+ */
929+ export type VideoFillMode = ( typeof VideoFillMode ) [ keyof typeof VideoFillMode ] ;
930+
900931/**
901932 * @public
902933 * <p>Configuration information specific to Grid layout, for server-side composition. See
@@ -911,6 +942,140 @@ export interface GridConfiguration {
911942 * slot.</p>
912943 */
913944 featuredParticipantAttribute ?: string ;
945+
946+ /**
947+ * @public
948+ * <p>Determines whether to omit participants with stopped video in the composition. Default: <code>false</code>.</p>
949+ */
950+ omitStoppedVideo ?: boolean ;
951+
952+ /**
953+ * @public
954+ * <p>Sets the non-featured participant display mode. Default: <code>VIDEO</code>.</p>
955+ */
956+ videoAspectRatio ?: VideoAspectRatio ;
957+
958+ /**
959+ * @public
960+ * <p>Defines how video fits within the participant tile. When not set,
961+ * <code>videoFillMode</code> defaults to <code>COVER</code> fill mode for participants in the grid
962+ * and to <code>CONTAIN</code> fill mode for featured participants.</p>
963+ */
964+ videoFillMode ?: VideoFillMode ;
965+
966+ /**
967+ * @public
968+ * <p>Specifies the spacing between participant tiles in pixels. Default: <code>2</code>.</p>
969+ */
970+ gridGap ?: number ;
971+ }
972+
973+ /**
974+ * @public
975+ * @enum
976+ */
977+ export const PipBehavior = {
978+ DYNAMIC : "DYNAMIC" ,
979+ STATIC : "STATIC" ,
980+ } as const ;
981+
982+ /**
983+ * @public
984+ */
985+ export type PipBehavior = ( typeof PipBehavior ) [ keyof typeof PipBehavior ] ;
986+
987+ /**
988+ * @public
989+ * @enum
990+ */
991+ export const PipPosition = {
992+ BOTTOM_LEFT : "BOTTOM_LEFT" ,
993+ BOTTOM_RIGHT : "BOTTOM_RIGHT" ,
994+ TOP_LEFT : "TOP_LEFT" ,
995+ TOP_RIGHT : "TOP_RIGHT" ,
996+ } as const ;
997+
998+ /**
999+ * @public
1000+ */
1001+ export type PipPosition = ( typeof PipPosition ) [ keyof typeof PipPosition ] ;
1002+
1003+ /**
1004+ * @public
1005+ * <p>Configuration information specific to Picture-in-Picture (PiP) layout,
1006+ * for <a href="https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/server-side-composition.html">server-side composition</a>.
1007+ * </p>
1008+ */
1009+ export interface PipConfiguration {
1010+ /**
1011+ * @public
1012+ * <p>This attribute name identifies the featured slot. A participant with this attribute set
1013+ * to <code>"true"</code> (as a string value) in <a>ParticipantTokenConfiguration</a> is placed in the featured
1014+ * slot.</p>
1015+ */
1016+ featuredParticipantAttribute ?: string ;
1017+
1018+ /**
1019+ * @public
1020+ * <p>Determines whether to omit participants with stopped video in the composition. Default: <code>false</code>.</p>
1021+ */
1022+ omitStoppedVideo ?: boolean ;
1023+
1024+ /**
1025+ * @public
1026+ * <p>Defines how video fits within the participant tile. Default: <code>COVER</code>.
1027+ * </p>
1028+ */
1029+ videoFillMode ?: VideoFillMode ;
1030+
1031+ /**
1032+ * @public
1033+ * <p>Specifies the spacing between participant tiles in pixels. Default: <code>0</code>.</p>
1034+ */
1035+ gridGap ?: number ;
1036+
1037+ /**
1038+ * @public
1039+ * <p>Identifies the PiP slot. A participant with this attribute set
1040+ * to <code>"true"</code> (as a string value) in <a>ParticipantTokenConfiguration</a>
1041+ * is placed in the PiP slot.</p>
1042+ */
1043+ pipParticipantAttribute ?: string ;
1044+
1045+ /**
1046+ * @public
1047+ * <p>Defines PiP behavior when all participants have left. Default: <code>STATIC</code>.</p>
1048+ */
1049+ pipBehavior ?: PipBehavior ;
1050+
1051+ /**
1052+ * @public
1053+ * <p>Sets the PiP window’s offset position in pixels from the closest edges determined by <code>PipPosition</code>.
1054+ * Default: <code>0</code>.</p>
1055+ */
1056+ pipOffset ?: number ;
1057+
1058+ /**
1059+ * @public
1060+ * <p>Determines the corner position of the PiP window. Default: <code>BOTTOM_RIGHT</code>.</p>
1061+ */
1062+ pipPosition ?: PipPosition ;
1063+
1064+ /**
1065+ * @public
1066+ * <p>Specifies the width of the PiP window in pixels. When this is not set explicitly,
1067+ * <code>pipWidth</code>’s value will be based on the size of the composition and the
1068+ * aspect ratio of the participant’s video.</p>
1069+ */
1070+ pipWidth ?: number ;
1071+
1072+ /**
1073+ * @public
1074+ * <p>Specifies the height of the PiP window in pixels. When this is not set explicitly,
1075+ * <code>pipHeight</code>’s value will be based on the size of the composition and the
1076+ * aspect ratio of the participant’s video.</p>
1077+ */
1078+ pipHeight ?: number ;
9141079}
9151080
9161081/**
@@ -923,6 +1088,12 @@ export interface LayoutConfiguration {
9231088 * <p>Configuration related to grid layout. Default: Grid layout.</p>
9241089 */
9251090 grid ?: GridConfiguration ;
1091+
1092+ /**
1093+ * @public
1094+ * <p>Configuration related to PiP layout.</p>
1095+ */
1096+ pip ?: PipConfiguration ;
9261097}
9271098
9281099/**
0 commit comments