Skip to content

Commit bcb8477

Browse files
minnieliuMinnie Liu0rland0Wats0n
authored
[Media Composition] Break down Update into more granular functions (Azure#30039)
* Change update to more granular functions * Add new live tests and update generate api file * Fix build * Update sdk/communication/Azure.Communication.MediaComposition/README.md Co-authored-by: Orlando Watson <thewatsonorlando@gmail.com> * Addressing review comments Co-authored-by: Minnie Liu <peiliu@microsoft.com> Co-authored-by: Orlando Watson <thewatsonorlando@gmail.com>
1 parent 3fa2cec commit bcb8477

File tree

39 files changed

+7067
-220
lines changed

39 files changed

+7067
-220
lines changed

sdk/communication/Azure.Communication.MediaComposition/README.md

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ var gridMediaCompositionResponse = await mediaCompositionClient.GetAsync(mediaCo
122122

123123
### Updating an existing media composition
124124

125-
Note: Updating the `groupCallInput` and the `teamsMeetingInput` is currently not supported. A new media composition will need to be created if `groupCallInput` and the `teamsMeetingInput` needs to change.
126-
```C# Snippet:UpdateMediaComposition
125+
You can update the layout:
126+
```C# Snippet:UpdateLayout
127127
var layout = new MediaCompositionLayout()
128128
{
129129
Resolution = new(720, 480),
@@ -133,7 +133,57 @@ var layout = new MediaCompositionLayout()
133133
SupportAspectRatio = 3 / 2
134134
}
135135
};
136-
var response = await mediaCompositionClient.UpdateAsync(mediaCompositionId, layout);
136+
var response = await mediaCompositionClient.UpdateLayoutAsync(mediaCompositionId, layout);
137+
```
138+
139+
Note: Upserting `GroupCall`, `Room`, and `TeamsMeeting` input kind is currently not supported if the media composition is running. The media composition will need to be stopped if `GroupCall`, `Room`, or `TeamsMeeting` inputs need to change.
140+
You can upsert or remove inputs:
141+
142+
```C# Snippet:UpsertInputs
143+
var inputsToUpsert = new Dictionary<string, MediaInput>()
144+
{
145+
["james"] = new()
146+
{
147+
Participant = new(
148+
id: new() { MicrosoftTeamsUser = new("f3ba9014-6dca-4456-8ec0-fa03cfa2b70p") },
149+
call: "teamsMeeting")
150+
{
151+
PlaceholderImageUri = "https://imageendpoint"
152+
}
153+
}
154+
};
155+
var response = await mediaCompositionClient.UpsertInputsAsync(mediaCompositionId, inputsToUpsert);
156+
```
157+
158+
```C# Snippet:RemoveInputs
159+
var inputIdsToRemove = new List<string>()
160+
{
161+
"jane", "jerry"
162+
};
163+
var response = await mediaCompositionClient.RemoveInputsAsync(mediaCompositionId, inputIdsToRemove);
164+
```
165+
166+
You can also upsert or remove outputs:
167+
```C# Snippet:UpsertOutputs
168+
var outputsToUpsert = new Dictionary<string, MediaOutput>()
169+
{
170+
{
171+
"youtube",
172+
new()
173+
{
174+
Rtmp = new("key", new(1920, 1080), "rtmp://a.rtmp.youtube.com/live2")
175+
}
176+
}
177+
};
178+
var response = await mediaCompositionClient.UpsertOutputsAsync(mediaCompositionId, outputsToUpsert);
179+
```
180+
181+
```C# Snippet:RemoveOutputs
182+
var outputIdsToRemove = new List<string>()
183+
{
184+
"acsGroupCall"
185+
};
186+
var response = await mediaCompositionClient.RemoveOutputsAsync(mediaCompositionId, outputIdsToRemove);
137187
```
138188

139189
### Starting the media composition to start streaming

sdk/communication/Azure.Communication.MediaComposition/api/Azure.Communication.MediaComposition.netstandard2.0.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,20 @@ public MediaCompositionClient(System.Uri endpoint, Azure.Core.TokenCredential to
151151
public virtual System.Threading.Tasks.Task<Azure.Response> DeleteAsync(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
152152
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> Get(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
153153
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> GetAsync(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
154+
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> RemoveInputs(string mediaCompositionId, System.Collections.Generic.IEnumerable<string> inputIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
155+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> RemoveInputsAsync(string mediaCompositionId, System.Collections.Generic.IEnumerable<string> inputIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
156+
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> RemoveOutputs(string mediaCompositionId, System.Collections.Generic.IEnumerable<string> outputIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
157+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> RemoveOutputsAsync(string mediaCompositionId, System.Collections.Generic.IEnumerable<string> outputIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
154158
public virtual Azure.Response<Azure.Communication.MediaComposition.CompositionStreamState> Start(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
155159
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.CompositionStreamState>> StartAsync(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
156160
public virtual Azure.Response<Azure.Communication.MediaComposition.CompositionStreamState> Stop(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
157161
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.CompositionStreamState>> StopAsync(string mediaCompositionId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
158-
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> Update(string mediaCompositionId, Azure.Communication.MediaComposition.Models.MediaCompositionLayout layout = null, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaInput> inputs = null, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaOutput> outputs = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
159-
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> UpdateAsync(string mediaCompositionId, Azure.Communication.MediaComposition.Models.MediaCompositionLayout layout = null, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaInput> inputs = null, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaOutput> outputs = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
162+
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> UpdateLayout(string mediaCompositionId, Azure.Communication.MediaComposition.Models.MediaCompositionLayout layout, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
163+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> UpdateLayoutAsync(string mediaCompositionId, Azure.Communication.MediaComposition.Models.MediaCompositionLayout layout, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
164+
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> UpsertInputs(string mediaCompositionId, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaInput> inputs, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
165+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> UpsertInputsAsync(string mediaCompositionId, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaInput> inputs, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
166+
public virtual Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody> UpsertOutputs(string mediaCompositionId, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaOutput> outputs, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
167+
public virtual System.Threading.Tasks.Task<Azure.Response<Azure.Communication.MediaComposition.MediaCompositionBody>> UpsertOutputsAsync(string mediaCompositionId, System.Collections.Generic.IDictionary<string, Azure.Communication.MediaComposition.MediaOutput> outputs, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
160168
}
161169
public partial class MediaCompositionClientOptions : Azure.Core.ClientOptions
162170
{

0 commit comments

Comments
 (0)