1package media 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "encoding/json" 12 "github.com/Azure/go-autorest/autorest" 13 "github.com/Azure/go-autorest/autorest/azure" 14 "github.com/Azure/go-autorest/autorest/date" 15 "github.com/Azure/go-autorest/autorest/to" 16 "github.com/Azure/go-autorest/tracing" 17 "github.com/gofrs/uuid" 18 "net/http" 19) 20 21// The package's fully qualified name. 22const fqdn = "github.com/Azure/azure-sdk-for-go/services/mediaservices/mgmt/2021-06-01/media" 23 24// AacAudio describes Advanced Audio Codec (AAC) audio encoding settings. 25type AacAudio struct { 26 // Profile - The encoding profile to be used when encoding audio with AAC. Possible values include: 'AacAudioProfileAacLc', 'AacAudioProfileHeAacV1', 'AacAudioProfileHeAacV2' 27 Profile AacAudioProfile `json:"profile,omitempty"` 28 // Channels - The number of channels in the audio. 29 Channels *int32 `json:"channels,omitempty"` 30 // SamplingRate - The sampling rate to use for encoding in hertz. 31 SamplingRate *int32 `json:"samplingRate,omitempty"` 32 // Bitrate - The bitrate, in bits per second, of the output encoded audio. 33 Bitrate *int32 `json:"bitrate,omitempty"` 34 // Label - An optional label for the codec. The label can be used to control muxing behavior. 35 Label *string `json:"label,omitempty"` 36 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 37 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 38} 39 40// MarshalJSON is the custom marshaler for AacAudio. 41func (aa AacAudio) MarshalJSON() ([]byte, error) { 42 aa.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio 43 objectMap := make(map[string]interface{}) 44 if aa.Profile != "" { 45 objectMap["profile"] = aa.Profile 46 } 47 if aa.Channels != nil { 48 objectMap["channels"] = aa.Channels 49 } 50 if aa.SamplingRate != nil { 51 objectMap["samplingRate"] = aa.SamplingRate 52 } 53 if aa.Bitrate != nil { 54 objectMap["bitrate"] = aa.Bitrate 55 } 56 if aa.Label != nil { 57 objectMap["label"] = aa.Label 58 } 59 if aa.OdataType != "" { 60 objectMap["@odata.type"] = aa.OdataType 61 } 62 return json.Marshal(objectMap) 63} 64 65// AsAudio is the BasicCodec implementation for AacAudio. 66func (aa AacAudio) AsAudio() (*Audio, bool) { 67 return nil, false 68} 69 70// AsBasicAudio is the BasicCodec implementation for AacAudio. 71func (aa AacAudio) AsBasicAudio() (BasicAudio, bool) { 72 return &aa, true 73} 74 75// AsAacAudio is the BasicCodec implementation for AacAudio. 76func (aa AacAudio) AsAacAudio() (*AacAudio, bool) { 77 return &aa, true 78} 79 80// AsVideo is the BasicCodec implementation for AacAudio. 81func (aa AacAudio) AsVideo() (*Video, bool) { 82 return nil, false 83} 84 85// AsBasicVideo is the BasicCodec implementation for AacAudio. 86func (aa AacAudio) AsBasicVideo() (BasicVideo, bool) { 87 return nil, false 88} 89 90// AsH265Video is the BasicCodec implementation for AacAudio. 91func (aa AacAudio) AsH265Video() (*H265Video, bool) { 92 return nil, false 93} 94 95// AsCopyVideo is the BasicCodec implementation for AacAudio. 96func (aa AacAudio) AsCopyVideo() (*CopyVideo, bool) { 97 return nil, false 98} 99 100// AsImage is the BasicCodec implementation for AacAudio. 101func (aa AacAudio) AsImage() (*Image, bool) { 102 return nil, false 103} 104 105// AsBasicImage is the BasicCodec implementation for AacAudio. 106func (aa AacAudio) AsBasicImage() (BasicImage, bool) { 107 return nil, false 108} 109 110// AsCopyAudio is the BasicCodec implementation for AacAudio. 111func (aa AacAudio) AsCopyAudio() (*CopyAudio, bool) { 112 return nil, false 113} 114 115// AsH264Video is the BasicCodec implementation for AacAudio. 116func (aa AacAudio) AsH264Video() (*H264Video, bool) { 117 return nil, false 118} 119 120// AsJpgImage is the BasicCodec implementation for AacAudio. 121func (aa AacAudio) AsJpgImage() (*JpgImage, bool) { 122 return nil, false 123} 124 125// AsPngImage is the BasicCodec implementation for AacAudio. 126func (aa AacAudio) AsPngImage() (*PngImage, bool) { 127 return nil, false 128} 129 130// AsCodec is the BasicCodec implementation for AacAudio. 131func (aa AacAudio) AsCodec() (*Codec, bool) { 132 return nil, false 133} 134 135// AsBasicCodec is the BasicCodec implementation for AacAudio. 136func (aa AacAudio) AsBasicCodec() (BasicCodec, bool) { 137 return &aa, true 138} 139 140// AbsoluteClipTime specifies the clip time as an absolute time position in the media file. The absolute 141// time can point to a different position depending on whether the media file starts from a timestamp of 142// zero or not. 143type AbsoluteClipTime struct { 144 // Time - The time position on the timeline of the input media. It is usually specified as an ISO8601 period. e.g PT30S for 30 seconds. 145 Time *string `json:"time,omitempty"` 146 // OdataType - Possible values include: 'OdataTypeBasicClipTimeOdataTypeClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime' 147 OdataType OdataTypeBasicClipTime `json:"@odata.type,omitempty"` 148} 149 150// MarshalJSON is the custom marshaler for AbsoluteClipTime. 151func (act AbsoluteClipTime) MarshalJSON() ([]byte, error) { 152 act.OdataType = OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime 153 objectMap := make(map[string]interface{}) 154 if act.Time != nil { 155 objectMap["time"] = act.Time 156 } 157 if act.OdataType != "" { 158 objectMap["@odata.type"] = act.OdataType 159 } 160 return json.Marshal(objectMap) 161} 162 163// AsAbsoluteClipTime is the BasicClipTime implementation for AbsoluteClipTime. 164func (act AbsoluteClipTime) AsAbsoluteClipTime() (*AbsoluteClipTime, bool) { 165 return &act, true 166} 167 168// AsUtcClipTime is the BasicClipTime implementation for AbsoluteClipTime. 169func (act AbsoluteClipTime) AsUtcClipTime() (*UtcClipTime, bool) { 170 return nil, false 171} 172 173// AsClipTime is the BasicClipTime implementation for AbsoluteClipTime. 174func (act AbsoluteClipTime) AsClipTime() (*ClipTime, bool) { 175 return nil, false 176} 177 178// AsBasicClipTime is the BasicClipTime implementation for AbsoluteClipTime. 179func (act AbsoluteClipTime) AsBasicClipTime() (BasicClipTime, bool) { 180 return &act, true 181} 182 183// AccessControl ... 184type AccessControl struct { 185 // DefaultAction - The behavior for IP access control in Key Delivery. Possible values include: 'DefaultActionAllow', 'DefaultActionDeny' 186 DefaultAction DefaultAction `json:"defaultAction,omitempty"` 187 // IPAllowList - The IP allow list for access control in Key Delivery. If the default action is set to 'Allow', the IP allow list must be empty. 188 IPAllowList *[]string `json:"ipAllowList,omitempty"` 189} 190 191// AccountEncryption ... 192type AccountEncryption struct { 193 // Type - The type of key used to encrypt the Account Key. Possible values include: 'AccountEncryptionKeyTypeSystemKey', 'AccountEncryptionKeyTypeCustomerKey' 194 Type AccountEncryptionKeyType `json:"type,omitempty"` 195 // KeyVaultProperties - The properties of the key used to encrypt the account. 196 KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` 197 // Identity - The Key Vault identity. 198 Identity *ResourceIdentity `json:"identity,omitempty"` 199 // Status - READ-ONLY; The current status of the Key Vault mapping. 200 Status *string `json:"status,omitempty"` 201} 202 203// MarshalJSON is the custom marshaler for AccountEncryption. 204func (ae AccountEncryption) MarshalJSON() ([]byte, error) { 205 objectMap := make(map[string]interface{}) 206 if ae.Type != "" { 207 objectMap["type"] = ae.Type 208 } 209 if ae.KeyVaultProperties != nil { 210 objectMap["keyVaultProperties"] = ae.KeyVaultProperties 211 } 212 if ae.Identity != nil { 213 objectMap["identity"] = ae.Identity 214 } 215 return json.Marshal(objectMap) 216} 217 218// AccountFilter an Account Filter. 219type AccountFilter struct { 220 autorest.Response `json:"-"` 221 *FilterProperties `json:"properties,omitempty"` 222 // SystemData - READ-ONLY; The system metadata relating to this resource. 223 SystemData *SystemData `json:"systemData,omitempty"` 224 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 225 ID *string `json:"id,omitempty"` 226 // Name - READ-ONLY; The name of the resource 227 Name *string `json:"name,omitempty"` 228 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 229 Type *string `json:"type,omitempty"` 230} 231 232// MarshalJSON is the custom marshaler for AccountFilter. 233func (af AccountFilter) MarshalJSON() ([]byte, error) { 234 objectMap := make(map[string]interface{}) 235 if af.FilterProperties != nil { 236 objectMap["properties"] = af.FilterProperties 237 } 238 return json.Marshal(objectMap) 239} 240 241// UnmarshalJSON is the custom unmarshaler for AccountFilter struct. 242func (af *AccountFilter) UnmarshalJSON(body []byte) error { 243 var m map[string]*json.RawMessage 244 err := json.Unmarshal(body, &m) 245 if err != nil { 246 return err 247 } 248 for k, v := range m { 249 switch k { 250 case "properties": 251 if v != nil { 252 var filterProperties FilterProperties 253 err = json.Unmarshal(*v, &filterProperties) 254 if err != nil { 255 return err 256 } 257 af.FilterProperties = &filterProperties 258 } 259 case "systemData": 260 if v != nil { 261 var systemData SystemData 262 err = json.Unmarshal(*v, &systemData) 263 if err != nil { 264 return err 265 } 266 af.SystemData = &systemData 267 } 268 case "id": 269 if v != nil { 270 var ID string 271 err = json.Unmarshal(*v, &ID) 272 if err != nil { 273 return err 274 } 275 af.ID = &ID 276 } 277 case "name": 278 if v != nil { 279 var name string 280 err = json.Unmarshal(*v, &name) 281 if err != nil { 282 return err 283 } 284 af.Name = &name 285 } 286 case "type": 287 if v != nil { 288 var typeVar string 289 err = json.Unmarshal(*v, &typeVar) 290 if err != nil { 291 return err 292 } 293 af.Type = &typeVar 294 } 295 } 296 } 297 298 return nil 299} 300 301// AccountFilterCollection a collection of AccountFilter items. 302type AccountFilterCollection struct { 303 autorest.Response `json:"-"` 304 // Value - A collection of AccountFilter items. 305 Value *[]AccountFilter `json:"value,omitempty"` 306 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 307 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 308} 309 310// AccountFilterCollectionIterator provides access to a complete listing of AccountFilter values. 311type AccountFilterCollectionIterator struct { 312 i int 313 page AccountFilterCollectionPage 314} 315 316// NextWithContext advances to the next value. If there was an error making 317// the request the iterator does not advance and the error is returned. 318func (iter *AccountFilterCollectionIterator) NextWithContext(ctx context.Context) (err error) { 319 if tracing.IsEnabled() { 320 ctx = tracing.StartSpan(ctx, fqdn+"/AccountFilterCollectionIterator.NextWithContext") 321 defer func() { 322 sc := -1 323 if iter.Response().Response.Response != nil { 324 sc = iter.Response().Response.Response.StatusCode 325 } 326 tracing.EndSpan(ctx, sc, err) 327 }() 328 } 329 iter.i++ 330 if iter.i < len(iter.page.Values()) { 331 return nil 332 } 333 err = iter.page.NextWithContext(ctx) 334 if err != nil { 335 iter.i-- 336 return err 337 } 338 iter.i = 0 339 return nil 340} 341 342// Next advances to the next value. If there was an error making 343// the request the iterator does not advance and the error is returned. 344// Deprecated: Use NextWithContext() instead. 345func (iter *AccountFilterCollectionIterator) Next() error { 346 return iter.NextWithContext(context.Background()) 347} 348 349// NotDone returns true if the enumeration should be started or is not yet complete. 350func (iter AccountFilterCollectionIterator) NotDone() bool { 351 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 352} 353 354// Response returns the raw server response from the last page request. 355func (iter AccountFilterCollectionIterator) Response() AccountFilterCollection { 356 return iter.page.Response() 357} 358 359// Value returns the current value or a zero-initialized value if the 360// iterator has advanced beyond the end of the collection. 361func (iter AccountFilterCollectionIterator) Value() AccountFilter { 362 if !iter.page.NotDone() { 363 return AccountFilter{} 364 } 365 return iter.page.Values()[iter.i] 366} 367 368// Creates a new instance of the AccountFilterCollectionIterator type. 369func NewAccountFilterCollectionIterator(page AccountFilterCollectionPage) AccountFilterCollectionIterator { 370 return AccountFilterCollectionIterator{page: page} 371} 372 373// IsEmpty returns true if the ListResult contains no values. 374func (afc AccountFilterCollection) IsEmpty() bool { 375 return afc.Value == nil || len(*afc.Value) == 0 376} 377 378// hasNextLink returns true if the NextLink is not empty. 379func (afc AccountFilterCollection) hasNextLink() bool { 380 return afc.OdataNextLink != nil && len(*afc.OdataNextLink) != 0 381} 382 383// accountFilterCollectionPreparer prepares a request to retrieve the next set of results. 384// It returns nil if no more results exist. 385func (afc AccountFilterCollection) accountFilterCollectionPreparer(ctx context.Context) (*http.Request, error) { 386 if !afc.hasNextLink() { 387 return nil, nil 388 } 389 return autorest.Prepare((&http.Request{}).WithContext(ctx), 390 autorest.AsJSON(), 391 autorest.AsGet(), 392 autorest.WithBaseURL(to.String(afc.OdataNextLink))) 393} 394 395// AccountFilterCollectionPage contains a page of AccountFilter values. 396type AccountFilterCollectionPage struct { 397 fn func(context.Context, AccountFilterCollection) (AccountFilterCollection, error) 398 afc AccountFilterCollection 399} 400 401// NextWithContext advances to the next page of values. If there was an error making 402// the request the page does not advance and the error is returned. 403func (page *AccountFilterCollectionPage) NextWithContext(ctx context.Context) (err error) { 404 if tracing.IsEnabled() { 405 ctx = tracing.StartSpan(ctx, fqdn+"/AccountFilterCollectionPage.NextWithContext") 406 defer func() { 407 sc := -1 408 if page.Response().Response.Response != nil { 409 sc = page.Response().Response.Response.StatusCode 410 } 411 tracing.EndSpan(ctx, sc, err) 412 }() 413 } 414 for { 415 next, err := page.fn(ctx, page.afc) 416 if err != nil { 417 return err 418 } 419 page.afc = next 420 if !next.hasNextLink() || !next.IsEmpty() { 421 break 422 } 423 } 424 return nil 425} 426 427// Next advances to the next page of values. If there was an error making 428// the request the page does not advance and the error is returned. 429// Deprecated: Use NextWithContext() instead. 430func (page *AccountFilterCollectionPage) Next() error { 431 return page.NextWithContext(context.Background()) 432} 433 434// NotDone returns true if the page enumeration should be started or is not yet complete. 435func (page AccountFilterCollectionPage) NotDone() bool { 436 return !page.afc.IsEmpty() 437} 438 439// Response returns the raw server response from the last page request. 440func (page AccountFilterCollectionPage) Response() AccountFilterCollection { 441 return page.afc 442} 443 444// Values returns the slice of values for the current page or nil if there are no values. 445func (page AccountFilterCollectionPage) Values() []AccountFilter { 446 if page.afc.IsEmpty() { 447 return nil 448 } 449 return *page.afc.Value 450} 451 452// Creates a new instance of the AccountFilterCollectionPage type. 453func NewAccountFilterCollectionPage(cur AccountFilterCollection, getNextPage func(context.Context, AccountFilterCollection) (AccountFilterCollection, error)) AccountFilterCollectionPage { 454 return AccountFilterCollectionPage{ 455 fn: getNextPage, 456 afc: cur, 457 } 458} 459 460// AkamaiAccessControl akamai access control 461type AkamaiAccessControl struct { 462 // AkamaiSignatureHeaderAuthenticationKeyList - authentication key list 463 AkamaiSignatureHeaderAuthenticationKeyList *[]AkamaiSignatureHeaderAuthenticationKey `json:"akamaiSignatureHeaderAuthenticationKeyList,omitempty"` 464} 465 466// AkamaiSignatureHeaderAuthenticationKey akamai Signature Header authentication key. 467type AkamaiSignatureHeaderAuthenticationKey struct { 468 // Identifier - identifier of the key 469 Identifier *string `json:"identifier,omitempty"` 470 // Base64Key - authentication key 471 Base64Key *string `json:"base64Key,omitempty"` 472 // Expiration - The expiration time of the authentication key. 473 Expiration *date.Time `json:"expiration,omitempty"` 474} 475 476// Asset an Asset. 477type Asset struct { 478 autorest.Response `json:"-"` 479 // AssetProperties - The resource properties. 480 *AssetProperties `json:"properties,omitempty"` 481 // SystemData - READ-ONLY; The system metadata relating to this resource. 482 SystemData *SystemData `json:"systemData,omitempty"` 483 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 484 ID *string `json:"id,omitempty"` 485 // Name - READ-ONLY; The name of the resource 486 Name *string `json:"name,omitempty"` 487 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 488 Type *string `json:"type,omitempty"` 489} 490 491// MarshalJSON is the custom marshaler for Asset. 492func (a Asset) MarshalJSON() ([]byte, error) { 493 objectMap := make(map[string]interface{}) 494 if a.AssetProperties != nil { 495 objectMap["properties"] = a.AssetProperties 496 } 497 return json.Marshal(objectMap) 498} 499 500// UnmarshalJSON is the custom unmarshaler for Asset struct. 501func (a *Asset) UnmarshalJSON(body []byte) error { 502 var m map[string]*json.RawMessage 503 err := json.Unmarshal(body, &m) 504 if err != nil { 505 return err 506 } 507 for k, v := range m { 508 switch k { 509 case "properties": 510 if v != nil { 511 var assetProperties AssetProperties 512 err = json.Unmarshal(*v, &assetProperties) 513 if err != nil { 514 return err 515 } 516 a.AssetProperties = &assetProperties 517 } 518 case "systemData": 519 if v != nil { 520 var systemData SystemData 521 err = json.Unmarshal(*v, &systemData) 522 if err != nil { 523 return err 524 } 525 a.SystemData = &systemData 526 } 527 case "id": 528 if v != nil { 529 var ID string 530 err = json.Unmarshal(*v, &ID) 531 if err != nil { 532 return err 533 } 534 a.ID = &ID 535 } 536 case "name": 537 if v != nil { 538 var name string 539 err = json.Unmarshal(*v, &name) 540 if err != nil { 541 return err 542 } 543 a.Name = &name 544 } 545 case "type": 546 if v != nil { 547 var typeVar string 548 err = json.Unmarshal(*v, &typeVar) 549 if err != nil { 550 return err 551 } 552 a.Type = &typeVar 553 } 554 } 555 } 556 557 return nil 558} 559 560// AssetCollection a collection of Asset items. 561type AssetCollection struct { 562 autorest.Response `json:"-"` 563 // Value - A collection of Asset items. 564 Value *[]Asset `json:"value,omitempty"` 565 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 566 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 567} 568 569// AssetCollectionIterator provides access to a complete listing of Asset values. 570type AssetCollectionIterator struct { 571 i int 572 page AssetCollectionPage 573} 574 575// NextWithContext advances to the next value. If there was an error making 576// the request the iterator does not advance and the error is returned. 577func (iter *AssetCollectionIterator) NextWithContext(ctx context.Context) (err error) { 578 if tracing.IsEnabled() { 579 ctx = tracing.StartSpan(ctx, fqdn+"/AssetCollectionIterator.NextWithContext") 580 defer func() { 581 sc := -1 582 if iter.Response().Response.Response != nil { 583 sc = iter.Response().Response.Response.StatusCode 584 } 585 tracing.EndSpan(ctx, sc, err) 586 }() 587 } 588 iter.i++ 589 if iter.i < len(iter.page.Values()) { 590 return nil 591 } 592 err = iter.page.NextWithContext(ctx) 593 if err != nil { 594 iter.i-- 595 return err 596 } 597 iter.i = 0 598 return nil 599} 600 601// Next advances to the next value. If there was an error making 602// the request the iterator does not advance and the error is returned. 603// Deprecated: Use NextWithContext() instead. 604func (iter *AssetCollectionIterator) Next() error { 605 return iter.NextWithContext(context.Background()) 606} 607 608// NotDone returns true if the enumeration should be started or is not yet complete. 609func (iter AssetCollectionIterator) NotDone() bool { 610 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 611} 612 613// Response returns the raw server response from the last page request. 614func (iter AssetCollectionIterator) Response() AssetCollection { 615 return iter.page.Response() 616} 617 618// Value returns the current value or a zero-initialized value if the 619// iterator has advanced beyond the end of the collection. 620func (iter AssetCollectionIterator) Value() Asset { 621 if !iter.page.NotDone() { 622 return Asset{} 623 } 624 return iter.page.Values()[iter.i] 625} 626 627// Creates a new instance of the AssetCollectionIterator type. 628func NewAssetCollectionIterator(page AssetCollectionPage) AssetCollectionIterator { 629 return AssetCollectionIterator{page: page} 630} 631 632// IsEmpty returns true if the ListResult contains no values. 633func (ac AssetCollection) IsEmpty() bool { 634 return ac.Value == nil || len(*ac.Value) == 0 635} 636 637// hasNextLink returns true if the NextLink is not empty. 638func (ac AssetCollection) hasNextLink() bool { 639 return ac.OdataNextLink != nil && len(*ac.OdataNextLink) != 0 640} 641 642// assetCollectionPreparer prepares a request to retrieve the next set of results. 643// It returns nil if no more results exist. 644func (ac AssetCollection) assetCollectionPreparer(ctx context.Context) (*http.Request, error) { 645 if !ac.hasNextLink() { 646 return nil, nil 647 } 648 return autorest.Prepare((&http.Request{}).WithContext(ctx), 649 autorest.AsJSON(), 650 autorest.AsGet(), 651 autorest.WithBaseURL(to.String(ac.OdataNextLink))) 652} 653 654// AssetCollectionPage contains a page of Asset values. 655type AssetCollectionPage struct { 656 fn func(context.Context, AssetCollection) (AssetCollection, error) 657 ac AssetCollection 658} 659 660// NextWithContext advances to the next page of values. If there was an error making 661// the request the page does not advance and the error is returned. 662func (page *AssetCollectionPage) NextWithContext(ctx context.Context) (err error) { 663 if tracing.IsEnabled() { 664 ctx = tracing.StartSpan(ctx, fqdn+"/AssetCollectionPage.NextWithContext") 665 defer func() { 666 sc := -1 667 if page.Response().Response.Response != nil { 668 sc = page.Response().Response.Response.StatusCode 669 } 670 tracing.EndSpan(ctx, sc, err) 671 }() 672 } 673 for { 674 next, err := page.fn(ctx, page.ac) 675 if err != nil { 676 return err 677 } 678 page.ac = next 679 if !next.hasNextLink() || !next.IsEmpty() { 680 break 681 } 682 } 683 return nil 684} 685 686// Next advances to the next page of values. If there was an error making 687// the request the page does not advance and the error is returned. 688// Deprecated: Use NextWithContext() instead. 689func (page *AssetCollectionPage) Next() error { 690 return page.NextWithContext(context.Background()) 691} 692 693// NotDone returns true if the page enumeration should be started or is not yet complete. 694func (page AssetCollectionPage) NotDone() bool { 695 return !page.ac.IsEmpty() 696} 697 698// Response returns the raw server response from the last page request. 699func (page AssetCollectionPage) Response() AssetCollection { 700 return page.ac 701} 702 703// Values returns the slice of values for the current page or nil if there are no values. 704func (page AssetCollectionPage) Values() []Asset { 705 if page.ac.IsEmpty() { 706 return nil 707 } 708 return *page.ac.Value 709} 710 711// Creates a new instance of the AssetCollectionPage type. 712func NewAssetCollectionPage(cur AssetCollection, getNextPage func(context.Context, AssetCollection) (AssetCollection, error)) AssetCollectionPage { 713 return AssetCollectionPage{ 714 fn: getNextPage, 715 ac: cur, 716 } 717} 718 719// AssetContainerSas the Asset Storage container SAS URLs. 720type AssetContainerSas struct { 721 autorest.Response `json:"-"` 722 // AssetContainerSasUrls - The list of Asset container SAS URLs. 723 AssetContainerSasUrls *[]string `json:"assetContainerSasUrls,omitempty"` 724} 725 726// AssetFileEncryptionMetadata the Asset File Storage encryption metadata. 727type AssetFileEncryptionMetadata struct { 728 // InitializationVector - The Asset File initialization vector. 729 InitializationVector *string `json:"initializationVector,omitempty"` 730 // AssetFileName - The Asset File name. 731 AssetFileName *string `json:"assetFileName,omitempty"` 732 // AssetFileID - The Asset File Id. 733 AssetFileID *uuid.UUID `json:"assetFileId,omitempty"` 734} 735 736// AssetFilter an Asset Filter. 737type AssetFilter struct { 738 autorest.Response `json:"-"` 739 *FilterProperties `json:"properties,omitempty"` 740 // SystemData - READ-ONLY; The system metadata relating to this resource. 741 SystemData *SystemData `json:"systemData,omitempty"` 742 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 743 ID *string `json:"id,omitempty"` 744 // Name - READ-ONLY; The name of the resource 745 Name *string `json:"name,omitempty"` 746 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 747 Type *string `json:"type,omitempty"` 748} 749 750// MarshalJSON is the custom marshaler for AssetFilter. 751func (af AssetFilter) MarshalJSON() ([]byte, error) { 752 objectMap := make(map[string]interface{}) 753 if af.FilterProperties != nil { 754 objectMap["properties"] = af.FilterProperties 755 } 756 return json.Marshal(objectMap) 757} 758 759// UnmarshalJSON is the custom unmarshaler for AssetFilter struct. 760func (af *AssetFilter) UnmarshalJSON(body []byte) error { 761 var m map[string]*json.RawMessage 762 err := json.Unmarshal(body, &m) 763 if err != nil { 764 return err 765 } 766 for k, v := range m { 767 switch k { 768 case "properties": 769 if v != nil { 770 var filterProperties FilterProperties 771 err = json.Unmarshal(*v, &filterProperties) 772 if err != nil { 773 return err 774 } 775 af.FilterProperties = &filterProperties 776 } 777 case "systemData": 778 if v != nil { 779 var systemData SystemData 780 err = json.Unmarshal(*v, &systemData) 781 if err != nil { 782 return err 783 } 784 af.SystemData = &systemData 785 } 786 case "id": 787 if v != nil { 788 var ID string 789 err = json.Unmarshal(*v, &ID) 790 if err != nil { 791 return err 792 } 793 af.ID = &ID 794 } 795 case "name": 796 if v != nil { 797 var name string 798 err = json.Unmarshal(*v, &name) 799 if err != nil { 800 return err 801 } 802 af.Name = &name 803 } 804 case "type": 805 if v != nil { 806 var typeVar string 807 err = json.Unmarshal(*v, &typeVar) 808 if err != nil { 809 return err 810 } 811 af.Type = &typeVar 812 } 813 } 814 } 815 816 return nil 817} 818 819// AssetFilterCollection a collection of AssetFilter items. 820type AssetFilterCollection struct { 821 autorest.Response `json:"-"` 822 // Value - A collection of AssetFilter items. 823 Value *[]AssetFilter `json:"value,omitempty"` 824 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 825 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 826} 827 828// AssetFilterCollectionIterator provides access to a complete listing of AssetFilter values. 829type AssetFilterCollectionIterator struct { 830 i int 831 page AssetFilterCollectionPage 832} 833 834// NextWithContext advances to the next value. If there was an error making 835// the request the iterator does not advance and the error is returned. 836func (iter *AssetFilterCollectionIterator) NextWithContext(ctx context.Context) (err error) { 837 if tracing.IsEnabled() { 838 ctx = tracing.StartSpan(ctx, fqdn+"/AssetFilterCollectionIterator.NextWithContext") 839 defer func() { 840 sc := -1 841 if iter.Response().Response.Response != nil { 842 sc = iter.Response().Response.Response.StatusCode 843 } 844 tracing.EndSpan(ctx, sc, err) 845 }() 846 } 847 iter.i++ 848 if iter.i < len(iter.page.Values()) { 849 return nil 850 } 851 err = iter.page.NextWithContext(ctx) 852 if err != nil { 853 iter.i-- 854 return err 855 } 856 iter.i = 0 857 return nil 858} 859 860// Next advances to the next value. If there was an error making 861// the request the iterator does not advance and the error is returned. 862// Deprecated: Use NextWithContext() instead. 863func (iter *AssetFilterCollectionIterator) Next() error { 864 return iter.NextWithContext(context.Background()) 865} 866 867// NotDone returns true if the enumeration should be started or is not yet complete. 868func (iter AssetFilterCollectionIterator) NotDone() bool { 869 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 870} 871 872// Response returns the raw server response from the last page request. 873func (iter AssetFilterCollectionIterator) Response() AssetFilterCollection { 874 return iter.page.Response() 875} 876 877// Value returns the current value or a zero-initialized value if the 878// iterator has advanced beyond the end of the collection. 879func (iter AssetFilterCollectionIterator) Value() AssetFilter { 880 if !iter.page.NotDone() { 881 return AssetFilter{} 882 } 883 return iter.page.Values()[iter.i] 884} 885 886// Creates a new instance of the AssetFilterCollectionIterator type. 887func NewAssetFilterCollectionIterator(page AssetFilterCollectionPage) AssetFilterCollectionIterator { 888 return AssetFilterCollectionIterator{page: page} 889} 890 891// IsEmpty returns true if the ListResult contains no values. 892func (afc AssetFilterCollection) IsEmpty() bool { 893 return afc.Value == nil || len(*afc.Value) == 0 894} 895 896// hasNextLink returns true if the NextLink is not empty. 897func (afc AssetFilterCollection) hasNextLink() bool { 898 return afc.OdataNextLink != nil && len(*afc.OdataNextLink) != 0 899} 900 901// assetFilterCollectionPreparer prepares a request to retrieve the next set of results. 902// It returns nil if no more results exist. 903func (afc AssetFilterCollection) assetFilterCollectionPreparer(ctx context.Context) (*http.Request, error) { 904 if !afc.hasNextLink() { 905 return nil, nil 906 } 907 return autorest.Prepare((&http.Request{}).WithContext(ctx), 908 autorest.AsJSON(), 909 autorest.AsGet(), 910 autorest.WithBaseURL(to.String(afc.OdataNextLink))) 911} 912 913// AssetFilterCollectionPage contains a page of AssetFilter values. 914type AssetFilterCollectionPage struct { 915 fn func(context.Context, AssetFilterCollection) (AssetFilterCollection, error) 916 afc AssetFilterCollection 917} 918 919// NextWithContext advances to the next page of values. If there was an error making 920// the request the page does not advance and the error is returned. 921func (page *AssetFilterCollectionPage) NextWithContext(ctx context.Context) (err error) { 922 if tracing.IsEnabled() { 923 ctx = tracing.StartSpan(ctx, fqdn+"/AssetFilterCollectionPage.NextWithContext") 924 defer func() { 925 sc := -1 926 if page.Response().Response.Response != nil { 927 sc = page.Response().Response.Response.StatusCode 928 } 929 tracing.EndSpan(ctx, sc, err) 930 }() 931 } 932 for { 933 next, err := page.fn(ctx, page.afc) 934 if err != nil { 935 return err 936 } 937 page.afc = next 938 if !next.hasNextLink() || !next.IsEmpty() { 939 break 940 } 941 } 942 return nil 943} 944 945// Next advances to the next page of values. If there was an error making 946// the request the page does not advance and the error is returned. 947// Deprecated: Use NextWithContext() instead. 948func (page *AssetFilterCollectionPage) Next() error { 949 return page.NextWithContext(context.Background()) 950} 951 952// NotDone returns true if the page enumeration should be started or is not yet complete. 953func (page AssetFilterCollectionPage) NotDone() bool { 954 return !page.afc.IsEmpty() 955} 956 957// Response returns the raw server response from the last page request. 958func (page AssetFilterCollectionPage) Response() AssetFilterCollection { 959 return page.afc 960} 961 962// Values returns the slice of values for the current page or nil if there are no values. 963func (page AssetFilterCollectionPage) Values() []AssetFilter { 964 if page.afc.IsEmpty() { 965 return nil 966 } 967 return *page.afc.Value 968} 969 970// Creates a new instance of the AssetFilterCollectionPage type. 971func NewAssetFilterCollectionPage(cur AssetFilterCollection, getNextPage func(context.Context, AssetFilterCollection) (AssetFilterCollection, error)) AssetFilterCollectionPage { 972 return AssetFilterCollectionPage{ 973 fn: getNextPage, 974 afc: cur, 975 } 976} 977 978// AssetProperties the Asset properties. 979type AssetProperties struct { 980 // AssetID - READ-ONLY; The Asset ID. 981 AssetID *uuid.UUID `json:"assetId,omitempty"` 982 // Created - READ-ONLY; The creation date of the Asset. 983 Created *date.Time `json:"created,omitempty"` 984 // LastModified - READ-ONLY; The last modified date of the Asset. 985 LastModified *date.Time `json:"lastModified,omitempty"` 986 // AlternateID - The alternate ID of the Asset. 987 AlternateID *string `json:"alternateId,omitempty"` 988 // Description - The Asset description. 989 Description *string `json:"description,omitempty"` 990 // Container - The name of the asset blob container. 991 Container *string `json:"container,omitempty"` 992 // StorageAccountName - The name of the storage account. 993 StorageAccountName *string `json:"storageAccountName,omitempty"` 994 // StorageEncryptionFormat - READ-ONLY; The Asset encryption format. One of None or MediaStorageEncryption. Possible values include: 'AssetStorageEncryptionFormatNone', 'AssetStorageEncryptionFormatMediaStorageClientEncryption' 995 StorageEncryptionFormat AssetStorageEncryptionFormat `json:"storageEncryptionFormat,omitempty"` 996} 997 998// MarshalJSON is the custom marshaler for AssetProperties. 999func (ap AssetProperties) MarshalJSON() ([]byte, error) { 1000 objectMap := make(map[string]interface{}) 1001 if ap.AlternateID != nil { 1002 objectMap["alternateId"] = ap.AlternateID 1003 } 1004 if ap.Description != nil { 1005 objectMap["description"] = ap.Description 1006 } 1007 if ap.Container != nil { 1008 objectMap["container"] = ap.Container 1009 } 1010 if ap.StorageAccountName != nil { 1011 objectMap["storageAccountName"] = ap.StorageAccountName 1012 } 1013 return json.Marshal(objectMap) 1014} 1015 1016// AssetStreamingLocator properties of the Streaming Locator. 1017type AssetStreamingLocator struct { 1018 // Name - READ-ONLY; Streaming Locator name. 1019 Name *string `json:"name,omitempty"` 1020 // AssetName - READ-ONLY; Asset Name. 1021 AssetName *string `json:"assetName,omitempty"` 1022 // Created - READ-ONLY; The creation time of the Streaming Locator. 1023 Created *date.Time `json:"created,omitempty"` 1024 // StartTime - READ-ONLY; The start time of the Streaming Locator. 1025 StartTime *date.Time `json:"startTime,omitempty"` 1026 // EndTime - READ-ONLY; The end time of the Streaming Locator. 1027 EndTime *date.Time `json:"endTime,omitempty"` 1028 // StreamingLocatorID - READ-ONLY; StreamingLocatorId of the Streaming Locator. 1029 StreamingLocatorID *uuid.UUID `json:"streamingLocatorId,omitempty"` 1030 // StreamingPolicyName - READ-ONLY; Name of the Streaming Policy used by this Streaming Locator. 1031 StreamingPolicyName *string `json:"streamingPolicyName,omitempty"` 1032 // DefaultContentKeyPolicyName - READ-ONLY; Name of the default ContentKeyPolicy used by this Streaming Locator. 1033 DefaultContentKeyPolicyName *string `json:"defaultContentKeyPolicyName,omitempty"` 1034} 1035 1036// MarshalJSON is the custom marshaler for AssetStreamingLocator. 1037func (asl AssetStreamingLocator) MarshalJSON() ([]byte, error) { 1038 objectMap := make(map[string]interface{}) 1039 return json.Marshal(objectMap) 1040} 1041 1042// BasicAudio defines the common properties for all audio codecs. 1043type BasicAudio interface { 1044 AsAacAudio() (*AacAudio, bool) 1045 AsAudio() (*Audio, bool) 1046} 1047 1048// Audio defines the common properties for all audio codecs. 1049type Audio struct { 1050 // Channels - The number of channels in the audio. 1051 Channels *int32 `json:"channels,omitempty"` 1052 // SamplingRate - The sampling rate to use for encoding in hertz. 1053 SamplingRate *int32 `json:"samplingRate,omitempty"` 1054 // Bitrate - The bitrate, in bits per second, of the output encoded audio. 1055 Bitrate *int32 `json:"bitrate,omitempty"` 1056 // Label - An optional label for the codec. The label can be used to control muxing behavior. 1057 Label *string `json:"label,omitempty"` 1058 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 1059 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 1060} 1061 1062func unmarshalBasicAudio(body []byte) (BasicAudio, error) { 1063 var m map[string]interface{} 1064 err := json.Unmarshal(body, &m) 1065 if err != nil { 1066 return nil, err 1067 } 1068 1069 switch m["@odata.type"] { 1070 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio): 1071 var aa AacAudio 1072 err := json.Unmarshal(body, &aa) 1073 return aa, err 1074 default: 1075 var a Audio 1076 err := json.Unmarshal(body, &a) 1077 return a, err 1078 } 1079} 1080func unmarshalBasicAudioArray(body []byte) ([]BasicAudio, error) { 1081 var rawMessages []*json.RawMessage 1082 err := json.Unmarshal(body, &rawMessages) 1083 if err != nil { 1084 return nil, err 1085 } 1086 1087 aArray := make([]BasicAudio, len(rawMessages)) 1088 1089 for index, rawMessage := range rawMessages { 1090 a, err := unmarshalBasicAudio(*rawMessage) 1091 if err != nil { 1092 return nil, err 1093 } 1094 aArray[index] = a 1095 } 1096 return aArray, nil 1097} 1098 1099// MarshalJSON is the custom marshaler for Audio. 1100func (a Audio) MarshalJSON() ([]byte, error) { 1101 a.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio 1102 objectMap := make(map[string]interface{}) 1103 if a.Channels != nil { 1104 objectMap["channels"] = a.Channels 1105 } 1106 if a.SamplingRate != nil { 1107 objectMap["samplingRate"] = a.SamplingRate 1108 } 1109 if a.Bitrate != nil { 1110 objectMap["bitrate"] = a.Bitrate 1111 } 1112 if a.Label != nil { 1113 objectMap["label"] = a.Label 1114 } 1115 if a.OdataType != "" { 1116 objectMap["@odata.type"] = a.OdataType 1117 } 1118 return json.Marshal(objectMap) 1119} 1120 1121// AsAudio is the BasicCodec implementation for Audio. 1122func (a Audio) AsAudio() (*Audio, bool) { 1123 return &a, true 1124} 1125 1126// AsBasicAudio is the BasicCodec implementation for Audio. 1127func (a Audio) AsBasicAudio() (BasicAudio, bool) { 1128 return &a, true 1129} 1130 1131// AsAacAudio is the BasicCodec implementation for Audio. 1132func (a Audio) AsAacAudio() (*AacAudio, bool) { 1133 return nil, false 1134} 1135 1136// AsVideo is the BasicCodec implementation for Audio. 1137func (a Audio) AsVideo() (*Video, bool) { 1138 return nil, false 1139} 1140 1141// AsBasicVideo is the BasicCodec implementation for Audio. 1142func (a Audio) AsBasicVideo() (BasicVideo, bool) { 1143 return nil, false 1144} 1145 1146// AsH265Video is the BasicCodec implementation for Audio. 1147func (a Audio) AsH265Video() (*H265Video, bool) { 1148 return nil, false 1149} 1150 1151// AsCopyVideo is the BasicCodec implementation for Audio. 1152func (a Audio) AsCopyVideo() (*CopyVideo, bool) { 1153 return nil, false 1154} 1155 1156// AsImage is the BasicCodec implementation for Audio. 1157func (a Audio) AsImage() (*Image, bool) { 1158 return nil, false 1159} 1160 1161// AsBasicImage is the BasicCodec implementation for Audio. 1162func (a Audio) AsBasicImage() (BasicImage, bool) { 1163 return nil, false 1164} 1165 1166// AsCopyAudio is the BasicCodec implementation for Audio. 1167func (a Audio) AsCopyAudio() (*CopyAudio, bool) { 1168 return nil, false 1169} 1170 1171// AsH264Video is the BasicCodec implementation for Audio. 1172func (a Audio) AsH264Video() (*H264Video, bool) { 1173 return nil, false 1174} 1175 1176// AsJpgImage is the BasicCodec implementation for Audio. 1177func (a Audio) AsJpgImage() (*JpgImage, bool) { 1178 return nil, false 1179} 1180 1181// AsPngImage is the BasicCodec implementation for Audio. 1182func (a Audio) AsPngImage() (*PngImage, bool) { 1183 return nil, false 1184} 1185 1186// AsCodec is the BasicCodec implementation for Audio. 1187func (a Audio) AsCodec() (*Codec, bool) { 1188 return nil, false 1189} 1190 1191// AsBasicCodec is the BasicCodec implementation for Audio. 1192func (a Audio) AsBasicCodec() (BasicCodec, bool) { 1193 return &a, true 1194} 1195 1196// BasicAudioAnalyzerPreset the Audio Analyzer preset applies a pre-defined set of AI-based analysis operations, 1197// including speech transcription. Currently, the preset supports processing of content with a single audio track. 1198type BasicAudioAnalyzerPreset interface { 1199 AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) 1200 AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) 1201} 1202 1203// AudioAnalyzerPreset the Audio Analyzer preset applies a pre-defined set of AI-based analysis operations, 1204// including speech transcription. Currently, the preset supports processing of content with a single audio 1205// track. 1206type AudioAnalyzerPreset struct { 1207 // AudioLanguage - The language for the audio payload in the input using the BCP-47 format of 'language tag-region' (e.g: 'en-US'). If you know the language of your content, it is recommended that you specify it. The language must be specified explicitly for AudioAnalysisMode::Basic, since automatic language detection is not included in basic mode. If the language isn't specified or set to null, automatic language detection will choose the first language detected and process with the selected language for the duration of the file. It does not currently support dynamically switching between languages after the first language is detected. The automatic detection works best with audio recordings with clearly discernable speech. If automatic detection fails to find the language, transcription would fallback to 'en-US'." The list of supported languages is available here: https://go.microsoft.com/fwlink/?linkid=2109463 1208 AudioLanguage *string `json:"audioLanguage,omitempty"` 1209 // Mode - Determines the set of audio analysis operations to be performed. If unspecified, the Standard AudioAnalysisMode would be chosen. Possible values include: 'AudioAnalysisModeStandard', 'AudioAnalysisModeBasic' 1210 Mode AudioAnalysisMode `json:"mode,omitempty"` 1211 // ExperimentalOptions - Dictionary containing key value pairs for parameters not exposed in the preset itself 1212 ExperimentalOptions map[string]*string `json:"experimentalOptions"` 1213 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 1214 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 1215} 1216 1217func unmarshalBasicAudioAnalyzerPreset(body []byte) (BasicAudioAnalyzerPreset, error) { 1218 var m map[string]interface{} 1219 err := json.Unmarshal(body, &m) 1220 if err != nil { 1221 return nil, err 1222 } 1223 1224 switch m["@odata.type"] { 1225 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset): 1226 var vap VideoAnalyzerPreset 1227 err := json.Unmarshal(body, &vap) 1228 return vap, err 1229 default: 1230 var aap AudioAnalyzerPreset 1231 err := json.Unmarshal(body, &aap) 1232 return aap, err 1233 } 1234} 1235func unmarshalBasicAudioAnalyzerPresetArray(body []byte) ([]BasicAudioAnalyzerPreset, error) { 1236 var rawMessages []*json.RawMessage 1237 err := json.Unmarshal(body, &rawMessages) 1238 if err != nil { 1239 return nil, err 1240 } 1241 1242 aapArray := make([]BasicAudioAnalyzerPreset, len(rawMessages)) 1243 1244 for index, rawMessage := range rawMessages { 1245 aap, err := unmarshalBasicAudioAnalyzerPreset(*rawMessage) 1246 if err != nil { 1247 return nil, err 1248 } 1249 aapArray[index] = aap 1250 } 1251 return aapArray, nil 1252} 1253 1254// MarshalJSON is the custom marshaler for AudioAnalyzerPreset. 1255func (aap AudioAnalyzerPreset) MarshalJSON() ([]byte, error) { 1256 aap.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset 1257 objectMap := make(map[string]interface{}) 1258 if aap.AudioLanguage != nil { 1259 objectMap["audioLanguage"] = aap.AudioLanguage 1260 } 1261 if aap.Mode != "" { 1262 objectMap["mode"] = aap.Mode 1263 } 1264 if aap.ExperimentalOptions != nil { 1265 objectMap["experimentalOptions"] = aap.ExperimentalOptions 1266 } 1267 if aap.OdataType != "" { 1268 objectMap["@odata.type"] = aap.OdataType 1269 } 1270 return json.Marshal(objectMap) 1271} 1272 1273// AsFaceDetectorPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1274func (aap AudioAnalyzerPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 1275 return nil, false 1276} 1277 1278// AsAudioAnalyzerPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1279func (aap AudioAnalyzerPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 1280 return &aap, true 1281} 1282 1283// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1284func (aap AudioAnalyzerPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 1285 return &aap, true 1286} 1287 1288// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1289func (aap AudioAnalyzerPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 1290 return nil, false 1291} 1292 1293// AsStandardEncoderPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1294func (aap AudioAnalyzerPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 1295 return nil, false 1296} 1297 1298// AsVideoAnalyzerPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1299func (aap AudioAnalyzerPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 1300 return nil, false 1301} 1302 1303// AsPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1304func (aap AudioAnalyzerPreset) AsPreset() (*Preset, bool) { 1305 return nil, false 1306} 1307 1308// AsBasicPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1309func (aap AudioAnalyzerPreset) AsBasicPreset() (BasicPreset, bool) { 1310 return &aap, true 1311} 1312 1313// AudioOverlay describes the properties of an audio overlay. 1314type AudioOverlay struct { 1315 // InputLabel - The label of the job input which is to be used as an overlay. The Input must specify exactly one file. You can specify an image file in JPG, PNG, GIF or BMP format, or an audio file (such as a WAV, MP3, WMA or M4A file), or a video file. See https://aka.ms/mesformats for the complete list of supported audio and video file formats. 1316 InputLabel *string `json:"inputLabel,omitempty"` 1317 // Start - The start position, with reference to the input video, at which the overlay starts. The value should be in ISO 8601 format. For example, PT05S to start the overlay at 5 seconds into the input video. If not specified the overlay starts from the beginning of the input video. 1318 Start *string `json:"start,omitempty"` 1319 // End - The end position, with reference to the input video, at which the overlay ends. The value should be in ISO 8601 format. For example, PT30S to end the overlay at 30 seconds into the input video. If not specified or the value is greater than the input video duration, the overlay will be applied until the end of the input video if the overlay media duration is greater than the input video duration, else the overlay will last as long as the overlay media duration. 1320 End *string `json:"end,omitempty"` 1321 // FadeInDuration - The duration over which the overlay fades in onto the input video. The value should be in ISO 8601 duration format. If not specified the default behavior is to have no fade in (same as PT0S). 1322 FadeInDuration *string `json:"fadeInDuration,omitempty"` 1323 // FadeOutDuration - The duration over which the overlay fades out of the input video. The value should be in ISO 8601 duration format. If not specified the default behavior is to have no fade out (same as PT0S). 1324 FadeOutDuration *string `json:"fadeOutDuration,omitempty"` 1325 // AudioGainLevel - The gain level of audio in the overlay. The value should be in the range [0, 1.0]. The default is 1.0. 1326 AudioGainLevel *float64 `json:"audioGainLevel,omitempty"` 1327 // OdataType - Possible values include: 'OdataTypeBasicOverlayOdataTypeOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay' 1328 OdataType OdataTypeBasicOverlay `json:"@odata.type,omitempty"` 1329} 1330 1331// MarshalJSON is the custom marshaler for AudioOverlay. 1332func (ao AudioOverlay) MarshalJSON() ([]byte, error) { 1333 ao.OdataType = OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay 1334 objectMap := make(map[string]interface{}) 1335 if ao.InputLabel != nil { 1336 objectMap["inputLabel"] = ao.InputLabel 1337 } 1338 if ao.Start != nil { 1339 objectMap["start"] = ao.Start 1340 } 1341 if ao.End != nil { 1342 objectMap["end"] = ao.End 1343 } 1344 if ao.FadeInDuration != nil { 1345 objectMap["fadeInDuration"] = ao.FadeInDuration 1346 } 1347 if ao.FadeOutDuration != nil { 1348 objectMap["fadeOutDuration"] = ao.FadeOutDuration 1349 } 1350 if ao.AudioGainLevel != nil { 1351 objectMap["audioGainLevel"] = ao.AudioGainLevel 1352 } 1353 if ao.OdataType != "" { 1354 objectMap["@odata.type"] = ao.OdataType 1355 } 1356 return json.Marshal(objectMap) 1357} 1358 1359// AsAudioOverlay is the BasicOverlay implementation for AudioOverlay. 1360func (ao AudioOverlay) AsAudioOverlay() (*AudioOverlay, bool) { 1361 return &ao, true 1362} 1363 1364// AsVideoOverlay is the BasicOverlay implementation for AudioOverlay. 1365func (ao AudioOverlay) AsVideoOverlay() (*VideoOverlay, bool) { 1366 return nil, false 1367} 1368 1369// AsOverlay is the BasicOverlay implementation for AudioOverlay. 1370func (ao AudioOverlay) AsOverlay() (*Overlay, bool) { 1371 return nil, false 1372} 1373 1374// AsBasicOverlay is the BasicOverlay implementation for AudioOverlay. 1375func (ao AudioOverlay) AsBasicOverlay() (BasicOverlay, bool) { 1376 return &ao, true 1377} 1378 1379// BasicAudioTrackDescriptor a TrackSelection to select audio tracks. 1380type BasicAudioTrackDescriptor interface { 1381 AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) 1382 AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) 1383 AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) 1384} 1385 1386// AudioTrackDescriptor a TrackSelection to select audio tracks. 1387type AudioTrackDescriptor struct { 1388 // ChannelMapping - Optional designation for single channel audio tracks. Can be used to combine the tracks into stereo or multi-channel audio tracks. Possible values include: 'ChannelMappingFrontLeft', 'ChannelMappingFrontRight', 'ChannelMappingCenter', 'ChannelMappingLowFrequencyEffects', 'ChannelMappingBackLeft', 'ChannelMappingBackRight', 'ChannelMappingStereoLeft', 'ChannelMappingStereoRight' 1389 ChannelMapping ChannelMapping `json:"channelMapping,omitempty"` 1390 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 1391 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 1392} 1393 1394func unmarshalBasicAudioTrackDescriptor(body []byte) (BasicAudioTrackDescriptor, error) { 1395 var m map[string]interface{} 1396 err := json.Unmarshal(body, &m) 1397 if err != nil { 1398 return nil, err 1399 } 1400 1401 switch m["@odata.type"] { 1402 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute): 1403 var satba SelectAudioTrackByAttribute 1404 err := json.Unmarshal(body, &satba) 1405 return satba, err 1406 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID): 1407 var satbi SelectAudioTrackByID 1408 err := json.Unmarshal(body, &satbi) 1409 return satbi, err 1410 default: 1411 var atd AudioTrackDescriptor 1412 err := json.Unmarshal(body, &atd) 1413 return atd, err 1414 } 1415} 1416func unmarshalBasicAudioTrackDescriptorArray(body []byte) ([]BasicAudioTrackDescriptor, error) { 1417 var rawMessages []*json.RawMessage 1418 err := json.Unmarshal(body, &rawMessages) 1419 if err != nil { 1420 return nil, err 1421 } 1422 1423 atdArray := make([]BasicAudioTrackDescriptor, len(rawMessages)) 1424 1425 for index, rawMessage := range rawMessages { 1426 atd, err := unmarshalBasicAudioTrackDescriptor(*rawMessage) 1427 if err != nil { 1428 return nil, err 1429 } 1430 atdArray[index] = atd 1431 } 1432 return atdArray, nil 1433} 1434 1435// MarshalJSON is the custom marshaler for AudioTrackDescriptor. 1436func (atd AudioTrackDescriptor) MarshalJSON() ([]byte, error) { 1437 atd.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor 1438 objectMap := make(map[string]interface{}) 1439 if atd.ChannelMapping != "" { 1440 objectMap["channelMapping"] = atd.ChannelMapping 1441 } 1442 if atd.OdataType != "" { 1443 objectMap["@odata.type"] = atd.OdataType 1444 } 1445 return json.Marshal(objectMap) 1446} 1447 1448// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1449func (atd AudioTrackDescriptor) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 1450 return &atd, true 1451} 1452 1453// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1454func (atd AudioTrackDescriptor) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 1455 return &atd, true 1456} 1457 1458// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1459func (atd AudioTrackDescriptor) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 1460 return nil, false 1461} 1462 1463// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1464func (atd AudioTrackDescriptor) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 1465 return nil, false 1466} 1467 1468// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1469func (atd AudioTrackDescriptor) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 1470 return nil, false 1471} 1472 1473// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1474func (atd AudioTrackDescriptor) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 1475 return nil, false 1476} 1477 1478// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1479func (atd AudioTrackDescriptor) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 1480 return nil, false 1481} 1482 1483// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1484func (atd AudioTrackDescriptor) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 1485 return nil, false 1486} 1487 1488// AsTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1489func (atd AudioTrackDescriptor) AsTrackDescriptor() (*TrackDescriptor, bool) { 1490 return nil, false 1491} 1492 1493// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1494func (atd AudioTrackDescriptor) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 1495 return &atd, true 1496} 1497 1498// AzureEntityResource the resource model definition for an Azure Resource Manager resource with an etag. 1499type AzureEntityResource struct { 1500 // Etag - READ-ONLY; Resource Etag. 1501 Etag *string `json:"etag,omitempty"` 1502 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 1503 ID *string `json:"id,omitempty"` 1504 // Name - READ-ONLY; The name of the resource 1505 Name *string `json:"name,omitempty"` 1506 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 1507 Type *string `json:"type,omitempty"` 1508} 1509 1510// MarshalJSON is the custom marshaler for AzureEntityResource. 1511func (aer AzureEntityResource) MarshalJSON() ([]byte, error) { 1512 objectMap := make(map[string]interface{}) 1513 return json.Marshal(objectMap) 1514} 1515 1516// BuiltInStandardEncoderPreset describes a built-in preset for encoding the input video with the Standard 1517// Encoder. 1518type BuiltInStandardEncoderPreset struct { 1519 // Configurations - PresetConfigurations are only supported for the ContentAwareEncoding and H265ContentAwareEncoding built-in presets. These settings will not affect other built-in or custom defined presets. 1520 Configurations *PresetConfigurations `json:"configurations,omitempty"` 1521 // PresetName - The built-in preset to be used for encoding videos. Possible values include: 'EncoderNamedPresetH264SingleBitrateSD', 'EncoderNamedPresetH264SingleBitrate720p', 'EncoderNamedPresetH264SingleBitrate1080p', 'EncoderNamedPresetAdaptiveStreaming', 'EncoderNamedPresetAACGoodQualityAudio', 'EncoderNamedPresetContentAwareEncodingExperimental', 'EncoderNamedPresetContentAwareEncoding', 'EncoderNamedPresetCopyAllBitrateNonInterleaved', 'EncoderNamedPresetH264MultipleBitrate1080p', 'EncoderNamedPresetH264MultipleBitrate720p', 'EncoderNamedPresetH264MultipleBitrateSD', 'EncoderNamedPresetH265ContentAwareEncoding', 'EncoderNamedPresetH265AdaptiveStreaming', 'EncoderNamedPresetH265SingleBitrate720p', 'EncoderNamedPresetH265SingleBitrate1080p', 'EncoderNamedPresetH265SingleBitrate4K' 1522 PresetName EncoderNamedPreset `json:"presetName,omitempty"` 1523 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 1524 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 1525} 1526 1527// MarshalJSON is the custom marshaler for BuiltInStandardEncoderPreset. 1528func (bisep BuiltInStandardEncoderPreset) MarshalJSON() ([]byte, error) { 1529 bisep.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset 1530 objectMap := make(map[string]interface{}) 1531 if bisep.Configurations != nil { 1532 objectMap["configurations"] = bisep.Configurations 1533 } 1534 if bisep.PresetName != "" { 1535 objectMap["presetName"] = bisep.PresetName 1536 } 1537 if bisep.OdataType != "" { 1538 objectMap["@odata.type"] = bisep.OdataType 1539 } 1540 return json.Marshal(objectMap) 1541} 1542 1543// AsFaceDetectorPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1544func (bisep BuiltInStandardEncoderPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 1545 return nil, false 1546} 1547 1548// AsAudioAnalyzerPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1549func (bisep BuiltInStandardEncoderPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 1550 return nil, false 1551} 1552 1553// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1554func (bisep BuiltInStandardEncoderPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 1555 return nil, false 1556} 1557 1558// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1559func (bisep BuiltInStandardEncoderPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 1560 return &bisep, true 1561} 1562 1563// AsStandardEncoderPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1564func (bisep BuiltInStandardEncoderPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 1565 return nil, false 1566} 1567 1568// AsVideoAnalyzerPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1569func (bisep BuiltInStandardEncoderPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 1570 return nil, false 1571} 1572 1573// AsPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1574func (bisep BuiltInStandardEncoderPreset) AsPreset() (*Preset, bool) { 1575 return nil, false 1576} 1577 1578// AsBasicPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1579func (bisep BuiltInStandardEncoderPreset) AsBasicPreset() (BasicPreset, bool) { 1580 return &bisep, true 1581} 1582 1583// CbcsDrmConfiguration class to specify DRM configurations of CommonEncryptionCbcs scheme in Streaming 1584// Policy 1585type CbcsDrmConfiguration struct { 1586 // FairPlay - FairPlay configurations 1587 FairPlay *StreamingPolicyFairPlayConfiguration `json:"fairPlay,omitempty"` 1588 // PlayReady - PlayReady configurations 1589 PlayReady *StreamingPolicyPlayReadyConfiguration `json:"playReady,omitempty"` 1590 // Widevine - Widevine configurations 1591 Widevine *StreamingPolicyWidevineConfiguration `json:"widevine,omitempty"` 1592} 1593 1594// CencDrmConfiguration class to specify DRM configurations of CommonEncryptionCenc scheme in Streaming 1595// Policy 1596type CencDrmConfiguration struct { 1597 // PlayReady - PlayReady configurations 1598 PlayReady *StreamingPolicyPlayReadyConfiguration `json:"playReady,omitempty"` 1599 // Widevine - Widevine configurations 1600 Widevine *StreamingPolicyWidevineConfiguration `json:"widevine,omitempty"` 1601} 1602 1603// CheckNameAvailabilityInput the input to the check name availability request. 1604type CheckNameAvailabilityInput struct { 1605 // Name - The account name. 1606 Name *string `json:"name,omitempty"` 1607 // Type - The account type. For a Media Services account, this should be 'MediaServices'. 1608 Type *string `json:"type,omitempty"` 1609} 1610 1611// BasicClipTime base class for specifying a clip time. Use sub classes of this class to specify the time position in 1612// the media. 1613type BasicClipTime interface { 1614 AsAbsoluteClipTime() (*AbsoluteClipTime, bool) 1615 AsUtcClipTime() (*UtcClipTime, bool) 1616 AsClipTime() (*ClipTime, bool) 1617} 1618 1619// ClipTime base class for specifying a clip time. Use sub classes of this class to specify the time position 1620// in the media. 1621type ClipTime struct { 1622 // OdataType - Possible values include: 'OdataTypeBasicClipTimeOdataTypeClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime' 1623 OdataType OdataTypeBasicClipTime `json:"@odata.type,omitempty"` 1624} 1625 1626func unmarshalBasicClipTime(body []byte) (BasicClipTime, error) { 1627 var m map[string]interface{} 1628 err := json.Unmarshal(body, &m) 1629 if err != nil { 1630 return nil, err 1631 } 1632 1633 switch m["@odata.type"] { 1634 case string(OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime): 1635 var act AbsoluteClipTime 1636 err := json.Unmarshal(body, &act) 1637 return act, err 1638 case string(OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime): 1639 var uct UtcClipTime 1640 err := json.Unmarshal(body, &uct) 1641 return uct, err 1642 default: 1643 var ct ClipTime 1644 err := json.Unmarshal(body, &ct) 1645 return ct, err 1646 } 1647} 1648func unmarshalBasicClipTimeArray(body []byte) ([]BasicClipTime, error) { 1649 var rawMessages []*json.RawMessage 1650 err := json.Unmarshal(body, &rawMessages) 1651 if err != nil { 1652 return nil, err 1653 } 1654 1655 ctArray := make([]BasicClipTime, len(rawMessages)) 1656 1657 for index, rawMessage := range rawMessages { 1658 ct, err := unmarshalBasicClipTime(*rawMessage) 1659 if err != nil { 1660 return nil, err 1661 } 1662 ctArray[index] = ct 1663 } 1664 return ctArray, nil 1665} 1666 1667// MarshalJSON is the custom marshaler for ClipTime. 1668func (ct ClipTime) MarshalJSON() ([]byte, error) { 1669 ct.OdataType = OdataTypeBasicClipTimeOdataTypeClipTime 1670 objectMap := make(map[string]interface{}) 1671 if ct.OdataType != "" { 1672 objectMap["@odata.type"] = ct.OdataType 1673 } 1674 return json.Marshal(objectMap) 1675} 1676 1677// AsAbsoluteClipTime is the BasicClipTime implementation for ClipTime. 1678func (ct ClipTime) AsAbsoluteClipTime() (*AbsoluteClipTime, bool) { 1679 return nil, false 1680} 1681 1682// AsUtcClipTime is the BasicClipTime implementation for ClipTime. 1683func (ct ClipTime) AsUtcClipTime() (*UtcClipTime, bool) { 1684 return nil, false 1685} 1686 1687// AsClipTime is the BasicClipTime implementation for ClipTime. 1688func (ct ClipTime) AsClipTime() (*ClipTime, bool) { 1689 return &ct, true 1690} 1691 1692// AsBasicClipTime is the BasicClipTime implementation for ClipTime. 1693func (ct ClipTime) AsBasicClipTime() (BasicClipTime, bool) { 1694 return &ct, true 1695} 1696 1697// BasicCodec describes the basic properties of all codecs. 1698type BasicCodec interface { 1699 AsAudio() (*Audio, bool) 1700 AsBasicAudio() (BasicAudio, bool) 1701 AsAacAudio() (*AacAudio, bool) 1702 AsVideo() (*Video, bool) 1703 AsBasicVideo() (BasicVideo, bool) 1704 AsH265Video() (*H265Video, bool) 1705 AsCopyVideo() (*CopyVideo, bool) 1706 AsImage() (*Image, bool) 1707 AsBasicImage() (BasicImage, bool) 1708 AsCopyAudio() (*CopyAudio, bool) 1709 AsH264Video() (*H264Video, bool) 1710 AsJpgImage() (*JpgImage, bool) 1711 AsPngImage() (*PngImage, bool) 1712 AsCodec() (*Codec, bool) 1713} 1714 1715// Codec describes the basic properties of all codecs. 1716type Codec struct { 1717 // Label - An optional label for the codec. The label can be used to control muxing behavior. 1718 Label *string `json:"label,omitempty"` 1719 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 1720 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 1721} 1722 1723func unmarshalBasicCodec(body []byte) (BasicCodec, error) { 1724 var m map[string]interface{} 1725 err := json.Unmarshal(body, &m) 1726 if err != nil { 1727 return nil, err 1728 } 1729 1730 switch m["@odata.type"] { 1731 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio): 1732 var a Audio 1733 err := json.Unmarshal(body, &a) 1734 return a, err 1735 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio): 1736 var aa AacAudio 1737 err := json.Unmarshal(body, &aa) 1738 return aa, err 1739 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo): 1740 var vVar Video 1741 err := json.Unmarshal(body, &vVar) 1742 return vVar, err 1743 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video): 1744 var hv H265Video 1745 err := json.Unmarshal(body, &hv) 1746 return hv, err 1747 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo): 1748 var cv CopyVideo 1749 err := json.Unmarshal(body, &cv) 1750 return cv, err 1751 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaImage): 1752 var i Image 1753 err := json.Unmarshal(body, &i) 1754 return i, err 1755 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio): 1756 var ca CopyAudio 1757 err := json.Unmarshal(body, &ca) 1758 return ca, err 1759 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video): 1760 var hv H264Video 1761 err := json.Unmarshal(body, &hv) 1762 return hv, err 1763 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage): 1764 var ji JpgImage 1765 err := json.Unmarshal(body, &ji) 1766 return ji, err 1767 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage): 1768 var pi PngImage 1769 err := json.Unmarshal(body, &pi) 1770 return pi, err 1771 default: 1772 var c Codec 1773 err := json.Unmarshal(body, &c) 1774 return c, err 1775 } 1776} 1777func unmarshalBasicCodecArray(body []byte) ([]BasicCodec, error) { 1778 var rawMessages []*json.RawMessage 1779 err := json.Unmarshal(body, &rawMessages) 1780 if err != nil { 1781 return nil, err 1782 } 1783 1784 cArray := make([]BasicCodec, len(rawMessages)) 1785 1786 for index, rawMessage := range rawMessages { 1787 c, err := unmarshalBasicCodec(*rawMessage) 1788 if err != nil { 1789 return nil, err 1790 } 1791 cArray[index] = c 1792 } 1793 return cArray, nil 1794} 1795 1796// MarshalJSON is the custom marshaler for Codec. 1797func (c Codec) MarshalJSON() ([]byte, error) { 1798 c.OdataType = OdataTypeBasicCodecOdataTypeCodec 1799 objectMap := make(map[string]interface{}) 1800 if c.Label != nil { 1801 objectMap["label"] = c.Label 1802 } 1803 if c.OdataType != "" { 1804 objectMap["@odata.type"] = c.OdataType 1805 } 1806 return json.Marshal(objectMap) 1807} 1808 1809// AsAudio is the BasicCodec implementation for Codec. 1810func (c Codec) AsAudio() (*Audio, bool) { 1811 return nil, false 1812} 1813 1814// AsBasicAudio is the BasicCodec implementation for Codec. 1815func (c Codec) AsBasicAudio() (BasicAudio, bool) { 1816 return nil, false 1817} 1818 1819// AsAacAudio is the BasicCodec implementation for Codec. 1820func (c Codec) AsAacAudio() (*AacAudio, bool) { 1821 return nil, false 1822} 1823 1824// AsVideo is the BasicCodec implementation for Codec. 1825func (c Codec) AsVideo() (*Video, bool) { 1826 return nil, false 1827} 1828 1829// AsBasicVideo is the BasicCodec implementation for Codec. 1830func (c Codec) AsBasicVideo() (BasicVideo, bool) { 1831 return nil, false 1832} 1833 1834// AsH265Video is the BasicCodec implementation for Codec. 1835func (c Codec) AsH265Video() (*H265Video, bool) { 1836 return nil, false 1837} 1838 1839// AsCopyVideo is the BasicCodec implementation for Codec. 1840func (c Codec) AsCopyVideo() (*CopyVideo, bool) { 1841 return nil, false 1842} 1843 1844// AsImage is the BasicCodec implementation for Codec. 1845func (c Codec) AsImage() (*Image, bool) { 1846 return nil, false 1847} 1848 1849// AsBasicImage is the BasicCodec implementation for Codec. 1850func (c Codec) AsBasicImage() (BasicImage, bool) { 1851 return nil, false 1852} 1853 1854// AsCopyAudio is the BasicCodec implementation for Codec. 1855func (c Codec) AsCopyAudio() (*CopyAudio, bool) { 1856 return nil, false 1857} 1858 1859// AsH264Video is the BasicCodec implementation for Codec. 1860func (c Codec) AsH264Video() (*H264Video, bool) { 1861 return nil, false 1862} 1863 1864// AsJpgImage is the BasicCodec implementation for Codec. 1865func (c Codec) AsJpgImage() (*JpgImage, bool) { 1866 return nil, false 1867} 1868 1869// AsPngImage is the BasicCodec implementation for Codec. 1870func (c Codec) AsPngImage() (*PngImage, bool) { 1871 return nil, false 1872} 1873 1874// AsCodec is the BasicCodec implementation for Codec. 1875func (c Codec) AsCodec() (*Codec, bool) { 1876 return &c, true 1877} 1878 1879// AsBasicCodec is the BasicCodec implementation for Codec. 1880func (c Codec) AsBasicCodec() (BasicCodec, bool) { 1881 return &c, true 1882} 1883 1884// CommonEncryptionCbcs class for CommonEncryptionCbcs encryption scheme 1885type CommonEncryptionCbcs struct { 1886 // EnabledProtocols - Representing supported protocols 1887 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 1888 // ClearTracks - Representing which tracks should not be encrypted 1889 ClearTracks *[]TrackSelection `json:"clearTracks,omitempty"` 1890 // ContentKeys - Representing default content key for each encryption scheme and separate content keys for specific tracks 1891 ContentKeys *StreamingPolicyContentKeys `json:"contentKeys,omitempty"` 1892 // Drm - Configuration of DRMs for current encryption scheme 1893 Drm *CbcsDrmConfiguration `json:"drm,omitempty"` 1894} 1895 1896// CommonEncryptionCenc class for envelope encryption scheme 1897type CommonEncryptionCenc struct { 1898 // EnabledProtocols - Representing supported protocols 1899 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 1900 // ClearTracks - Representing which tracks should not be encrypted 1901 ClearTracks *[]TrackSelection `json:"clearTracks,omitempty"` 1902 // ContentKeys - Representing default content key for each encryption scheme and separate content keys for specific tracks 1903 ContentKeys *StreamingPolicyContentKeys `json:"contentKeys,omitempty"` 1904 // Drm - Configuration of DRMs for CommonEncryptionCenc encryption scheme 1905 Drm *CencDrmConfiguration `json:"drm,omitempty"` 1906} 1907 1908// ContentKeyPolicy a Content Key Policy resource. 1909type ContentKeyPolicy struct { 1910 autorest.Response `json:"-"` 1911 *ContentKeyPolicyProperties `json:"properties,omitempty"` 1912 // SystemData - READ-ONLY; The system metadata relating to this resource. 1913 SystemData *SystemData `json:"systemData,omitempty"` 1914 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 1915 ID *string `json:"id,omitempty"` 1916 // Name - READ-ONLY; The name of the resource 1917 Name *string `json:"name,omitempty"` 1918 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 1919 Type *string `json:"type,omitempty"` 1920} 1921 1922// MarshalJSON is the custom marshaler for ContentKeyPolicy. 1923func (ckp ContentKeyPolicy) MarshalJSON() ([]byte, error) { 1924 objectMap := make(map[string]interface{}) 1925 if ckp.ContentKeyPolicyProperties != nil { 1926 objectMap["properties"] = ckp.ContentKeyPolicyProperties 1927 } 1928 return json.Marshal(objectMap) 1929} 1930 1931// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicy struct. 1932func (ckp *ContentKeyPolicy) UnmarshalJSON(body []byte) error { 1933 var m map[string]*json.RawMessage 1934 err := json.Unmarshal(body, &m) 1935 if err != nil { 1936 return err 1937 } 1938 for k, v := range m { 1939 switch k { 1940 case "properties": 1941 if v != nil { 1942 var contentKeyPolicyProperties ContentKeyPolicyProperties 1943 err = json.Unmarshal(*v, &contentKeyPolicyProperties) 1944 if err != nil { 1945 return err 1946 } 1947 ckp.ContentKeyPolicyProperties = &contentKeyPolicyProperties 1948 } 1949 case "systemData": 1950 if v != nil { 1951 var systemData SystemData 1952 err = json.Unmarshal(*v, &systemData) 1953 if err != nil { 1954 return err 1955 } 1956 ckp.SystemData = &systemData 1957 } 1958 case "id": 1959 if v != nil { 1960 var ID string 1961 err = json.Unmarshal(*v, &ID) 1962 if err != nil { 1963 return err 1964 } 1965 ckp.ID = &ID 1966 } 1967 case "name": 1968 if v != nil { 1969 var name string 1970 err = json.Unmarshal(*v, &name) 1971 if err != nil { 1972 return err 1973 } 1974 ckp.Name = &name 1975 } 1976 case "type": 1977 if v != nil { 1978 var typeVar string 1979 err = json.Unmarshal(*v, &typeVar) 1980 if err != nil { 1981 return err 1982 } 1983 ckp.Type = &typeVar 1984 } 1985 } 1986 } 1987 1988 return nil 1989} 1990 1991// ContentKeyPolicyClearKeyConfiguration represents a configuration for non-DRM keys. 1992type ContentKeyPolicyClearKeyConfiguration struct { 1993 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 1994 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 1995} 1996 1997// MarshalJSON is the custom marshaler for ContentKeyPolicyClearKeyConfiguration. 1998func (ckpckc ContentKeyPolicyClearKeyConfiguration) MarshalJSON() ([]byte, error) { 1999 ckpckc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration 2000 objectMap := make(map[string]interface{}) 2001 if ckpckc.OdataType != "" { 2002 objectMap["@odata.type"] = ckpckc.OdataType 2003 } 2004 return json.Marshal(objectMap) 2005} 2006 2007// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2008func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2009 return &ckpckc, true 2010} 2011 2012// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2013func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2014 return nil, false 2015} 2016 2017// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2018func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2019 return nil, false 2020} 2021 2022// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2023func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2024 return nil, false 2025} 2026 2027// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2028func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2029 return nil, false 2030} 2031 2032// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2033func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2034 return nil, false 2035} 2036 2037// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2038func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2039 return &ckpckc, true 2040} 2041 2042// ContentKeyPolicyCollection a collection of ContentKeyPolicy items. 2043type ContentKeyPolicyCollection struct { 2044 autorest.Response `json:"-"` 2045 // Value - A collection of ContentKeyPolicy items. 2046 Value *[]ContentKeyPolicy `json:"value,omitempty"` 2047 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 2048 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 2049} 2050 2051// ContentKeyPolicyCollectionIterator provides access to a complete listing of ContentKeyPolicy values. 2052type ContentKeyPolicyCollectionIterator struct { 2053 i int 2054 page ContentKeyPolicyCollectionPage 2055} 2056 2057// NextWithContext advances to the next value. If there was an error making 2058// the request the iterator does not advance and the error is returned. 2059func (iter *ContentKeyPolicyCollectionIterator) NextWithContext(ctx context.Context) (err error) { 2060 if tracing.IsEnabled() { 2061 ctx = tracing.StartSpan(ctx, fqdn+"/ContentKeyPolicyCollectionIterator.NextWithContext") 2062 defer func() { 2063 sc := -1 2064 if iter.Response().Response.Response != nil { 2065 sc = iter.Response().Response.Response.StatusCode 2066 } 2067 tracing.EndSpan(ctx, sc, err) 2068 }() 2069 } 2070 iter.i++ 2071 if iter.i < len(iter.page.Values()) { 2072 return nil 2073 } 2074 err = iter.page.NextWithContext(ctx) 2075 if err != nil { 2076 iter.i-- 2077 return err 2078 } 2079 iter.i = 0 2080 return nil 2081} 2082 2083// Next advances to the next value. If there was an error making 2084// the request the iterator does not advance and the error is returned. 2085// Deprecated: Use NextWithContext() instead. 2086func (iter *ContentKeyPolicyCollectionIterator) Next() error { 2087 return iter.NextWithContext(context.Background()) 2088} 2089 2090// NotDone returns true if the enumeration should be started or is not yet complete. 2091func (iter ContentKeyPolicyCollectionIterator) NotDone() bool { 2092 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 2093} 2094 2095// Response returns the raw server response from the last page request. 2096func (iter ContentKeyPolicyCollectionIterator) Response() ContentKeyPolicyCollection { 2097 return iter.page.Response() 2098} 2099 2100// Value returns the current value or a zero-initialized value if the 2101// iterator has advanced beyond the end of the collection. 2102func (iter ContentKeyPolicyCollectionIterator) Value() ContentKeyPolicy { 2103 if !iter.page.NotDone() { 2104 return ContentKeyPolicy{} 2105 } 2106 return iter.page.Values()[iter.i] 2107} 2108 2109// Creates a new instance of the ContentKeyPolicyCollectionIterator type. 2110func NewContentKeyPolicyCollectionIterator(page ContentKeyPolicyCollectionPage) ContentKeyPolicyCollectionIterator { 2111 return ContentKeyPolicyCollectionIterator{page: page} 2112} 2113 2114// IsEmpty returns true if the ListResult contains no values. 2115func (ckpc ContentKeyPolicyCollection) IsEmpty() bool { 2116 return ckpc.Value == nil || len(*ckpc.Value) == 0 2117} 2118 2119// hasNextLink returns true if the NextLink is not empty. 2120func (ckpc ContentKeyPolicyCollection) hasNextLink() bool { 2121 return ckpc.OdataNextLink != nil && len(*ckpc.OdataNextLink) != 0 2122} 2123 2124// contentKeyPolicyCollectionPreparer prepares a request to retrieve the next set of results. 2125// It returns nil if no more results exist. 2126func (ckpc ContentKeyPolicyCollection) contentKeyPolicyCollectionPreparer(ctx context.Context) (*http.Request, error) { 2127 if !ckpc.hasNextLink() { 2128 return nil, nil 2129 } 2130 return autorest.Prepare((&http.Request{}).WithContext(ctx), 2131 autorest.AsJSON(), 2132 autorest.AsGet(), 2133 autorest.WithBaseURL(to.String(ckpc.OdataNextLink))) 2134} 2135 2136// ContentKeyPolicyCollectionPage contains a page of ContentKeyPolicy values. 2137type ContentKeyPolicyCollectionPage struct { 2138 fn func(context.Context, ContentKeyPolicyCollection) (ContentKeyPolicyCollection, error) 2139 ckpc ContentKeyPolicyCollection 2140} 2141 2142// NextWithContext advances to the next page of values. If there was an error making 2143// the request the page does not advance and the error is returned. 2144func (page *ContentKeyPolicyCollectionPage) NextWithContext(ctx context.Context) (err error) { 2145 if tracing.IsEnabled() { 2146 ctx = tracing.StartSpan(ctx, fqdn+"/ContentKeyPolicyCollectionPage.NextWithContext") 2147 defer func() { 2148 sc := -1 2149 if page.Response().Response.Response != nil { 2150 sc = page.Response().Response.Response.StatusCode 2151 } 2152 tracing.EndSpan(ctx, sc, err) 2153 }() 2154 } 2155 for { 2156 next, err := page.fn(ctx, page.ckpc) 2157 if err != nil { 2158 return err 2159 } 2160 page.ckpc = next 2161 if !next.hasNextLink() || !next.IsEmpty() { 2162 break 2163 } 2164 } 2165 return nil 2166} 2167 2168// Next advances to the next page of values. If there was an error making 2169// the request the page does not advance and the error is returned. 2170// Deprecated: Use NextWithContext() instead. 2171func (page *ContentKeyPolicyCollectionPage) Next() error { 2172 return page.NextWithContext(context.Background()) 2173} 2174 2175// NotDone returns true if the page enumeration should be started or is not yet complete. 2176func (page ContentKeyPolicyCollectionPage) NotDone() bool { 2177 return !page.ckpc.IsEmpty() 2178} 2179 2180// Response returns the raw server response from the last page request. 2181func (page ContentKeyPolicyCollectionPage) Response() ContentKeyPolicyCollection { 2182 return page.ckpc 2183} 2184 2185// Values returns the slice of values for the current page or nil if there are no values. 2186func (page ContentKeyPolicyCollectionPage) Values() []ContentKeyPolicy { 2187 if page.ckpc.IsEmpty() { 2188 return nil 2189 } 2190 return *page.ckpc.Value 2191} 2192 2193// Creates a new instance of the ContentKeyPolicyCollectionPage type. 2194func NewContentKeyPolicyCollectionPage(cur ContentKeyPolicyCollection, getNextPage func(context.Context, ContentKeyPolicyCollection) (ContentKeyPolicyCollection, error)) ContentKeyPolicyCollectionPage { 2195 return ContentKeyPolicyCollectionPage{ 2196 fn: getNextPage, 2197 ckpc: cur, 2198 } 2199} 2200 2201// BasicContentKeyPolicyConfiguration base class for Content Key Policy configuration. A derived class must be used to 2202// create a configuration. 2203type BasicContentKeyPolicyConfiguration interface { 2204 AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) 2205 AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) 2206 AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) 2207 AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) 2208 AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) 2209 AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) 2210} 2211 2212// ContentKeyPolicyConfiguration base class for Content Key Policy configuration. A derived class must be used 2213// to create a configuration. 2214type ContentKeyPolicyConfiguration struct { 2215 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 2216 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 2217} 2218 2219func unmarshalBasicContentKeyPolicyConfiguration(body []byte) (BasicContentKeyPolicyConfiguration, error) { 2220 var m map[string]interface{} 2221 err := json.Unmarshal(body, &m) 2222 if err != nil { 2223 return nil, err 2224 } 2225 2226 switch m["@odata.type"] { 2227 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration): 2228 var ckpckc ContentKeyPolicyClearKeyConfiguration 2229 err := json.Unmarshal(body, &ckpckc) 2230 return ckpckc, err 2231 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration): 2232 var ckpuc ContentKeyPolicyUnknownConfiguration 2233 err := json.Unmarshal(body, &ckpuc) 2234 return ckpuc, err 2235 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration): 2236 var ckpwc ContentKeyPolicyWidevineConfiguration 2237 err := json.Unmarshal(body, &ckpwc) 2238 return ckpwc, err 2239 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration): 2240 var ckpprc ContentKeyPolicyPlayReadyConfiguration 2241 err := json.Unmarshal(body, &ckpprc) 2242 return ckpprc, err 2243 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration): 2244 var ckpfpc ContentKeyPolicyFairPlayConfiguration 2245 err := json.Unmarshal(body, &ckpfpc) 2246 return ckpfpc, err 2247 default: 2248 var ckpc ContentKeyPolicyConfiguration 2249 err := json.Unmarshal(body, &ckpc) 2250 return ckpc, err 2251 } 2252} 2253func unmarshalBasicContentKeyPolicyConfigurationArray(body []byte) ([]BasicContentKeyPolicyConfiguration, error) { 2254 var rawMessages []*json.RawMessage 2255 err := json.Unmarshal(body, &rawMessages) 2256 if err != nil { 2257 return nil, err 2258 } 2259 2260 ckpcArray := make([]BasicContentKeyPolicyConfiguration, len(rawMessages)) 2261 2262 for index, rawMessage := range rawMessages { 2263 ckpc, err := unmarshalBasicContentKeyPolicyConfiguration(*rawMessage) 2264 if err != nil { 2265 return nil, err 2266 } 2267 ckpcArray[index] = ckpc 2268 } 2269 return ckpcArray, nil 2270} 2271 2272// MarshalJSON is the custom marshaler for ContentKeyPolicyConfiguration. 2273func (ckpc ContentKeyPolicyConfiguration) MarshalJSON() ([]byte, error) { 2274 ckpc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration 2275 objectMap := make(map[string]interface{}) 2276 if ckpc.OdataType != "" { 2277 objectMap["@odata.type"] = ckpc.OdataType 2278 } 2279 return json.Marshal(objectMap) 2280} 2281 2282// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2283func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2284 return nil, false 2285} 2286 2287// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2288func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2289 return nil, false 2290} 2291 2292// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2293func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2294 return nil, false 2295} 2296 2297// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2298func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2299 return nil, false 2300} 2301 2302// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2303func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2304 return nil, false 2305} 2306 2307// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2308func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2309 return &ckpc, true 2310} 2311 2312// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2313func (ckpc ContentKeyPolicyConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2314 return &ckpc, true 2315} 2316 2317// ContentKeyPolicyFairPlayConfiguration specifies a configuration for FairPlay licenses. 2318type ContentKeyPolicyFairPlayConfiguration struct { 2319 // Ask - The key that must be used as FairPlay Application Secret key. 2320 Ask *[]byte `json:"ask,omitempty"` 2321 // FairPlayPfxPassword - The password encrypting FairPlay certificate in PKCS 12 (pfx) format. 2322 FairPlayPfxPassword *string `json:"fairPlayPfxPassword,omitempty"` 2323 // FairPlayPfx - The Base64 representation of FairPlay certificate in PKCS 12 (pfx) format (including private key). 2324 FairPlayPfx *string `json:"fairPlayPfx,omitempty"` 2325 // RentalAndLeaseKeyType - The rental and lease key type. Possible values include: 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypeUnknown', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypeUndefined', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypeDualExpiry', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypePersistentUnlimited', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypePersistentLimited' 2326 RentalAndLeaseKeyType ContentKeyPolicyFairPlayRentalAndLeaseKeyType `json:"rentalAndLeaseKeyType,omitempty"` 2327 // RentalDuration - The rental duration. Must be greater than or equal to 0. 2328 RentalDuration *int64 `json:"rentalDuration,omitempty"` 2329 // OfflineRentalConfiguration - Offline rental policy 2330 OfflineRentalConfiguration *ContentKeyPolicyFairPlayOfflineRentalConfiguration `json:"offlineRentalConfiguration,omitempty"` 2331 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 2332 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 2333} 2334 2335// MarshalJSON is the custom marshaler for ContentKeyPolicyFairPlayConfiguration. 2336func (ckpfpc ContentKeyPolicyFairPlayConfiguration) MarshalJSON() ([]byte, error) { 2337 ckpfpc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration 2338 objectMap := make(map[string]interface{}) 2339 if ckpfpc.Ask != nil { 2340 objectMap["ask"] = ckpfpc.Ask 2341 } 2342 if ckpfpc.FairPlayPfxPassword != nil { 2343 objectMap["fairPlayPfxPassword"] = ckpfpc.FairPlayPfxPassword 2344 } 2345 if ckpfpc.FairPlayPfx != nil { 2346 objectMap["fairPlayPfx"] = ckpfpc.FairPlayPfx 2347 } 2348 if ckpfpc.RentalAndLeaseKeyType != "" { 2349 objectMap["rentalAndLeaseKeyType"] = ckpfpc.RentalAndLeaseKeyType 2350 } 2351 if ckpfpc.RentalDuration != nil { 2352 objectMap["rentalDuration"] = ckpfpc.RentalDuration 2353 } 2354 if ckpfpc.OfflineRentalConfiguration != nil { 2355 objectMap["offlineRentalConfiguration"] = ckpfpc.OfflineRentalConfiguration 2356 } 2357 if ckpfpc.OdataType != "" { 2358 objectMap["@odata.type"] = ckpfpc.OdataType 2359 } 2360 return json.Marshal(objectMap) 2361} 2362 2363// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2364func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2365 return nil, false 2366} 2367 2368// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2369func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2370 return nil, false 2371} 2372 2373// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2374func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2375 return nil, false 2376} 2377 2378// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2379func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2380 return nil, false 2381} 2382 2383// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2384func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2385 return &ckpfpc, true 2386} 2387 2388// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2389func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2390 return nil, false 2391} 2392 2393// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2394func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2395 return &ckpfpc, true 2396} 2397 2398// ContentKeyPolicyFairPlayOfflineRentalConfiguration ... 2399type ContentKeyPolicyFairPlayOfflineRentalConfiguration struct { 2400 // PlaybackDurationSeconds - Playback duration 2401 PlaybackDurationSeconds *int64 `json:"playbackDurationSeconds,omitempty"` 2402 // StorageDurationSeconds - Storage duration 2403 StorageDurationSeconds *int64 `json:"storageDurationSeconds,omitempty"` 2404} 2405 2406// ContentKeyPolicyOpenRestriction represents an open restriction. License or key will be delivered on 2407// every request. 2408type ContentKeyPolicyOpenRestriction struct { 2409 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 2410 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 2411} 2412 2413// MarshalJSON is the custom marshaler for ContentKeyPolicyOpenRestriction. 2414func (ckpor ContentKeyPolicyOpenRestriction) MarshalJSON() ([]byte, error) { 2415 ckpor.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction 2416 objectMap := make(map[string]interface{}) 2417 if ckpor.OdataType != "" { 2418 objectMap["@odata.type"] = ckpor.OdataType 2419 } 2420 return json.Marshal(objectMap) 2421} 2422 2423// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2424func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 2425 return &ckpor, true 2426} 2427 2428// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2429func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 2430 return nil, false 2431} 2432 2433// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2434func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 2435 return nil, false 2436} 2437 2438// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2439func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 2440 return nil, false 2441} 2442 2443// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2444func (ckpor ContentKeyPolicyOpenRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 2445 return &ckpor, true 2446} 2447 2448// ContentKeyPolicyOption represents a policy option. 2449type ContentKeyPolicyOption struct { 2450 // PolicyOptionID - READ-ONLY; The legacy Policy Option ID. 2451 PolicyOptionID *uuid.UUID `json:"policyOptionId,omitempty"` 2452 // Name - The Policy Option description. 2453 Name *string `json:"name,omitempty"` 2454 // Configuration - The key delivery configuration. 2455 Configuration BasicContentKeyPolicyConfiguration `json:"configuration,omitempty"` 2456 // Restriction - The requirements that must be met to deliver keys with this configuration 2457 Restriction BasicContentKeyPolicyRestriction `json:"restriction,omitempty"` 2458} 2459 2460// MarshalJSON is the custom marshaler for ContentKeyPolicyOption. 2461func (ckpo ContentKeyPolicyOption) MarshalJSON() ([]byte, error) { 2462 objectMap := make(map[string]interface{}) 2463 if ckpo.Name != nil { 2464 objectMap["name"] = ckpo.Name 2465 } 2466 objectMap["configuration"] = ckpo.Configuration 2467 objectMap["restriction"] = ckpo.Restriction 2468 return json.Marshal(objectMap) 2469} 2470 2471// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicyOption struct. 2472func (ckpo *ContentKeyPolicyOption) UnmarshalJSON(body []byte) error { 2473 var m map[string]*json.RawMessage 2474 err := json.Unmarshal(body, &m) 2475 if err != nil { 2476 return err 2477 } 2478 for k, v := range m { 2479 switch k { 2480 case "policyOptionId": 2481 if v != nil { 2482 var policyOptionID uuid.UUID 2483 err = json.Unmarshal(*v, &policyOptionID) 2484 if err != nil { 2485 return err 2486 } 2487 ckpo.PolicyOptionID = &policyOptionID 2488 } 2489 case "name": 2490 if v != nil { 2491 var name string 2492 err = json.Unmarshal(*v, &name) 2493 if err != nil { 2494 return err 2495 } 2496 ckpo.Name = &name 2497 } 2498 case "configuration": 2499 if v != nil { 2500 configuration, err := unmarshalBasicContentKeyPolicyConfiguration(*v) 2501 if err != nil { 2502 return err 2503 } 2504 ckpo.Configuration = configuration 2505 } 2506 case "restriction": 2507 if v != nil { 2508 restriction, err := unmarshalBasicContentKeyPolicyRestriction(*v) 2509 if err != nil { 2510 return err 2511 } 2512 ckpo.Restriction = restriction 2513 } 2514 } 2515 } 2516 2517 return nil 2518} 2519 2520// ContentKeyPolicyPlayReadyConfiguration specifies a configuration for PlayReady licenses. 2521type ContentKeyPolicyPlayReadyConfiguration struct { 2522 // Licenses - The PlayReady licenses. 2523 Licenses *[]ContentKeyPolicyPlayReadyLicense `json:"licenses,omitempty"` 2524 // ResponseCustomData - The custom response data. 2525 ResponseCustomData *string `json:"responseCustomData,omitempty"` 2526 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 2527 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 2528} 2529 2530// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyConfiguration. 2531func (ckpprc ContentKeyPolicyPlayReadyConfiguration) MarshalJSON() ([]byte, error) { 2532 ckpprc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration 2533 objectMap := make(map[string]interface{}) 2534 if ckpprc.Licenses != nil { 2535 objectMap["licenses"] = ckpprc.Licenses 2536 } 2537 if ckpprc.ResponseCustomData != nil { 2538 objectMap["responseCustomData"] = ckpprc.ResponseCustomData 2539 } 2540 if ckpprc.OdataType != "" { 2541 objectMap["@odata.type"] = ckpprc.OdataType 2542 } 2543 return json.Marshal(objectMap) 2544} 2545 2546// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2547func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2548 return nil, false 2549} 2550 2551// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2552func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2553 return nil, false 2554} 2555 2556// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2557func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2558 return nil, false 2559} 2560 2561// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2562func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2563 return &ckpprc, true 2564} 2565 2566// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2567func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2568 return nil, false 2569} 2570 2571// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2572func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2573 return nil, false 2574} 2575 2576// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2577func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2578 return &ckpprc, true 2579} 2580 2581// ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader specifies that the content key ID is in the 2582// PlayReady header. 2583type ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader struct { 2584 // OdataType - Possible values include: 'OdataTypeContentKeyPolicyPlayReadyContentKeyLocation', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier' 2585 OdataType OdataType `json:"@odata.type,omitempty"` 2586} 2587 2588// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2589func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) MarshalJSON() ([]byte, error) { 2590 ckpprcekfh.OdataType = OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader 2591 objectMap := make(map[string]interface{}) 2592 if ckpprcekfh.OdataType != "" { 2593 objectMap["@odata.type"] = ckpprcekfh.OdataType 2594 } 2595 return json.Marshal(objectMap) 2596} 2597 2598// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2599func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) { 2600 return &ckpprcekfh, true 2601} 2602 2603// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2604func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) { 2605 return nil, false 2606} 2607 2608// AsContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2609func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2610 return nil, false 2611} 2612 2613// AsBasicContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2614func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsBasicContentKeyPolicyPlayReadyContentKeyLocation() (BasicContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2615 return &ckpprcekfh, true 2616} 2617 2618// ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier specifies that the content key ID is 2619// specified in the PlayReady configuration. 2620type ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier struct { 2621 // KeyID - The content key ID. 2622 KeyID *uuid.UUID `json:"keyId,omitempty"` 2623 // OdataType - Possible values include: 'OdataTypeContentKeyPolicyPlayReadyContentKeyLocation', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier' 2624 OdataType OdataType `json:"@odata.type,omitempty"` 2625} 2626 2627// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2628func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) MarshalJSON() ([]byte, error) { 2629 ckpprcekfki.OdataType = OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier 2630 objectMap := make(map[string]interface{}) 2631 if ckpprcekfki.KeyID != nil { 2632 objectMap["keyId"] = ckpprcekfki.KeyID 2633 } 2634 if ckpprcekfki.OdataType != "" { 2635 objectMap["@odata.type"] = ckpprcekfki.OdataType 2636 } 2637 return json.Marshal(objectMap) 2638} 2639 2640// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2641func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) { 2642 return nil, false 2643} 2644 2645// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2646func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) { 2647 return &ckpprcekfki, true 2648} 2649 2650// AsContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2651func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2652 return nil, false 2653} 2654 2655// AsBasicContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2656func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsBasicContentKeyPolicyPlayReadyContentKeyLocation() (BasicContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2657 return &ckpprcekfki, true 2658} 2659 2660// BasicContentKeyPolicyPlayReadyContentKeyLocation base class for content key ID location. A derived class must be 2661// used to represent the location. 2662type BasicContentKeyPolicyPlayReadyContentKeyLocation interface { 2663 AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) 2664 AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) 2665 AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) 2666} 2667 2668// ContentKeyPolicyPlayReadyContentKeyLocation base class for content key ID location. A derived class must be 2669// used to represent the location. 2670type ContentKeyPolicyPlayReadyContentKeyLocation struct { 2671 // OdataType - Possible values include: 'OdataTypeContentKeyPolicyPlayReadyContentKeyLocation', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier' 2672 OdataType OdataType `json:"@odata.type,omitempty"` 2673} 2674 2675func unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocation(body []byte) (BasicContentKeyPolicyPlayReadyContentKeyLocation, error) { 2676 var m map[string]interface{} 2677 err := json.Unmarshal(body, &m) 2678 if err != nil { 2679 return nil, err 2680 } 2681 2682 switch m["@odata.type"] { 2683 case string(OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader): 2684 var ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader 2685 err := json.Unmarshal(body, &ckpprcekfh) 2686 return ckpprcekfh, err 2687 case string(OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier): 2688 var ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier 2689 err := json.Unmarshal(body, &ckpprcekfki) 2690 return ckpprcekfki, err 2691 default: 2692 var ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation 2693 err := json.Unmarshal(body, &ckpprckl) 2694 return ckpprckl, err 2695 } 2696} 2697func unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocationArray(body []byte) ([]BasicContentKeyPolicyPlayReadyContentKeyLocation, error) { 2698 var rawMessages []*json.RawMessage 2699 err := json.Unmarshal(body, &rawMessages) 2700 if err != nil { 2701 return nil, err 2702 } 2703 2704 ckpprcklArray := make([]BasicContentKeyPolicyPlayReadyContentKeyLocation, len(rawMessages)) 2705 2706 for index, rawMessage := range rawMessages { 2707 ckpprckl, err := unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocation(*rawMessage) 2708 if err != nil { 2709 return nil, err 2710 } 2711 ckpprcklArray[index] = ckpprckl 2712 } 2713 return ckpprcklArray, nil 2714} 2715 2716// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyContentKeyLocation. 2717func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) MarshalJSON() ([]byte, error) { 2718 ckpprckl.OdataType = OdataTypeContentKeyPolicyPlayReadyContentKeyLocation 2719 objectMap := make(map[string]interface{}) 2720 if ckpprckl.OdataType != "" { 2721 objectMap["@odata.type"] = ckpprckl.OdataType 2722 } 2723 return json.Marshal(objectMap) 2724} 2725 2726// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2727func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) { 2728 return nil, false 2729} 2730 2731// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2732func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) { 2733 return nil, false 2734} 2735 2736// AsContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2737func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2738 return &ckpprckl, true 2739} 2740 2741// AsBasicContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2742func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsBasicContentKeyPolicyPlayReadyContentKeyLocation() (BasicContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2743 return &ckpprckl, true 2744} 2745 2746// ContentKeyPolicyPlayReadyExplicitAnalogTelevisionRestriction configures the Explicit Analog Television 2747// Output Restriction control bits. For further details see the PlayReady Compliance Rules. 2748type ContentKeyPolicyPlayReadyExplicitAnalogTelevisionRestriction struct { 2749 // BestEffort - Indicates whether this restriction is enforced on a Best Effort basis. 2750 BestEffort *bool `json:"bestEffort,omitempty"` 2751 // ConfigurationData - Configures the restriction control bits. Must be between 0 and 3 inclusive. 2752 ConfigurationData *int32 `json:"configurationData,omitempty"` 2753} 2754 2755// ContentKeyPolicyPlayReadyLicense the PlayReady license 2756type ContentKeyPolicyPlayReadyLicense struct { 2757 // AllowTestDevices - A flag indicating whether test devices can use the license. 2758 AllowTestDevices *bool `json:"allowTestDevices,omitempty"` 2759 // BeginDate - The begin date of license 2760 BeginDate *date.Time `json:"beginDate,omitempty"` 2761 // ExpirationDate - The expiration date of license. 2762 ExpirationDate *date.Time `json:"expirationDate,omitempty"` 2763 // RelativeBeginDate - The relative begin date of license. 2764 RelativeBeginDate *string `json:"relativeBeginDate,omitempty"` 2765 // RelativeExpirationDate - The relative expiration date of license. 2766 RelativeExpirationDate *string `json:"relativeExpirationDate,omitempty"` 2767 // GracePeriod - The grace period of license. 2768 GracePeriod *string `json:"gracePeriod,omitempty"` 2769 // PlayRight - The license PlayRight 2770 PlayRight *ContentKeyPolicyPlayReadyPlayRight `json:"playRight,omitempty"` 2771 // LicenseType - The license type. Possible values include: 'ContentKeyPolicyPlayReadyLicenseTypeUnknown', 'ContentKeyPolicyPlayReadyLicenseTypeNonPersistent', 'ContentKeyPolicyPlayReadyLicenseTypePersistent' 2772 LicenseType ContentKeyPolicyPlayReadyLicenseType `json:"licenseType,omitempty"` 2773 // ContentKeyLocation - The content key location. 2774 ContentKeyLocation BasicContentKeyPolicyPlayReadyContentKeyLocation `json:"contentKeyLocation,omitempty"` 2775 // ContentType - The PlayReady content type. Possible values include: 'ContentKeyPolicyPlayReadyContentTypeUnknown', 'ContentKeyPolicyPlayReadyContentTypeUnspecified', 'ContentKeyPolicyPlayReadyContentTypeUltraVioletDownload', 'ContentKeyPolicyPlayReadyContentTypeUltraVioletStreaming' 2776 ContentType ContentKeyPolicyPlayReadyContentType `json:"contentType,omitempty"` 2777} 2778 2779// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicyPlayReadyLicense struct. 2780func (ckpprl *ContentKeyPolicyPlayReadyLicense) UnmarshalJSON(body []byte) error { 2781 var m map[string]*json.RawMessage 2782 err := json.Unmarshal(body, &m) 2783 if err != nil { 2784 return err 2785 } 2786 for k, v := range m { 2787 switch k { 2788 case "allowTestDevices": 2789 if v != nil { 2790 var allowTestDevices bool 2791 err = json.Unmarshal(*v, &allowTestDevices) 2792 if err != nil { 2793 return err 2794 } 2795 ckpprl.AllowTestDevices = &allowTestDevices 2796 } 2797 case "beginDate": 2798 if v != nil { 2799 var beginDate date.Time 2800 err = json.Unmarshal(*v, &beginDate) 2801 if err != nil { 2802 return err 2803 } 2804 ckpprl.BeginDate = &beginDate 2805 } 2806 case "expirationDate": 2807 if v != nil { 2808 var expirationDate date.Time 2809 err = json.Unmarshal(*v, &expirationDate) 2810 if err != nil { 2811 return err 2812 } 2813 ckpprl.ExpirationDate = &expirationDate 2814 } 2815 case "relativeBeginDate": 2816 if v != nil { 2817 var relativeBeginDate string 2818 err = json.Unmarshal(*v, &relativeBeginDate) 2819 if err != nil { 2820 return err 2821 } 2822 ckpprl.RelativeBeginDate = &relativeBeginDate 2823 } 2824 case "relativeExpirationDate": 2825 if v != nil { 2826 var relativeExpirationDate string 2827 err = json.Unmarshal(*v, &relativeExpirationDate) 2828 if err != nil { 2829 return err 2830 } 2831 ckpprl.RelativeExpirationDate = &relativeExpirationDate 2832 } 2833 case "gracePeriod": 2834 if v != nil { 2835 var gracePeriod string 2836 err = json.Unmarshal(*v, &gracePeriod) 2837 if err != nil { 2838 return err 2839 } 2840 ckpprl.GracePeriod = &gracePeriod 2841 } 2842 case "playRight": 2843 if v != nil { 2844 var playRight ContentKeyPolicyPlayReadyPlayRight 2845 err = json.Unmarshal(*v, &playRight) 2846 if err != nil { 2847 return err 2848 } 2849 ckpprl.PlayRight = &playRight 2850 } 2851 case "licenseType": 2852 if v != nil { 2853 var licenseType ContentKeyPolicyPlayReadyLicenseType 2854 err = json.Unmarshal(*v, &licenseType) 2855 if err != nil { 2856 return err 2857 } 2858 ckpprl.LicenseType = licenseType 2859 } 2860 case "contentKeyLocation": 2861 if v != nil { 2862 contentKeyLocation, err := unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocation(*v) 2863 if err != nil { 2864 return err 2865 } 2866 ckpprl.ContentKeyLocation = contentKeyLocation 2867 } 2868 case "contentType": 2869 if v != nil { 2870 var contentType ContentKeyPolicyPlayReadyContentType 2871 err = json.Unmarshal(*v, &contentType) 2872 if err != nil { 2873 return err 2874 } 2875 ckpprl.ContentType = contentType 2876 } 2877 } 2878 } 2879 2880 return nil 2881} 2882 2883// ContentKeyPolicyPlayReadyPlayRight configures the Play Right in the PlayReady license. 2884type ContentKeyPolicyPlayReadyPlayRight struct { 2885 // FirstPlayExpiration - The amount of time that the license is valid after the license is first used to play content. 2886 FirstPlayExpiration *string `json:"firstPlayExpiration,omitempty"` 2887 // ScmsRestriction - Configures the Serial Copy Management System (SCMS) in the license. Must be between 0 and 3 inclusive. 2888 ScmsRestriction *int32 `json:"scmsRestriction,omitempty"` 2889 // AgcAndColorStripeRestriction - Configures Automatic Gain Control (AGC) and Color Stripe in the license. Must be between 0 and 3 inclusive. 2890 AgcAndColorStripeRestriction *int32 `json:"agcAndColorStripeRestriction,omitempty"` 2891 // ExplicitAnalogTelevisionOutputRestriction - Configures the Explicit Analog Television Output Restriction in the license. Configuration data must be between 0 and 3 inclusive. 2892 ExplicitAnalogTelevisionOutputRestriction *ContentKeyPolicyPlayReadyExplicitAnalogTelevisionRestriction `json:"explicitAnalogTelevisionOutputRestriction,omitempty"` 2893 // DigitalVideoOnlyContentRestriction - Enables the Image Constraint For Analog Component Video Restriction in the license. 2894 DigitalVideoOnlyContentRestriction *bool `json:"digitalVideoOnlyContentRestriction,omitempty"` 2895 // ImageConstraintForAnalogComponentVideoRestriction - Enables the Image Constraint For Analog Component Video Restriction in the license. 2896 ImageConstraintForAnalogComponentVideoRestriction *bool `json:"imageConstraintForAnalogComponentVideoRestriction,omitempty"` 2897 // ImageConstraintForAnalogComputerMonitorRestriction - Enables the Image Constraint For Analog Component Video Restriction in the license. 2898 ImageConstraintForAnalogComputerMonitorRestriction *bool `json:"imageConstraintForAnalogComputerMonitorRestriction,omitempty"` 2899 // AllowPassingVideoContentToUnknownOutput - Configures Unknown output handling settings of the license. Possible values include: 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionUnknown', 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionNotAllowed', 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionAllowed', 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionAllowedWithVideoConstriction' 2900 AllowPassingVideoContentToUnknownOutput ContentKeyPolicyPlayReadyUnknownOutputPassingOption `json:"allowPassingVideoContentToUnknownOutput,omitempty"` 2901 // UncompressedDigitalVideoOpl - Specifies the output protection level for uncompressed digital video. 2902 UncompressedDigitalVideoOpl *int32 `json:"uncompressedDigitalVideoOpl,omitempty"` 2903 // CompressedDigitalVideoOpl - Specifies the output protection level for compressed digital video. 2904 CompressedDigitalVideoOpl *int32 `json:"compressedDigitalVideoOpl,omitempty"` 2905 // AnalogVideoOpl - Specifies the output protection level for compressed digital audio. 2906 AnalogVideoOpl *int32 `json:"analogVideoOpl,omitempty"` 2907 // CompressedDigitalAudioOpl - Specifies the output protection level for compressed digital audio. 2908 CompressedDigitalAudioOpl *int32 `json:"compressedDigitalAudioOpl,omitempty"` 2909 // UncompressedDigitalAudioOpl - Specifies the output protection level for uncompressed digital audio. 2910 UncompressedDigitalAudioOpl *int32 `json:"uncompressedDigitalAudioOpl,omitempty"` 2911} 2912 2913// ContentKeyPolicyProperties the properties of the Content Key Policy. 2914type ContentKeyPolicyProperties struct { 2915 autorest.Response `json:"-"` 2916 // PolicyID - READ-ONLY; The legacy Policy ID. 2917 PolicyID *uuid.UUID `json:"policyId,omitempty"` 2918 // Created - READ-ONLY; The creation date of the Policy 2919 Created *date.Time `json:"created,omitempty"` 2920 // LastModified - READ-ONLY; The last modified date of the Policy 2921 LastModified *date.Time `json:"lastModified,omitempty"` 2922 // Description - A description for the Policy. 2923 Description *string `json:"description,omitempty"` 2924 // Options - The Key Policy options. 2925 Options *[]ContentKeyPolicyOption `json:"options,omitempty"` 2926} 2927 2928// MarshalJSON is the custom marshaler for ContentKeyPolicyProperties. 2929func (ckpp ContentKeyPolicyProperties) MarshalJSON() ([]byte, error) { 2930 objectMap := make(map[string]interface{}) 2931 if ckpp.Description != nil { 2932 objectMap["description"] = ckpp.Description 2933 } 2934 if ckpp.Options != nil { 2935 objectMap["options"] = ckpp.Options 2936 } 2937 return json.Marshal(objectMap) 2938} 2939 2940// BasicContentKeyPolicyRestriction base class for Content Key Policy restrictions. A derived class must be used to 2941// create a restriction. 2942type BasicContentKeyPolicyRestriction interface { 2943 AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) 2944 AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) 2945 AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) 2946 AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) 2947} 2948 2949// ContentKeyPolicyRestriction base class for Content Key Policy restrictions. A derived class must be used to 2950// create a restriction. 2951type ContentKeyPolicyRestriction struct { 2952 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 2953 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 2954} 2955 2956func unmarshalBasicContentKeyPolicyRestriction(body []byte) (BasicContentKeyPolicyRestriction, error) { 2957 var m map[string]interface{} 2958 err := json.Unmarshal(body, &m) 2959 if err != nil { 2960 return nil, err 2961 } 2962 2963 switch m["@odata.type"] { 2964 case string(OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction): 2965 var ckpor ContentKeyPolicyOpenRestriction 2966 err := json.Unmarshal(body, &ckpor) 2967 return ckpor, err 2968 case string(OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction): 2969 var ckpur ContentKeyPolicyUnknownRestriction 2970 err := json.Unmarshal(body, &ckpur) 2971 return ckpur, err 2972 case string(OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction): 2973 var ckptr ContentKeyPolicyTokenRestriction 2974 err := json.Unmarshal(body, &ckptr) 2975 return ckptr, err 2976 default: 2977 var ckpr ContentKeyPolicyRestriction 2978 err := json.Unmarshal(body, &ckpr) 2979 return ckpr, err 2980 } 2981} 2982func unmarshalBasicContentKeyPolicyRestrictionArray(body []byte) ([]BasicContentKeyPolicyRestriction, error) { 2983 var rawMessages []*json.RawMessage 2984 err := json.Unmarshal(body, &rawMessages) 2985 if err != nil { 2986 return nil, err 2987 } 2988 2989 ckprArray := make([]BasicContentKeyPolicyRestriction, len(rawMessages)) 2990 2991 for index, rawMessage := range rawMessages { 2992 ckpr, err := unmarshalBasicContentKeyPolicyRestriction(*rawMessage) 2993 if err != nil { 2994 return nil, err 2995 } 2996 ckprArray[index] = ckpr 2997 } 2998 return ckprArray, nil 2999} 3000 3001// MarshalJSON is the custom marshaler for ContentKeyPolicyRestriction. 3002func (ckpr ContentKeyPolicyRestriction) MarshalJSON() ([]byte, error) { 3003 ckpr.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction 3004 objectMap := make(map[string]interface{}) 3005 if ckpr.OdataType != "" { 3006 objectMap["@odata.type"] = ckpr.OdataType 3007 } 3008 return json.Marshal(objectMap) 3009} 3010 3011// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3012func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 3013 return nil, false 3014} 3015 3016// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3017func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 3018 return nil, false 3019} 3020 3021// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3022func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 3023 return nil, false 3024} 3025 3026// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3027func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 3028 return &ckpr, true 3029} 3030 3031// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3032func (ckpr ContentKeyPolicyRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 3033 return &ckpr, true 3034} 3035 3036// BasicContentKeyPolicyRestrictionTokenKey base class for Content Key Policy key for token validation. A derived class 3037// must be used to create a token key. 3038type BasicContentKeyPolicyRestrictionTokenKey interface { 3039 AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) 3040 AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) 3041 AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) 3042 AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) 3043} 3044 3045// ContentKeyPolicyRestrictionTokenKey base class for Content Key Policy key for token validation. A derived 3046// class must be used to create a token key. 3047type ContentKeyPolicyRestrictionTokenKey struct { 3048 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3049 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3050} 3051 3052func unmarshalBasicContentKeyPolicyRestrictionTokenKey(body []byte) (BasicContentKeyPolicyRestrictionTokenKey, error) { 3053 var m map[string]interface{} 3054 err := json.Unmarshal(body, &m) 3055 if err != nil { 3056 return nil, err 3057 } 3058 3059 switch m["@odata.type"] { 3060 case string(OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey): 3061 var ckpstk ContentKeyPolicySymmetricTokenKey 3062 err := json.Unmarshal(body, &ckpstk) 3063 return ckpstk, err 3064 case string(OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey): 3065 var ckprtk ContentKeyPolicyRsaTokenKey 3066 err := json.Unmarshal(body, &ckprtk) 3067 return ckprtk, err 3068 case string(OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey): 3069 var ckpxctk ContentKeyPolicyX509CertificateTokenKey 3070 err := json.Unmarshal(body, &ckpxctk) 3071 return ckpxctk, err 3072 default: 3073 var ckprtk ContentKeyPolicyRestrictionTokenKey 3074 err := json.Unmarshal(body, &ckprtk) 3075 return ckprtk, err 3076 } 3077} 3078func unmarshalBasicContentKeyPolicyRestrictionTokenKeyArray(body []byte) ([]BasicContentKeyPolicyRestrictionTokenKey, error) { 3079 var rawMessages []*json.RawMessage 3080 err := json.Unmarshal(body, &rawMessages) 3081 if err != nil { 3082 return nil, err 3083 } 3084 3085 ckprtkArray := make([]BasicContentKeyPolicyRestrictionTokenKey, len(rawMessages)) 3086 3087 for index, rawMessage := range rawMessages { 3088 ckprtk, err := unmarshalBasicContentKeyPolicyRestrictionTokenKey(*rawMessage) 3089 if err != nil { 3090 return nil, err 3091 } 3092 ckprtkArray[index] = ckprtk 3093 } 3094 return ckprtkArray, nil 3095} 3096 3097// MarshalJSON is the custom marshaler for ContentKeyPolicyRestrictionTokenKey. 3098func (ckprtk ContentKeyPolicyRestrictionTokenKey) MarshalJSON() ([]byte, error) { 3099 ckprtk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey 3100 objectMap := make(map[string]interface{}) 3101 if ckprtk.OdataType != "" { 3102 objectMap["@odata.type"] = ckprtk.OdataType 3103 } 3104 return json.Marshal(objectMap) 3105} 3106 3107// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3108func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3109 return nil, false 3110} 3111 3112// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3113func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3114 return nil, false 3115} 3116 3117// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3118func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3119 return nil, false 3120} 3121 3122// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3123func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3124 return &ckprtk, true 3125} 3126 3127// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3128func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3129 return &ckprtk, true 3130} 3131 3132// ContentKeyPolicyRsaTokenKey specifies a RSA key for token validation 3133type ContentKeyPolicyRsaTokenKey struct { 3134 // Exponent - The RSA Parameter exponent 3135 Exponent *[]byte `json:"exponent,omitempty"` 3136 // Modulus - The RSA Parameter modulus 3137 Modulus *[]byte `json:"modulus,omitempty"` 3138 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3139 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3140} 3141 3142// MarshalJSON is the custom marshaler for ContentKeyPolicyRsaTokenKey. 3143func (ckprtk ContentKeyPolicyRsaTokenKey) MarshalJSON() ([]byte, error) { 3144 ckprtk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey 3145 objectMap := make(map[string]interface{}) 3146 if ckprtk.Exponent != nil { 3147 objectMap["exponent"] = ckprtk.Exponent 3148 } 3149 if ckprtk.Modulus != nil { 3150 objectMap["modulus"] = ckprtk.Modulus 3151 } 3152 if ckprtk.OdataType != "" { 3153 objectMap["@odata.type"] = ckprtk.OdataType 3154 } 3155 return json.Marshal(objectMap) 3156} 3157 3158// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3159func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3160 return nil, false 3161} 3162 3163// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3164func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3165 return &ckprtk, true 3166} 3167 3168// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3169func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3170 return nil, false 3171} 3172 3173// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3174func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3175 return nil, false 3176} 3177 3178// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3179func (ckprtk ContentKeyPolicyRsaTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3180 return &ckprtk, true 3181} 3182 3183// ContentKeyPolicySymmetricTokenKey specifies a symmetric key for token validation. 3184type ContentKeyPolicySymmetricTokenKey struct { 3185 // KeyValue - The key value of the key 3186 KeyValue *[]byte `json:"keyValue,omitempty"` 3187 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3188 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3189} 3190 3191// MarshalJSON is the custom marshaler for ContentKeyPolicySymmetricTokenKey. 3192func (ckpstk ContentKeyPolicySymmetricTokenKey) MarshalJSON() ([]byte, error) { 3193 ckpstk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey 3194 objectMap := make(map[string]interface{}) 3195 if ckpstk.KeyValue != nil { 3196 objectMap["keyValue"] = ckpstk.KeyValue 3197 } 3198 if ckpstk.OdataType != "" { 3199 objectMap["@odata.type"] = ckpstk.OdataType 3200 } 3201 return json.Marshal(objectMap) 3202} 3203 3204// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3205func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3206 return &ckpstk, true 3207} 3208 3209// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3210func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3211 return nil, false 3212} 3213 3214// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3215func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3216 return nil, false 3217} 3218 3219// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3220func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3221 return nil, false 3222} 3223 3224// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3225func (ckpstk ContentKeyPolicySymmetricTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3226 return &ckpstk, true 3227} 3228 3229// ContentKeyPolicyTokenClaim represents a token claim. 3230type ContentKeyPolicyTokenClaim struct { 3231 // ClaimType - Token claim type. 3232 ClaimType *string `json:"claimType,omitempty"` 3233 // ClaimValue - Token claim value. 3234 ClaimValue *string `json:"claimValue,omitempty"` 3235} 3236 3237// ContentKeyPolicyTokenRestriction represents a token restriction. Provided token must match these 3238// requirements for successful license or key delivery. 3239type ContentKeyPolicyTokenRestriction struct { 3240 // Issuer - The token issuer. 3241 Issuer *string `json:"issuer,omitempty"` 3242 // Audience - The audience for the token. 3243 Audience *string `json:"audience,omitempty"` 3244 // PrimaryVerificationKey - The primary verification key. 3245 PrimaryVerificationKey BasicContentKeyPolicyRestrictionTokenKey `json:"primaryVerificationKey,omitempty"` 3246 // AlternateVerificationKeys - A list of alternative verification keys. 3247 AlternateVerificationKeys *[]BasicContentKeyPolicyRestrictionTokenKey `json:"alternateVerificationKeys,omitempty"` 3248 // RequiredClaims - A list of required token claims. 3249 RequiredClaims *[]ContentKeyPolicyTokenClaim `json:"requiredClaims,omitempty"` 3250 // RestrictionTokenType - The type of token. Possible values include: 'ContentKeyPolicyRestrictionTokenTypeUnknown', 'ContentKeyPolicyRestrictionTokenTypeSwt', 'ContentKeyPolicyRestrictionTokenTypeJwt' 3251 RestrictionTokenType ContentKeyPolicyRestrictionTokenType `json:"restrictionTokenType,omitempty"` 3252 // OpenIDConnectDiscoveryDocument - The OpenID connect discovery document. 3253 OpenIDConnectDiscoveryDocument *string `json:"openIdConnectDiscoveryDocument,omitempty"` 3254 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 3255 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 3256} 3257 3258// MarshalJSON is the custom marshaler for ContentKeyPolicyTokenRestriction. 3259func (ckptr ContentKeyPolicyTokenRestriction) MarshalJSON() ([]byte, error) { 3260 ckptr.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction 3261 objectMap := make(map[string]interface{}) 3262 if ckptr.Issuer != nil { 3263 objectMap["issuer"] = ckptr.Issuer 3264 } 3265 if ckptr.Audience != nil { 3266 objectMap["audience"] = ckptr.Audience 3267 } 3268 objectMap["primaryVerificationKey"] = ckptr.PrimaryVerificationKey 3269 if ckptr.AlternateVerificationKeys != nil { 3270 objectMap["alternateVerificationKeys"] = ckptr.AlternateVerificationKeys 3271 } 3272 if ckptr.RequiredClaims != nil { 3273 objectMap["requiredClaims"] = ckptr.RequiredClaims 3274 } 3275 if ckptr.RestrictionTokenType != "" { 3276 objectMap["restrictionTokenType"] = ckptr.RestrictionTokenType 3277 } 3278 if ckptr.OpenIDConnectDiscoveryDocument != nil { 3279 objectMap["openIdConnectDiscoveryDocument"] = ckptr.OpenIDConnectDiscoveryDocument 3280 } 3281 if ckptr.OdataType != "" { 3282 objectMap["@odata.type"] = ckptr.OdataType 3283 } 3284 return json.Marshal(objectMap) 3285} 3286 3287// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3288func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 3289 return nil, false 3290} 3291 3292// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3293func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 3294 return nil, false 3295} 3296 3297// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3298func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 3299 return &ckptr, true 3300} 3301 3302// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3303func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 3304 return nil, false 3305} 3306 3307// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3308func (ckptr ContentKeyPolicyTokenRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 3309 return &ckptr, true 3310} 3311 3312// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicyTokenRestriction struct. 3313func (ckptr *ContentKeyPolicyTokenRestriction) UnmarshalJSON(body []byte) error { 3314 var m map[string]*json.RawMessage 3315 err := json.Unmarshal(body, &m) 3316 if err != nil { 3317 return err 3318 } 3319 for k, v := range m { 3320 switch k { 3321 case "issuer": 3322 if v != nil { 3323 var issuer string 3324 err = json.Unmarshal(*v, &issuer) 3325 if err != nil { 3326 return err 3327 } 3328 ckptr.Issuer = &issuer 3329 } 3330 case "audience": 3331 if v != nil { 3332 var audience string 3333 err = json.Unmarshal(*v, &audience) 3334 if err != nil { 3335 return err 3336 } 3337 ckptr.Audience = &audience 3338 } 3339 case "primaryVerificationKey": 3340 if v != nil { 3341 primaryVerificationKey, err := unmarshalBasicContentKeyPolicyRestrictionTokenKey(*v) 3342 if err != nil { 3343 return err 3344 } 3345 ckptr.PrimaryVerificationKey = primaryVerificationKey 3346 } 3347 case "alternateVerificationKeys": 3348 if v != nil { 3349 alternateVerificationKeys, err := unmarshalBasicContentKeyPolicyRestrictionTokenKeyArray(*v) 3350 if err != nil { 3351 return err 3352 } 3353 ckptr.AlternateVerificationKeys = &alternateVerificationKeys 3354 } 3355 case "requiredClaims": 3356 if v != nil { 3357 var requiredClaims []ContentKeyPolicyTokenClaim 3358 err = json.Unmarshal(*v, &requiredClaims) 3359 if err != nil { 3360 return err 3361 } 3362 ckptr.RequiredClaims = &requiredClaims 3363 } 3364 case "restrictionTokenType": 3365 if v != nil { 3366 var restrictionTokenType ContentKeyPolicyRestrictionTokenType 3367 err = json.Unmarshal(*v, &restrictionTokenType) 3368 if err != nil { 3369 return err 3370 } 3371 ckptr.RestrictionTokenType = restrictionTokenType 3372 } 3373 case "openIdConnectDiscoveryDocument": 3374 if v != nil { 3375 var openIDConnectDiscoveryDocument string 3376 err = json.Unmarshal(*v, &openIDConnectDiscoveryDocument) 3377 if err != nil { 3378 return err 3379 } 3380 ckptr.OpenIDConnectDiscoveryDocument = &openIDConnectDiscoveryDocument 3381 } 3382 case "@odata.type": 3383 if v != nil { 3384 var odataType OdataTypeBasicContentKeyPolicyRestriction 3385 err = json.Unmarshal(*v, &odataType) 3386 if err != nil { 3387 return err 3388 } 3389 ckptr.OdataType = odataType 3390 } 3391 } 3392 } 3393 3394 return nil 3395} 3396 3397// ContentKeyPolicyUnknownConfiguration represents a ContentKeyPolicyConfiguration that is unavailable in 3398// the current API version. 3399type ContentKeyPolicyUnknownConfiguration struct { 3400 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 3401 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 3402} 3403 3404// MarshalJSON is the custom marshaler for ContentKeyPolicyUnknownConfiguration. 3405func (ckpuc ContentKeyPolicyUnknownConfiguration) MarshalJSON() ([]byte, error) { 3406 ckpuc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration 3407 objectMap := make(map[string]interface{}) 3408 if ckpuc.OdataType != "" { 3409 objectMap["@odata.type"] = ckpuc.OdataType 3410 } 3411 return json.Marshal(objectMap) 3412} 3413 3414// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3415func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 3416 return nil, false 3417} 3418 3419// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3420func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 3421 return &ckpuc, true 3422} 3423 3424// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3425func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 3426 return nil, false 3427} 3428 3429// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3430func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 3431 return nil, false 3432} 3433 3434// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3435func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 3436 return nil, false 3437} 3438 3439// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3440func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 3441 return nil, false 3442} 3443 3444// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3445func (ckpuc ContentKeyPolicyUnknownConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 3446 return &ckpuc, true 3447} 3448 3449// ContentKeyPolicyUnknownRestriction represents a ContentKeyPolicyRestriction that is unavailable in the 3450// current API version. 3451type ContentKeyPolicyUnknownRestriction struct { 3452 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 3453 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 3454} 3455 3456// MarshalJSON is the custom marshaler for ContentKeyPolicyUnknownRestriction. 3457func (ckpur ContentKeyPolicyUnknownRestriction) MarshalJSON() ([]byte, error) { 3458 ckpur.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction 3459 objectMap := make(map[string]interface{}) 3460 if ckpur.OdataType != "" { 3461 objectMap["@odata.type"] = ckpur.OdataType 3462 } 3463 return json.Marshal(objectMap) 3464} 3465 3466// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3467func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 3468 return nil, false 3469} 3470 3471// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3472func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 3473 return &ckpur, true 3474} 3475 3476// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3477func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 3478 return nil, false 3479} 3480 3481// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3482func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 3483 return nil, false 3484} 3485 3486// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3487func (ckpur ContentKeyPolicyUnknownRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 3488 return &ckpur, true 3489} 3490 3491// ContentKeyPolicyWidevineConfiguration specifies a configuration for Widevine licenses. 3492type ContentKeyPolicyWidevineConfiguration struct { 3493 // WidevineTemplate - The Widevine template. 3494 WidevineTemplate *string `json:"widevineTemplate,omitempty"` 3495 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 3496 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 3497} 3498 3499// MarshalJSON is the custom marshaler for ContentKeyPolicyWidevineConfiguration. 3500func (ckpwc ContentKeyPolicyWidevineConfiguration) MarshalJSON() ([]byte, error) { 3501 ckpwc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration 3502 objectMap := make(map[string]interface{}) 3503 if ckpwc.WidevineTemplate != nil { 3504 objectMap["widevineTemplate"] = ckpwc.WidevineTemplate 3505 } 3506 if ckpwc.OdataType != "" { 3507 objectMap["@odata.type"] = ckpwc.OdataType 3508 } 3509 return json.Marshal(objectMap) 3510} 3511 3512// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3513func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 3514 return nil, false 3515} 3516 3517// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3518func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 3519 return nil, false 3520} 3521 3522// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3523func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 3524 return &ckpwc, true 3525} 3526 3527// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3528func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 3529 return nil, false 3530} 3531 3532// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3533func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 3534 return nil, false 3535} 3536 3537// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3538func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 3539 return nil, false 3540} 3541 3542// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3543func (ckpwc ContentKeyPolicyWidevineConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 3544 return &ckpwc, true 3545} 3546 3547// ContentKeyPolicyX509CertificateTokenKey specifies a certificate for token validation. 3548type ContentKeyPolicyX509CertificateTokenKey struct { 3549 // RawBody - The raw data field of a certificate in PKCS 12 format (X509Certificate2 in .NET) 3550 RawBody *[]byte `json:"rawBody,omitempty"` 3551 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3552 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3553} 3554 3555// MarshalJSON is the custom marshaler for ContentKeyPolicyX509CertificateTokenKey. 3556func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) MarshalJSON() ([]byte, error) { 3557 ckpxctk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey 3558 objectMap := make(map[string]interface{}) 3559 if ckpxctk.RawBody != nil { 3560 objectMap["rawBody"] = ckpxctk.RawBody 3561 } 3562 if ckpxctk.OdataType != "" { 3563 objectMap["@odata.type"] = ckpxctk.OdataType 3564 } 3565 return json.Marshal(objectMap) 3566} 3567 3568// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3569func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3570 return nil, false 3571} 3572 3573// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3574func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3575 return nil, false 3576} 3577 3578// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3579func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3580 return &ckpxctk, true 3581} 3582 3583// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3584func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3585 return nil, false 3586} 3587 3588// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3589func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3590 return &ckpxctk, true 3591} 3592 3593// CopyAudio a codec flag, which tells the encoder to copy the input audio bitstream. 3594type CopyAudio struct { 3595 // Label - An optional label for the codec. The label can be used to control muxing behavior. 3596 Label *string `json:"label,omitempty"` 3597 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 3598 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 3599} 3600 3601// MarshalJSON is the custom marshaler for CopyAudio. 3602func (ca CopyAudio) MarshalJSON() ([]byte, error) { 3603 ca.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio 3604 objectMap := make(map[string]interface{}) 3605 if ca.Label != nil { 3606 objectMap["label"] = ca.Label 3607 } 3608 if ca.OdataType != "" { 3609 objectMap["@odata.type"] = ca.OdataType 3610 } 3611 return json.Marshal(objectMap) 3612} 3613 3614// AsAudio is the BasicCodec implementation for CopyAudio. 3615func (ca CopyAudio) AsAudio() (*Audio, bool) { 3616 return nil, false 3617} 3618 3619// AsBasicAudio is the BasicCodec implementation for CopyAudio. 3620func (ca CopyAudio) AsBasicAudio() (BasicAudio, bool) { 3621 return nil, false 3622} 3623 3624// AsAacAudio is the BasicCodec implementation for CopyAudio. 3625func (ca CopyAudio) AsAacAudio() (*AacAudio, bool) { 3626 return nil, false 3627} 3628 3629// AsVideo is the BasicCodec implementation for CopyAudio. 3630func (ca CopyAudio) AsVideo() (*Video, bool) { 3631 return nil, false 3632} 3633 3634// AsBasicVideo is the BasicCodec implementation for CopyAudio. 3635func (ca CopyAudio) AsBasicVideo() (BasicVideo, bool) { 3636 return nil, false 3637} 3638 3639// AsH265Video is the BasicCodec implementation for CopyAudio. 3640func (ca CopyAudio) AsH265Video() (*H265Video, bool) { 3641 return nil, false 3642} 3643 3644// AsCopyVideo is the BasicCodec implementation for CopyAudio. 3645func (ca CopyAudio) AsCopyVideo() (*CopyVideo, bool) { 3646 return nil, false 3647} 3648 3649// AsImage is the BasicCodec implementation for CopyAudio. 3650func (ca CopyAudio) AsImage() (*Image, bool) { 3651 return nil, false 3652} 3653 3654// AsBasicImage is the BasicCodec implementation for CopyAudio. 3655func (ca CopyAudio) AsBasicImage() (BasicImage, bool) { 3656 return nil, false 3657} 3658 3659// AsCopyAudio is the BasicCodec implementation for CopyAudio. 3660func (ca CopyAudio) AsCopyAudio() (*CopyAudio, bool) { 3661 return &ca, true 3662} 3663 3664// AsH264Video is the BasicCodec implementation for CopyAudio. 3665func (ca CopyAudio) AsH264Video() (*H264Video, bool) { 3666 return nil, false 3667} 3668 3669// AsJpgImage is the BasicCodec implementation for CopyAudio. 3670func (ca CopyAudio) AsJpgImage() (*JpgImage, bool) { 3671 return nil, false 3672} 3673 3674// AsPngImage is the BasicCodec implementation for CopyAudio. 3675func (ca CopyAudio) AsPngImage() (*PngImage, bool) { 3676 return nil, false 3677} 3678 3679// AsCodec is the BasicCodec implementation for CopyAudio. 3680func (ca CopyAudio) AsCodec() (*Codec, bool) { 3681 return nil, false 3682} 3683 3684// AsBasicCodec is the BasicCodec implementation for CopyAudio. 3685func (ca CopyAudio) AsBasicCodec() (BasicCodec, bool) { 3686 return &ca, true 3687} 3688 3689// CopyVideo a codec flag, which tells the encoder to copy the input video bitstream without re-encoding. 3690type CopyVideo struct { 3691 // Label - An optional label for the codec. The label can be used to control muxing behavior. 3692 Label *string `json:"label,omitempty"` 3693 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 3694 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 3695} 3696 3697// MarshalJSON is the custom marshaler for CopyVideo. 3698func (cv CopyVideo) MarshalJSON() ([]byte, error) { 3699 cv.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo 3700 objectMap := make(map[string]interface{}) 3701 if cv.Label != nil { 3702 objectMap["label"] = cv.Label 3703 } 3704 if cv.OdataType != "" { 3705 objectMap["@odata.type"] = cv.OdataType 3706 } 3707 return json.Marshal(objectMap) 3708} 3709 3710// AsAudio is the BasicCodec implementation for CopyVideo. 3711func (cv CopyVideo) AsAudio() (*Audio, bool) { 3712 return nil, false 3713} 3714 3715// AsBasicAudio is the BasicCodec implementation for CopyVideo. 3716func (cv CopyVideo) AsBasicAudio() (BasicAudio, bool) { 3717 return nil, false 3718} 3719 3720// AsAacAudio is the BasicCodec implementation for CopyVideo. 3721func (cv CopyVideo) AsAacAudio() (*AacAudio, bool) { 3722 return nil, false 3723} 3724 3725// AsVideo is the BasicCodec implementation for CopyVideo. 3726func (cv CopyVideo) AsVideo() (*Video, bool) { 3727 return nil, false 3728} 3729 3730// AsBasicVideo is the BasicCodec implementation for CopyVideo. 3731func (cv CopyVideo) AsBasicVideo() (BasicVideo, bool) { 3732 return nil, false 3733} 3734 3735// AsH265Video is the BasicCodec implementation for CopyVideo. 3736func (cv CopyVideo) AsH265Video() (*H265Video, bool) { 3737 return nil, false 3738} 3739 3740// AsCopyVideo is the BasicCodec implementation for CopyVideo. 3741func (cv CopyVideo) AsCopyVideo() (*CopyVideo, bool) { 3742 return &cv, true 3743} 3744 3745// AsImage is the BasicCodec implementation for CopyVideo. 3746func (cv CopyVideo) AsImage() (*Image, bool) { 3747 return nil, false 3748} 3749 3750// AsBasicImage is the BasicCodec implementation for CopyVideo. 3751func (cv CopyVideo) AsBasicImage() (BasicImage, bool) { 3752 return nil, false 3753} 3754 3755// AsCopyAudio is the BasicCodec implementation for CopyVideo. 3756func (cv CopyVideo) AsCopyAudio() (*CopyAudio, bool) { 3757 return nil, false 3758} 3759 3760// AsH264Video is the BasicCodec implementation for CopyVideo. 3761func (cv CopyVideo) AsH264Video() (*H264Video, bool) { 3762 return nil, false 3763} 3764 3765// AsJpgImage is the BasicCodec implementation for CopyVideo. 3766func (cv CopyVideo) AsJpgImage() (*JpgImage, bool) { 3767 return nil, false 3768} 3769 3770// AsPngImage is the BasicCodec implementation for CopyVideo. 3771func (cv CopyVideo) AsPngImage() (*PngImage, bool) { 3772 return nil, false 3773} 3774 3775// AsCodec is the BasicCodec implementation for CopyVideo. 3776func (cv CopyVideo) AsCodec() (*Codec, bool) { 3777 return nil, false 3778} 3779 3780// AsBasicCodec is the BasicCodec implementation for CopyVideo. 3781func (cv CopyVideo) AsBasicCodec() (BasicCodec, bool) { 3782 return &cv, true 3783} 3784 3785// CrossSiteAccessPolicies the client access policy. 3786type CrossSiteAccessPolicies struct { 3787 // ClientAccessPolicy - The content of clientaccesspolicy.xml used by Silverlight. 3788 ClientAccessPolicy *string `json:"clientAccessPolicy,omitempty"` 3789 // CrossDomainPolicy - The content of crossdomain.xml used by Silverlight. 3790 CrossDomainPolicy *string `json:"crossDomainPolicy,omitempty"` 3791} 3792 3793// DefaultKey class to specify properties of default content key for each encryption scheme 3794type DefaultKey struct { 3795 // Label - Label can be used to specify Content Key when creating a Streaming Locator 3796 Label *string `json:"label,omitempty"` 3797 // PolicyName - Policy used by Default Key 3798 PolicyName *string `json:"policyName,omitempty"` 3799} 3800 3801// Deinterlace describes the de-interlacing settings. 3802type Deinterlace struct { 3803 // Parity - The field parity for de-interlacing, defaults to Auto. Possible values include: 'DeinterlaceParityAuto', 'DeinterlaceParityTopFieldFirst', 'DeinterlaceParityBottomFieldFirst' 3804 Parity DeinterlaceParity `json:"parity,omitempty"` 3805 // Mode - The deinterlacing mode. Defaults to AutoPixelAdaptive. Possible values include: 'DeinterlaceModeOff', 'DeinterlaceModeAutoPixelAdaptive' 3806 Mode DeinterlaceMode `json:"mode,omitempty"` 3807} 3808 3809// EdgePolicies ... 3810type EdgePolicies struct { 3811 autorest.Response `json:"-"` 3812 UsageDataCollectionPolicy *EdgeUsageDataCollectionPolicy `json:"usageDataCollectionPolicy,omitempty"` 3813} 3814 3815// EdgeUsageDataCollectionPolicy ... 3816type EdgeUsageDataCollectionPolicy struct { 3817 // DataCollectionFrequency - Usage data collection frequency in ISO 8601 duration format e.g. PT10M , PT5H. 3818 DataCollectionFrequency *string `json:"dataCollectionFrequency,omitempty"` 3819 // DataReportingFrequency - Usage data reporting frequency in ISO 8601 duration format e.g. PT10M , PT5H. 3820 DataReportingFrequency *string `json:"dataReportingFrequency,omitempty"` 3821 // MaxAllowedUnreportedUsageDuration - Maximum time for which the functionality of the device will not be hampered for not reporting the usage data. 3822 MaxAllowedUnreportedUsageDuration *string `json:"maxAllowedUnreportedUsageDuration,omitempty"` 3823 // EventHubDetails - Details of Event Hub where the usage will be reported. 3824 EventHubDetails *EdgeUsageDataEventHub `json:"eventHubDetails,omitempty"` 3825} 3826 3827// EdgeUsageDataEventHub ... 3828type EdgeUsageDataEventHub struct { 3829 // Name - Name of the Event Hub where usage will be reported. 3830 Name *string `json:"name,omitempty"` 3831 // Namespace - Namespace of the Event Hub where usage will be reported. 3832 Namespace *string `json:"namespace,omitempty"` 3833 // Token - SAS token needed to interact with Event Hub. 3834 Token *string `json:"token,omitempty"` 3835} 3836 3837// EnabledProtocols class to specify which protocols are enabled 3838type EnabledProtocols struct { 3839 // Download - Enable Download protocol or not 3840 Download *bool `json:"download,omitempty"` 3841 // Dash - Enable DASH protocol or not 3842 Dash *bool `json:"dash,omitempty"` 3843 // Hls - Enable HLS protocol or not 3844 Hls *bool `json:"hls,omitempty"` 3845 // SmoothStreaming - Enable SmoothStreaming protocol or not 3846 SmoothStreaming *bool `json:"smoothStreaming,omitempty"` 3847} 3848 3849// EntityNameAvailabilityCheckOutput the response from the check name availability request. 3850type EntityNameAvailabilityCheckOutput struct { 3851 autorest.Response `json:"-"` 3852 // NameAvailable - Specifies if the name is available. 3853 NameAvailable *bool `json:"nameAvailable,omitempty"` 3854 // Reason - Specifies the reason if the name is not available. 3855 Reason *string `json:"reason,omitempty"` 3856 // Message - Specifies the detailed reason if the name is not available. 3857 Message *string `json:"message,omitempty"` 3858} 3859 3860// EnvelopeEncryption class for EnvelopeEncryption encryption scheme 3861type EnvelopeEncryption struct { 3862 // EnabledProtocols - Representing supported protocols 3863 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 3864 // ClearTracks - Representing which tracks should not be encrypted 3865 ClearTracks *[]TrackSelection `json:"clearTracks,omitempty"` 3866 // ContentKeys - Representing default content key for each encryption scheme and separate content keys for specific tracks 3867 ContentKeys *StreamingPolicyContentKeys `json:"contentKeys,omitempty"` 3868 // CustomKeyAcquisitionURLTemplate - Template for the URL of the custom service delivering keys to end user players. Not required when using Azure Media Services for issuing keys. The template supports replaceable tokens that the service will update at runtime with the value specific to the request. The currently supported token values are {AlternativeMediaId}, which is replaced with the value of StreamingLocatorId.AlternativeMediaId, and {ContentKeyId}, which is replaced with the value of identifier of the key being requested. 3869 CustomKeyAcquisitionURLTemplate *string `json:"customKeyAcquisitionUrlTemplate,omitempty"` 3870} 3871 3872// ErrorAdditionalInfo the resource management error additional info. 3873type ErrorAdditionalInfo struct { 3874 // Type - READ-ONLY; The additional info type. 3875 Type *string `json:"type,omitempty"` 3876 // Info - READ-ONLY; The additional info. 3877 Info interface{} `json:"info,omitempty"` 3878} 3879 3880// MarshalJSON is the custom marshaler for ErrorAdditionalInfo. 3881func (eai ErrorAdditionalInfo) MarshalJSON() ([]byte, error) { 3882 objectMap := make(map[string]interface{}) 3883 return json.Marshal(objectMap) 3884} 3885 3886// ErrorDetail the error detail. 3887type ErrorDetail struct { 3888 // Code - READ-ONLY; The error code. 3889 Code *string `json:"code,omitempty"` 3890 // Message - READ-ONLY; The error message. 3891 Message *string `json:"message,omitempty"` 3892 // Target - READ-ONLY; The error target. 3893 Target *string `json:"target,omitempty"` 3894 // Details - READ-ONLY; The error details. 3895 Details *[]ErrorDetail `json:"details,omitempty"` 3896 // AdditionalInfo - READ-ONLY; The error additional info. 3897 AdditionalInfo *[]ErrorAdditionalInfo `json:"additionalInfo,omitempty"` 3898} 3899 3900// MarshalJSON is the custom marshaler for ErrorDetail. 3901func (ed ErrorDetail) MarshalJSON() ([]byte, error) { 3902 objectMap := make(map[string]interface{}) 3903 return json.Marshal(objectMap) 3904} 3905 3906// ErrorResponse common error response for all Azure Resource Manager APIs to return error details for 3907// failed operations. (This also follows the OData error response format.). 3908type ErrorResponse struct { 3909 // Error - The error object. 3910 Error *ErrorDetail `json:"error,omitempty"` 3911} 3912 3913// FaceDetectorPreset describes all the settings to be used when analyzing a video in order to detect (and 3914// optionally redact) all the faces present. 3915type FaceDetectorPreset struct { 3916 // Resolution - Specifies the maximum resolution at which your video is analyzed. The default behavior is "SourceResolution," which will keep the input video at its original resolution when analyzed. Using "StandardDefinition" will resize input videos to standard definition while preserving the appropriate aspect ratio. It will only resize if the video is of higher resolution. For example, a 1920x1080 input would be scaled to 640x360 before processing. Switching to "StandardDefinition" will reduce the time it takes to process high resolution video. It may also reduce the cost of using this component (see https://azure.microsoft.com/en-us/pricing/details/media-services/#analytics for details). However, faces that end up being too small in the resized video may not be detected. Possible values include: 'AnalysisResolutionSourceResolution', 'AnalysisResolutionStandardDefinition' 3917 Resolution AnalysisResolution `json:"resolution,omitempty"` 3918 // Mode - This mode provides the ability to choose between the following settings: 1) Analyze - For detection only.This mode generates a metadata JSON file marking appearances of faces throughout the video.Where possible, appearances of the same person are assigned the same ID. 2) Combined - Additionally redacts(blurs) detected faces. 3) Redact - This enables a 2-pass process, allowing for selective redaction of a subset of detected faces.It takes in the metadata file from a prior analyze pass, along with the source video, and a user-selected subset of IDs that require redaction. Possible values include: 'FaceRedactorModeAnalyze', 'FaceRedactorModeRedact', 'FaceRedactorModeCombined' 3919 Mode FaceRedactorMode `json:"mode,omitempty"` 3920 // BlurType - Blur type. Possible values include: 'BlurTypeBox', 'BlurTypeLow', 'BlurTypeMed', 'BlurTypeHigh', 'BlurTypeBlack' 3921 BlurType BlurType `json:"blurType,omitempty"` 3922 // ExperimentalOptions - Dictionary containing key value pairs for parameters not exposed in the preset itself 3923 ExperimentalOptions map[string]*string `json:"experimentalOptions"` 3924 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 3925 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 3926} 3927 3928// MarshalJSON is the custom marshaler for FaceDetectorPreset. 3929func (fdp FaceDetectorPreset) MarshalJSON() ([]byte, error) { 3930 fdp.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset 3931 objectMap := make(map[string]interface{}) 3932 if fdp.Resolution != "" { 3933 objectMap["resolution"] = fdp.Resolution 3934 } 3935 if fdp.Mode != "" { 3936 objectMap["mode"] = fdp.Mode 3937 } 3938 if fdp.BlurType != "" { 3939 objectMap["blurType"] = fdp.BlurType 3940 } 3941 if fdp.ExperimentalOptions != nil { 3942 objectMap["experimentalOptions"] = fdp.ExperimentalOptions 3943 } 3944 if fdp.OdataType != "" { 3945 objectMap["@odata.type"] = fdp.OdataType 3946 } 3947 return json.Marshal(objectMap) 3948} 3949 3950// AsFaceDetectorPreset is the BasicPreset implementation for FaceDetectorPreset. 3951func (fdp FaceDetectorPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 3952 return &fdp, true 3953} 3954 3955// AsAudioAnalyzerPreset is the BasicPreset implementation for FaceDetectorPreset. 3956func (fdp FaceDetectorPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 3957 return nil, false 3958} 3959 3960// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for FaceDetectorPreset. 3961func (fdp FaceDetectorPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 3962 return nil, false 3963} 3964 3965// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for FaceDetectorPreset. 3966func (fdp FaceDetectorPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 3967 return nil, false 3968} 3969 3970// AsStandardEncoderPreset is the BasicPreset implementation for FaceDetectorPreset. 3971func (fdp FaceDetectorPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 3972 return nil, false 3973} 3974 3975// AsVideoAnalyzerPreset is the BasicPreset implementation for FaceDetectorPreset. 3976func (fdp FaceDetectorPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 3977 return nil, false 3978} 3979 3980// AsPreset is the BasicPreset implementation for FaceDetectorPreset. 3981func (fdp FaceDetectorPreset) AsPreset() (*Preset, bool) { 3982 return nil, false 3983} 3984 3985// AsBasicPreset is the BasicPreset implementation for FaceDetectorPreset. 3986func (fdp FaceDetectorPreset) AsBasicPreset() (BasicPreset, bool) { 3987 return &fdp, true 3988} 3989 3990// FilterProperties the Media Filter properties. 3991type FilterProperties struct { 3992 // PresentationTimeRange - The presentation time range. 3993 PresentationTimeRange *PresentationTimeRange `json:"presentationTimeRange,omitempty"` 3994 // FirstQuality - The first quality. 3995 FirstQuality *FirstQuality `json:"firstQuality,omitempty"` 3996 // Tracks - The tracks selection conditions. 3997 Tracks *[]FilterTrackSelection `json:"tracks,omitempty"` 3998} 3999 4000// Filters describes all the filtering operations, such as de-interlacing, rotation etc. that are to be 4001// applied to the input media before encoding. 4002type Filters struct { 4003 // Deinterlace - The de-interlacing settings. 4004 Deinterlace *Deinterlace `json:"deinterlace,omitempty"` 4005 // Rotation - The rotation, if any, to be applied to the input video, before it is encoded. Default is Auto. Possible values include: 'RotationAuto', 'RotationNone', 'RotationRotate0', 'RotationRotate90', 'RotationRotate180', 'RotationRotate270' 4006 Rotation Rotation `json:"rotation,omitempty"` 4007 // Crop - The parameters for the rectangular window with which to crop the input video. 4008 Crop *Rectangle `json:"crop,omitempty"` 4009 // Overlays - The properties of overlays to be applied to the input video. These could be audio, image or video overlays. 4010 Overlays *[]BasicOverlay `json:"overlays,omitempty"` 4011} 4012 4013// UnmarshalJSON is the custom unmarshaler for Filters struct. 4014func (f *Filters) UnmarshalJSON(body []byte) error { 4015 var m map[string]*json.RawMessage 4016 err := json.Unmarshal(body, &m) 4017 if err != nil { 4018 return err 4019 } 4020 for k, v := range m { 4021 switch k { 4022 case "deinterlace": 4023 if v != nil { 4024 var deinterlace Deinterlace 4025 err = json.Unmarshal(*v, &deinterlace) 4026 if err != nil { 4027 return err 4028 } 4029 f.Deinterlace = &deinterlace 4030 } 4031 case "rotation": 4032 if v != nil { 4033 var rotation Rotation 4034 err = json.Unmarshal(*v, &rotation) 4035 if err != nil { 4036 return err 4037 } 4038 f.Rotation = rotation 4039 } 4040 case "crop": 4041 if v != nil { 4042 var crop Rectangle 4043 err = json.Unmarshal(*v, &crop) 4044 if err != nil { 4045 return err 4046 } 4047 f.Crop = &crop 4048 } 4049 case "overlays": 4050 if v != nil { 4051 overlays, err := unmarshalBasicOverlayArray(*v) 4052 if err != nil { 4053 return err 4054 } 4055 f.Overlays = &overlays 4056 } 4057 } 4058 } 4059 4060 return nil 4061} 4062 4063// FilterTrackPropertyCondition the class to specify one track property condition. 4064type FilterTrackPropertyCondition struct { 4065 // Property - The track property type. Possible values include: 'FilterTrackPropertyTypeUnknown', 'FilterTrackPropertyTypeType', 'FilterTrackPropertyTypeName', 'FilterTrackPropertyTypeLanguage', 'FilterTrackPropertyTypeFourCC', 'FilterTrackPropertyTypeBitrate' 4066 Property FilterTrackPropertyType `json:"property,omitempty"` 4067 // Value - The track property value. 4068 Value *string `json:"value,omitempty"` 4069 // Operation - The track property condition operation. Possible values include: 'FilterTrackPropertyCompareOperationEqual', 'FilterTrackPropertyCompareOperationNotEqual' 4070 Operation FilterTrackPropertyCompareOperation `json:"operation,omitempty"` 4071} 4072 4073// FilterTrackSelection representing a list of FilterTrackPropertyConditions to select a track. The 4074// filters are combined using a logical AND operation. 4075type FilterTrackSelection struct { 4076 // TrackSelections - The track selections. 4077 TrackSelections *[]FilterTrackPropertyCondition `json:"trackSelections,omitempty"` 4078} 4079 4080// FirstQuality filter First Quality 4081type FirstQuality struct { 4082 // Bitrate - The first quality bitrate. 4083 Bitrate *int32 `json:"bitrate,omitempty"` 4084} 4085 4086// BasicFormat base class for output. 4087type BasicFormat interface { 4088 AsImageFormat() (*ImageFormat, bool) 4089 AsBasicImageFormat() (BasicImageFormat, bool) 4090 AsJpgFormat() (*JpgFormat, bool) 4091 AsPngFormat() (*PngFormat, bool) 4092 AsMultiBitrateFormat() (*MultiBitrateFormat, bool) 4093 AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) 4094 AsMp4Format() (*Mp4Format, bool) 4095 AsTransportStreamFormat() (*TransportStreamFormat, bool) 4096 AsFormat() (*Format, bool) 4097} 4098 4099// Format base class for output. 4100type Format struct { 4101 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 4102 FilenamePattern *string `json:"filenamePattern,omitempty"` 4103 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 4104 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 4105} 4106 4107func unmarshalBasicFormat(body []byte) (BasicFormat, error) { 4108 var m map[string]interface{} 4109 err := json.Unmarshal(body, &m) 4110 if err != nil { 4111 return nil, err 4112 } 4113 4114 switch m["@odata.type"] { 4115 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat): 4116 var ifVar ImageFormat 4117 err := json.Unmarshal(body, &ifVar) 4118 return ifVar, err 4119 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat): 4120 var jf JpgFormat 4121 err := json.Unmarshal(body, &jf) 4122 return jf, err 4123 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat): 4124 var pf PngFormat 4125 err := json.Unmarshal(body, &pf) 4126 return pf, err 4127 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat): 4128 var mbf MultiBitrateFormat 4129 err := json.Unmarshal(body, &mbf) 4130 return mbf, err 4131 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format): 4132 var m4f Mp4Format 4133 err := json.Unmarshal(body, &m4f) 4134 return m4f, err 4135 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat): 4136 var tsf TransportStreamFormat 4137 err := json.Unmarshal(body, &tsf) 4138 return tsf, err 4139 default: 4140 var f Format 4141 err := json.Unmarshal(body, &f) 4142 return f, err 4143 } 4144} 4145func unmarshalBasicFormatArray(body []byte) ([]BasicFormat, error) { 4146 var rawMessages []*json.RawMessage 4147 err := json.Unmarshal(body, &rawMessages) 4148 if err != nil { 4149 return nil, err 4150 } 4151 4152 fArray := make([]BasicFormat, len(rawMessages)) 4153 4154 for index, rawMessage := range rawMessages { 4155 f, err := unmarshalBasicFormat(*rawMessage) 4156 if err != nil { 4157 return nil, err 4158 } 4159 fArray[index] = f 4160 } 4161 return fArray, nil 4162} 4163 4164// MarshalJSON is the custom marshaler for Format. 4165func (f Format) MarshalJSON() ([]byte, error) { 4166 f.OdataType = OdataTypeBasicFormatOdataTypeFormat 4167 objectMap := make(map[string]interface{}) 4168 if f.FilenamePattern != nil { 4169 objectMap["filenamePattern"] = f.FilenamePattern 4170 } 4171 if f.OdataType != "" { 4172 objectMap["@odata.type"] = f.OdataType 4173 } 4174 return json.Marshal(objectMap) 4175} 4176 4177// AsImageFormat is the BasicFormat implementation for Format. 4178func (f Format) AsImageFormat() (*ImageFormat, bool) { 4179 return nil, false 4180} 4181 4182// AsBasicImageFormat is the BasicFormat implementation for Format. 4183func (f Format) AsBasicImageFormat() (BasicImageFormat, bool) { 4184 return nil, false 4185} 4186 4187// AsJpgFormat is the BasicFormat implementation for Format. 4188func (f Format) AsJpgFormat() (*JpgFormat, bool) { 4189 return nil, false 4190} 4191 4192// AsPngFormat is the BasicFormat implementation for Format. 4193func (f Format) AsPngFormat() (*PngFormat, bool) { 4194 return nil, false 4195} 4196 4197// AsMultiBitrateFormat is the BasicFormat implementation for Format. 4198func (f Format) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 4199 return nil, false 4200} 4201 4202// AsBasicMultiBitrateFormat is the BasicFormat implementation for Format. 4203func (f Format) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 4204 return nil, false 4205} 4206 4207// AsMp4Format is the BasicFormat implementation for Format. 4208func (f Format) AsMp4Format() (*Mp4Format, bool) { 4209 return nil, false 4210} 4211 4212// AsTransportStreamFormat is the BasicFormat implementation for Format. 4213func (f Format) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 4214 return nil, false 4215} 4216 4217// AsFormat is the BasicFormat implementation for Format. 4218func (f Format) AsFormat() (*Format, bool) { 4219 return &f, true 4220} 4221 4222// AsBasicFormat is the BasicFormat implementation for Format. 4223func (f Format) AsBasicFormat() (BasicFormat, bool) { 4224 return &f, true 4225} 4226 4227// FromAllInputFile an InputDefinition that looks across all of the files provided to select tracks 4228// specified by the IncludedTracks property. Generally used with the AudioTrackByAttribute and 4229// VideoTrackByAttribute to allow selection of a single track across a set of input files. 4230type FromAllInputFile struct { 4231 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 4232 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 4233 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 4234 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 4235} 4236 4237// MarshalJSON is the custom marshaler for FromAllInputFile. 4238func (faif FromAllInputFile) MarshalJSON() ([]byte, error) { 4239 faif.OdataType = OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile 4240 objectMap := make(map[string]interface{}) 4241 if faif.IncludedTracks != nil { 4242 objectMap["includedTracks"] = faif.IncludedTracks 4243 } 4244 if faif.OdataType != "" { 4245 objectMap["@odata.type"] = faif.OdataType 4246 } 4247 return json.Marshal(objectMap) 4248} 4249 4250// AsFromAllInputFile is the BasicInputDefinition implementation for FromAllInputFile. 4251func (faif FromAllInputFile) AsFromAllInputFile() (*FromAllInputFile, bool) { 4252 return &faif, true 4253} 4254 4255// AsFromEachInputFile is the BasicInputDefinition implementation for FromAllInputFile. 4256func (faif FromAllInputFile) AsFromEachInputFile() (*FromEachInputFile, bool) { 4257 return nil, false 4258} 4259 4260// AsInputFile is the BasicInputDefinition implementation for FromAllInputFile. 4261func (faif FromAllInputFile) AsInputFile() (*InputFile, bool) { 4262 return nil, false 4263} 4264 4265// AsInputDefinition is the BasicInputDefinition implementation for FromAllInputFile. 4266func (faif FromAllInputFile) AsInputDefinition() (*InputDefinition, bool) { 4267 return nil, false 4268} 4269 4270// AsBasicInputDefinition is the BasicInputDefinition implementation for FromAllInputFile. 4271func (faif FromAllInputFile) AsBasicInputDefinition() (BasicInputDefinition, bool) { 4272 return &faif, true 4273} 4274 4275// UnmarshalJSON is the custom unmarshaler for FromAllInputFile struct. 4276func (faif *FromAllInputFile) UnmarshalJSON(body []byte) error { 4277 var m map[string]*json.RawMessage 4278 err := json.Unmarshal(body, &m) 4279 if err != nil { 4280 return err 4281 } 4282 for k, v := range m { 4283 switch k { 4284 case "includedTracks": 4285 if v != nil { 4286 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 4287 if err != nil { 4288 return err 4289 } 4290 faif.IncludedTracks = &includedTracks 4291 } 4292 case "@odata.type": 4293 if v != nil { 4294 var odataType OdataTypeBasicInputDefinition 4295 err = json.Unmarshal(*v, &odataType) 4296 if err != nil { 4297 return err 4298 } 4299 faif.OdataType = odataType 4300 } 4301 } 4302 } 4303 4304 return nil 4305} 4306 4307// FromEachInputFile an InputDefinition that looks at each input file provided to select tracks specified 4308// by the IncludedTracks property. Generally used with the AudioTrackByAttribute and VideoTrackByAttribute 4309// to select tracks from each file given. 4310type FromEachInputFile struct { 4311 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 4312 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 4313 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 4314 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 4315} 4316 4317// MarshalJSON is the custom marshaler for FromEachInputFile. 4318func (feif FromEachInputFile) MarshalJSON() ([]byte, error) { 4319 feif.OdataType = OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile 4320 objectMap := make(map[string]interface{}) 4321 if feif.IncludedTracks != nil { 4322 objectMap["includedTracks"] = feif.IncludedTracks 4323 } 4324 if feif.OdataType != "" { 4325 objectMap["@odata.type"] = feif.OdataType 4326 } 4327 return json.Marshal(objectMap) 4328} 4329 4330// AsFromAllInputFile is the BasicInputDefinition implementation for FromEachInputFile. 4331func (feif FromEachInputFile) AsFromAllInputFile() (*FromAllInputFile, bool) { 4332 return nil, false 4333} 4334 4335// AsFromEachInputFile is the BasicInputDefinition implementation for FromEachInputFile. 4336func (feif FromEachInputFile) AsFromEachInputFile() (*FromEachInputFile, bool) { 4337 return &feif, true 4338} 4339 4340// AsInputFile is the BasicInputDefinition implementation for FromEachInputFile. 4341func (feif FromEachInputFile) AsInputFile() (*InputFile, bool) { 4342 return nil, false 4343} 4344 4345// AsInputDefinition is the BasicInputDefinition implementation for FromEachInputFile. 4346func (feif FromEachInputFile) AsInputDefinition() (*InputDefinition, bool) { 4347 return nil, false 4348} 4349 4350// AsBasicInputDefinition is the BasicInputDefinition implementation for FromEachInputFile. 4351func (feif FromEachInputFile) AsBasicInputDefinition() (BasicInputDefinition, bool) { 4352 return &feif, true 4353} 4354 4355// UnmarshalJSON is the custom unmarshaler for FromEachInputFile struct. 4356func (feif *FromEachInputFile) UnmarshalJSON(body []byte) error { 4357 var m map[string]*json.RawMessage 4358 err := json.Unmarshal(body, &m) 4359 if err != nil { 4360 return err 4361 } 4362 for k, v := range m { 4363 switch k { 4364 case "includedTracks": 4365 if v != nil { 4366 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 4367 if err != nil { 4368 return err 4369 } 4370 feif.IncludedTracks = &includedTracks 4371 } 4372 case "@odata.type": 4373 if v != nil { 4374 var odataType OdataTypeBasicInputDefinition 4375 err = json.Unmarshal(*v, &odataType) 4376 if err != nil { 4377 return err 4378 } 4379 feif.OdataType = odataType 4380 } 4381 } 4382 } 4383 4384 return nil 4385} 4386 4387// H264Layer describes the settings to be used when encoding the input video into a desired output bitrate 4388// layer with the H.264 video codec. 4389type H264Layer struct { 4390 // Profile - We currently support Baseline, Main, High, High422, High444. Default is Auto. Possible values include: 'H264VideoProfileAuto', 'H264VideoProfileBaseline', 'H264VideoProfileMain', 'H264VideoProfileHigh', 'H264VideoProfileHigh422', 'H264VideoProfileHigh444' 4391 Profile H264VideoProfile `json:"profile,omitempty"` 4392 // Level - We currently support Level up to 6.2. The value can be Auto, or a number that matches the H.264 profile. If not specified, the default is Auto, which lets the encoder choose the Level that is appropriate for this layer. 4393 Level *string `json:"level,omitempty"` 4394 // BufferWindow - The VBV buffer window length. The value should be in ISO 8601 format. The value should be in the range [0.1-100] seconds. The default is 5 seconds (for example, PT5S). 4395 BufferWindow *string `json:"bufferWindow,omitempty"` 4396 // ReferenceFrames - The number of reference frames to be used when encoding this layer. If not specified, the encoder determines an appropriate number based on the encoder complexity setting. 4397 ReferenceFrames *int32 `json:"referenceFrames,omitempty"` 4398 // EntropyMode - The entropy mode to be used for this layer. If not specified, the encoder chooses the mode that is appropriate for the profile and level. Possible values include: 'EntropyModeCabac', 'EntropyModeCavlc' 4399 EntropyMode EntropyMode `json:"entropyMode,omitempty"` 4400 // Bitrate - The average bitrate in bits per second at which to encode the input video when generating this layer. This is a required field. 4401 Bitrate *int32 `json:"bitrate,omitempty"` 4402 // MaxBitrate - The maximum bitrate (in bits per second), at which the VBV buffer should be assumed to refill. If not specified, defaults to the same value as bitrate. 4403 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 4404 // BFrames - The number of B-frames to be used when encoding this layer. If not specified, the encoder chooses an appropriate number based on the video profile and level. 4405 BFrames *int32 `json:"bFrames,omitempty"` 4406 // FrameRate - The frame rate (in frames per second) at which to encode this layer. The value can be in the form of M/N where M and N are integers (For example, 30000/1001), or in the form of a number (For example, 30, or 29.97). The encoder enforces constraints on allowed frame rates based on the profile and level. If it is not specified, the encoder will use the same frame rate as the input video. 4407 FrameRate *string `json:"frameRate,omitempty"` 4408 // Slices - The number of slices to be used when encoding this layer. If not specified, default is zero, which means that encoder will use a single slice for each frame. 4409 Slices *int32 `json:"slices,omitempty"` 4410 // AdaptiveBFrame - Whether or not adaptive B-frames are to be used when encoding this layer. If not specified, the encoder will turn it on whenever the video profile permits its use. 4411 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 4412 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 4413 Width *string `json:"width,omitempty"` 4414 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 4415 Height *string `json:"height,omitempty"` 4416 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 4417 Label *string `json:"label,omitempty"` 4418 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 4419 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 4420} 4421 4422// MarshalJSON is the custom marshaler for H264Layer. 4423func (hl H264Layer) MarshalJSON() ([]byte, error) { 4424 hl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer 4425 objectMap := make(map[string]interface{}) 4426 if hl.Profile != "" { 4427 objectMap["profile"] = hl.Profile 4428 } 4429 if hl.Level != nil { 4430 objectMap["level"] = hl.Level 4431 } 4432 if hl.BufferWindow != nil { 4433 objectMap["bufferWindow"] = hl.BufferWindow 4434 } 4435 if hl.ReferenceFrames != nil { 4436 objectMap["referenceFrames"] = hl.ReferenceFrames 4437 } 4438 if hl.EntropyMode != "" { 4439 objectMap["entropyMode"] = hl.EntropyMode 4440 } 4441 if hl.Bitrate != nil { 4442 objectMap["bitrate"] = hl.Bitrate 4443 } 4444 if hl.MaxBitrate != nil { 4445 objectMap["maxBitrate"] = hl.MaxBitrate 4446 } 4447 if hl.BFrames != nil { 4448 objectMap["bFrames"] = hl.BFrames 4449 } 4450 if hl.FrameRate != nil { 4451 objectMap["frameRate"] = hl.FrameRate 4452 } 4453 if hl.Slices != nil { 4454 objectMap["slices"] = hl.Slices 4455 } 4456 if hl.AdaptiveBFrame != nil { 4457 objectMap["adaptiveBFrame"] = hl.AdaptiveBFrame 4458 } 4459 if hl.Width != nil { 4460 objectMap["width"] = hl.Width 4461 } 4462 if hl.Height != nil { 4463 objectMap["height"] = hl.Height 4464 } 4465 if hl.Label != nil { 4466 objectMap["label"] = hl.Label 4467 } 4468 if hl.OdataType != "" { 4469 objectMap["@odata.type"] = hl.OdataType 4470 } 4471 return json.Marshal(objectMap) 4472} 4473 4474// AsH265VideoLayer is the BasicLayer implementation for H264Layer. 4475func (hl H264Layer) AsH265VideoLayer() (*H265VideoLayer, bool) { 4476 return nil, false 4477} 4478 4479// AsBasicH265VideoLayer is the BasicLayer implementation for H264Layer. 4480func (hl H264Layer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 4481 return nil, false 4482} 4483 4484// AsH265Layer is the BasicLayer implementation for H264Layer. 4485func (hl H264Layer) AsH265Layer() (*H265Layer, bool) { 4486 return nil, false 4487} 4488 4489// AsVideoLayer is the BasicLayer implementation for H264Layer. 4490func (hl H264Layer) AsVideoLayer() (*VideoLayer, bool) { 4491 return nil, false 4492} 4493 4494// AsBasicVideoLayer is the BasicLayer implementation for H264Layer. 4495func (hl H264Layer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 4496 return &hl, true 4497} 4498 4499// AsH264Layer is the BasicLayer implementation for H264Layer. 4500func (hl H264Layer) AsH264Layer() (*H264Layer, bool) { 4501 return &hl, true 4502} 4503 4504// AsJpgLayer is the BasicLayer implementation for H264Layer. 4505func (hl H264Layer) AsJpgLayer() (*JpgLayer, bool) { 4506 return nil, false 4507} 4508 4509// AsPngLayer is the BasicLayer implementation for H264Layer. 4510func (hl H264Layer) AsPngLayer() (*PngLayer, bool) { 4511 return nil, false 4512} 4513 4514// AsLayer is the BasicLayer implementation for H264Layer. 4515func (hl H264Layer) AsLayer() (*Layer, bool) { 4516 return nil, false 4517} 4518 4519// AsBasicLayer is the BasicLayer implementation for H264Layer. 4520func (hl H264Layer) AsBasicLayer() (BasicLayer, bool) { 4521 return &hl, true 4522} 4523 4524// H264Video describes all the properties for encoding a video with the H.264 codec. 4525type H264Video struct { 4526 // SceneChangeDetection - Whether or not the encoder should insert key frames at scene changes. If not specified, the default is false. This flag should be set to true only when the encoder is being configured to produce a single output video. 4527 SceneChangeDetection *bool `json:"sceneChangeDetection,omitempty"` 4528 // Complexity - Tells the encoder how to choose its encoding settings. The default value is Balanced. Possible values include: 'H264ComplexitySpeed', 'H264ComplexityBalanced', 'H264ComplexityQuality' 4529 Complexity H264Complexity `json:"complexity,omitempty"` 4530 // Layers - The collection of output H.264 layers to be produced by the encoder. 4531 Layers *[]H264Layer `json:"layers,omitempty"` 4532 // KeyFrameInterval - The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting. 4533 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 4534 // StretchMode - The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 4535 StretchMode StretchMode `json:"stretchMode,omitempty"` 4536 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 4537 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 4538 // Label - An optional label for the codec. The label can be used to control muxing behavior. 4539 Label *string `json:"label,omitempty"` 4540 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 4541 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 4542} 4543 4544// MarshalJSON is the custom marshaler for H264Video. 4545func (hv H264Video) MarshalJSON() ([]byte, error) { 4546 hv.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video 4547 objectMap := make(map[string]interface{}) 4548 if hv.SceneChangeDetection != nil { 4549 objectMap["sceneChangeDetection"] = hv.SceneChangeDetection 4550 } 4551 if hv.Complexity != "" { 4552 objectMap["complexity"] = hv.Complexity 4553 } 4554 if hv.Layers != nil { 4555 objectMap["layers"] = hv.Layers 4556 } 4557 if hv.KeyFrameInterval != nil { 4558 objectMap["keyFrameInterval"] = hv.KeyFrameInterval 4559 } 4560 if hv.StretchMode != "" { 4561 objectMap["stretchMode"] = hv.StretchMode 4562 } 4563 if hv.SyncMode != "" { 4564 objectMap["syncMode"] = hv.SyncMode 4565 } 4566 if hv.Label != nil { 4567 objectMap["label"] = hv.Label 4568 } 4569 if hv.OdataType != "" { 4570 objectMap["@odata.type"] = hv.OdataType 4571 } 4572 return json.Marshal(objectMap) 4573} 4574 4575// AsAudio is the BasicCodec implementation for H264Video. 4576func (hv H264Video) AsAudio() (*Audio, bool) { 4577 return nil, false 4578} 4579 4580// AsBasicAudio is the BasicCodec implementation for H264Video. 4581func (hv H264Video) AsBasicAudio() (BasicAudio, bool) { 4582 return nil, false 4583} 4584 4585// AsAacAudio is the BasicCodec implementation for H264Video. 4586func (hv H264Video) AsAacAudio() (*AacAudio, bool) { 4587 return nil, false 4588} 4589 4590// AsVideo is the BasicCodec implementation for H264Video. 4591func (hv H264Video) AsVideo() (*Video, bool) { 4592 return nil, false 4593} 4594 4595// AsBasicVideo is the BasicCodec implementation for H264Video. 4596func (hv H264Video) AsBasicVideo() (BasicVideo, bool) { 4597 return &hv, true 4598} 4599 4600// AsH265Video is the BasicCodec implementation for H264Video. 4601func (hv H264Video) AsH265Video() (*H265Video, bool) { 4602 return nil, false 4603} 4604 4605// AsCopyVideo is the BasicCodec implementation for H264Video. 4606func (hv H264Video) AsCopyVideo() (*CopyVideo, bool) { 4607 return nil, false 4608} 4609 4610// AsImage is the BasicCodec implementation for H264Video. 4611func (hv H264Video) AsImage() (*Image, bool) { 4612 return nil, false 4613} 4614 4615// AsBasicImage is the BasicCodec implementation for H264Video. 4616func (hv H264Video) AsBasicImage() (BasicImage, bool) { 4617 return nil, false 4618} 4619 4620// AsCopyAudio is the BasicCodec implementation for H264Video. 4621func (hv H264Video) AsCopyAudio() (*CopyAudio, bool) { 4622 return nil, false 4623} 4624 4625// AsH264Video is the BasicCodec implementation for H264Video. 4626func (hv H264Video) AsH264Video() (*H264Video, bool) { 4627 return &hv, true 4628} 4629 4630// AsJpgImage is the BasicCodec implementation for H264Video. 4631func (hv H264Video) AsJpgImage() (*JpgImage, bool) { 4632 return nil, false 4633} 4634 4635// AsPngImage is the BasicCodec implementation for H264Video. 4636func (hv H264Video) AsPngImage() (*PngImage, bool) { 4637 return nil, false 4638} 4639 4640// AsCodec is the BasicCodec implementation for H264Video. 4641func (hv H264Video) AsCodec() (*Codec, bool) { 4642 return nil, false 4643} 4644 4645// AsBasicCodec is the BasicCodec implementation for H264Video. 4646func (hv H264Video) AsBasicCodec() (BasicCodec, bool) { 4647 return &hv, true 4648} 4649 4650// H265Layer describes the settings to be used when encoding the input video into a desired output bitrate 4651// layer with the H.265 video codec. 4652type H265Layer struct { 4653 // Profile - We currently support Main. Default is Auto. Possible values include: 'H265VideoProfileAuto', 'H265VideoProfileMain' 4654 Profile H265VideoProfile `json:"profile,omitempty"` 4655 // Level - We currently support Level up to 6.2. The value can be Auto, or a number that matches the H.265 profile. If not specified, the default is Auto, which lets the encoder choose the Level that is appropriate for this layer. 4656 Level *string `json:"level,omitempty"` 4657 // BufferWindow - The VBV buffer window length. The value should be in ISO 8601 format. The value should be in the range [0.1-100] seconds. The default is 5 seconds (for example, PT5S). 4658 BufferWindow *string `json:"bufferWindow,omitempty"` 4659 // ReferenceFrames - The number of reference frames to be used when encoding this layer. If not specified, the encoder determines an appropriate number based on the encoder complexity setting. 4660 ReferenceFrames *int32 `json:"referenceFrames,omitempty"` 4661 // Bitrate - The average bitrate in bits per second at which to encode the input video when generating this layer. For example: a target bitrate of 3000Kbps or 3Mbps means this value should be 3000000 This is a required field. 4662 Bitrate *int32 `json:"bitrate,omitempty"` 4663 // MaxBitrate - The maximum bitrate (in bits per second), at which the VBV buffer should be assumed to refill. If not specified, defaults to the same value as bitrate. 4664 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 4665 // BFrames - The number of B-frames to be used when encoding this layer. If not specified, the encoder chooses an appropriate number based on the video profile and level. 4666 BFrames *int32 `json:"bFrames,omitempty"` 4667 // FrameRate - The frame rate (in frames per second) at which to encode this layer. The value can be in the form of M/N where M and N are integers (For example, 30000/1001), or in the form of a number (For example, 30, or 29.97). The encoder enforces constraints on allowed frame rates based on the profile and level. If it is not specified, the encoder will use the same frame rate as the input video. 4668 FrameRate *string `json:"frameRate,omitempty"` 4669 // Slices - The number of slices to be used when encoding this layer. If not specified, default is zero, which means that encoder will use a single slice for each frame. 4670 Slices *int32 `json:"slices,omitempty"` 4671 // AdaptiveBFrame - Specifies whether or not adaptive B-frames are to be used when encoding this layer. If not specified, the encoder will turn it on whenever the video profile permits its use. 4672 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 4673 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 4674 Width *string `json:"width,omitempty"` 4675 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 4676 Height *string `json:"height,omitempty"` 4677 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 4678 Label *string `json:"label,omitempty"` 4679 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 4680 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 4681} 4682 4683// MarshalJSON is the custom marshaler for H265Layer. 4684func (hl H265Layer) MarshalJSON() ([]byte, error) { 4685 hl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer 4686 objectMap := make(map[string]interface{}) 4687 if hl.Profile != "" { 4688 objectMap["profile"] = hl.Profile 4689 } 4690 if hl.Level != nil { 4691 objectMap["level"] = hl.Level 4692 } 4693 if hl.BufferWindow != nil { 4694 objectMap["bufferWindow"] = hl.BufferWindow 4695 } 4696 if hl.ReferenceFrames != nil { 4697 objectMap["referenceFrames"] = hl.ReferenceFrames 4698 } 4699 if hl.Bitrate != nil { 4700 objectMap["bitrate"] = hl.Bitrate 4701 } 4702 if hl.MaxBitrate != nil { 4703 objectMap["maxBitrate"] = hl.MaxBitrate 4704 } 4705 if hl.BFrames != nil { 4706 objectMap["bFrames"] = hl.BFrames 4707 } 4708 if hl.FrameRate != nil { 4709 objectMap["frameRate"] = hl.FrameRate 4710 } 4711 if hl.Slices != nil { 4712 objectMap["slices"] = hl.Slices 4713 } 4714 if hl.AdaptiveBFrame != nil { 4715 objectMap["adaptiveBFrame"] = hl.AdaptiveBFrame 4716 } 4717 if hl.Width != nil { 4718 objectMap["width"] = hl.Width 4719 } 4720 if hl.Height != nil { 4721 objectMap["height"] = hl.Height 4722 } 4723 if hl.Label != nil { 4724 objectMap["label"] = hl.Label 4725 } 4726 if hl.OdataType != "" { 4727 objectMap["@odata.type"] = hl.OdataType 4728 } 4729 return json.Marshal(objectMap) 4730} 4731 4732// AsH265VideoLayer is the BasicLayer implementation for H265Layer. 4733func (hl H265Layer) AsH265VideoLayer() (*H265VideoLayer, bool) { 4734 return nil, false 4735} 4736 4737// AsBasicH265VideoLayer is the BasicLayer implementation for H265Layer. 4738func (hl H265Layer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 4739 return &hl, true 4740} 4741 4742// AsH265Layer is the BasicLayer implementation for H265Layer. 4743func (hl H265Layer) AsH265Layer() (*H265Layer, bool) { 4744 return &hl, true 4745} 4746 4747// AsVideoLayer is the BasicLayer implementation for H265Layer. 4748func (hl H265Layer) AsVideoLayer() (*VideoLayer, bool) { 4749 return nil, false 4750} 4751 4752// AsBasicVideoLayer is the BasicLayer implementation for H265Layer. 4753func (hl H265Layer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 4754 return nil, false 4755} 4756 4757// AsH264Layer is the BasicLayer implementation for H265Layer. 4758func (hl H265Layer) AsH264Layer() (*H264Layer, bool) { 4759 return nil, false 4760} 4761 4762// AsJpgLayer is the BasicLayer implementation for H265Layer. 4763func (hl H265Layer) AsJpgLayer() (*JpgLayer, bool) { 4764 return nil, false 4765} 4766 4767// AsPngLayer is the BasicLayer implementation for H265Layer. 4768func (hl H265Layer) AsPngLayer() (*PngLayer, bool) { 4769 return nil, false 4770} 4771 4772// AsLayer is the BasicLayer implementation for H265Layer. 4773func (hl H265Layer) AsLayer() (*Layer, bool) { 4774 return nil, false 4775} 4776 4777// AsBasicLayer is the BasicLayer implementation for H265Layer. 4778func (hl H265Layer) AsBasicLayer() (BasicLayer, bool) { 4779 return &hl, true 4780} 4781 4782// H265Video describes all the properties for encoding a video with the H.265 codec. 4783type H265Video struct { 4784 // SceneChangeDetection - Specifies whether or not the encoder should insert key frames at scene changes. If not specified, the default is false. This flag should be set to true only when the encoder is being configured to produce a single output video. 4785 SceneChangeDetection *bool `json:"sceneChangeDetection,omitempty"` 4786 // Complexity - Tells the encoder how to choose its encoding settings. Quality will provide for a higher compression ratio but at a higher cost and longer compute time. Speed will produce a relatively larger file but is faster and more economical. The default value is Balanced. Possible values include: 'H265ComplexitySpeed', 'H265ComplexityBalanced', 'H265ComplexityQuality' 4787 Complexity H265Complexity `json:"complexity,omitempty"` 4788 // Layers - The collection of output H.265 layers to be produced by the encoder. 4789 Layers *[]H265Layer `json:"layers,omitempty"` 4790 // KeyFrameInterval - The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting. 4791 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 4792 // StretchMode - The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 4793 StretchMode StretchMode `json:"stretchMode,omitempty"` 4794 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 4795 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 4796 // Label - An optional label for the codec. The label can be used to control muxing behavior. 4797 Label *string `json:"label,omitempty"` 4798 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 4799 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 4800} 4801 4802// MarshalJSON is the custom marshaler for H265Video. 4803func (hv H265Video) MarshalJSON() ([]byte, error) { 4804 hv.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video 4805 objectMap := make(map[string]interface{}) 4806 if hv.SceneChangeDetection != nil { 4807 objectMap["sceneChangeDetection"] = hv.SceneChangeDetection 4808 } 4809 if hv.Complexity != "" { 4810 objectMap["complexity"] = hv.Complexity 4811 } 4812 if hv.Layers != nil { 4813 objectMap["layers"] = hv.Layers 4814 } 4815 if hv.KeyFrameInterval != nil { 4816 objectMap["keyFrameInterval"] = hv.KeyFrameInterval 4817 } 4818 if hv.StretchMode != "" { 4819 objectMap["stretchMode"] = hv.StretchMode 4820 } 4821 if hv.SyncMode != "" { 4822 objectMap["syncMode"] = hv.SyncMode 4823 } 4824 if hv.Label != nil { 4825 objectMap["label"] = hv.Label 4826 } 4827 if hv.OdataType != "" { 4828 objectMap["@odata.type"] = hv.OdataType 4829 } 4830 return json.Marshal(objectMap) 4831} 4832 4833// AsAudio is the BasicCodec implementation for H265Video. 4834func (hv H265Video) AsAudio() (*Audio, bool) { 4835 return nil, false 4836} 4837 4838// AsBasicAudio is the BasicCodec implementation for H265Video. 4839func (hv H265Video) AsBasicAudio() (BasicAudio, bool) { 4840 return nil, false 4841} 4842 4843// AsAacAudio is the BasicCodec implementation for H265Video. 4844func (hv H265Video) AsAacAudio() (*AacAudio, bool) { 4845 return nil, false 4846} 4847 4848// AsVideo is the BasicCodec implementation for H265Video. 4849func (hv H265Video) AsVideo() (*Video, bool) { 4850 return nil, false 4851} 4852 4853// AsBasicVideo is the BasicCodec implementation for H265Video. 4854func (hv H265Video) AsBasicVideo() (BasicVideo, bool) { 4855 return &hv, true 4856} 4857 4858// AsH265Video is the BasicCodec implementation for H265Video. 4859func (hv H265Video) AsH265Video() (*H265Video, bool) { 4860 return &hv, true 4861} 4862 4863// AsCopyVideo is the BasicCodec implementation for H265Video. 4864func (hv H265Video) AsCopyVideo() (*CopyVideo, bool) { 4865 return nil, false 4866} 4867 4868// AsImage is the BasicCodec implementation for H265Video. 4869func (hv H265Video) AsImage() (*Image, bool) { 4870 return nil, false 4871} 4872 4873// AsBasicImage is the BasicCodec implementation for H265Video. 4874func (hv H265Video) AsBasicImage() (BasicImage, bool) { 4875 return nil, false 4876} 4877 4878// AsCopyAudio is the BasicCodec implementation for H265Video. 4879func (hv H265Video) AsCopyAudio() (*CopyAudio, bool) { 4880 return nil, false 4881} 4882 4883// AsH264Video is the BasicCodec implementation for H265Video. 4884func (hv H265Video) AsH264Video() (*H264Video, bool) { 4885 return nil, false 4886} 4887 4888// AsJpgImage is the BasicCodec implementation for H265Video. 4889func (hv H265Video) AsJpgImage() (*JpgImage, bool) { 4890 return nil, false 4891} 4892 4893// AsPngImage is the BasicCodec implementation for H265Video. 4894func (hv H265Video) AsPngImage() (*PngImage, bool) { 4895 return nil, false 4896} 4897 4898// AsCodec is the BasicCodec implementation for H265Video. 4899func (hv H265Video) AsCodec() (*Codec, bool) { 4900 return nil, false 4901} 4902 4903// AsBasicCodec is the BasicCodec implementation for H265Video. 4904func (hv H265Video) AsBasicCodec() (BasicCodec, bool) { 4905 return &hv, true 4906} 4907 4908// BasicH265VideoLayer describes the settings to be used when encoding the input video into a desired output bitrate 4909// layer. 4910type BasicH265VideoLayer interface { 4911 AsH265Layer() (*H265Layer, bool) 4912 AsH265VideoLayer() (*H265VideoLayer, bool) 4913} 4914 4915// H265VideoLayer describes the settings to be used when encoding the input video into a desired output bitrate 4916// layer. 4917type H265VideoLayer struct { 4918 // Bitrate - The average bitrate in bits per second at which to encode the input video when generating this layer. For example: a target bitrate of 3000Kbps or 3Mbps means this value should be 3000000 This is a required field. 4919 Bitrate *int32 `json:"bitrate,omitempty"` 4920 // MaxBitrate - The maximum bitrate (in bits per second), at which the VBV buffer should be assumed to refill. If not specified, defaults to the same value as bitrate. 4921 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 4922 // BFrames - The number of B-frames to be used when encoding this layer. If not specified, the encoder chooses an appropriate number based on the video profile and level. 4923 BFrames *int32 `json:"bFrames,omitempty"` 4924 // FrameRate - The frame rate (in frames per second) at which to encode this layer. The value can be in the form of M/N where M and N are integers (For example, 30000/1001), or in the form of a number (For example, 30, or 29.97). The encoder enforces constraints on allowed frame rates based on the profile and level. If it is not specified, the encoder will use the same frame rate as the input video. 4925 FrameRate *string `json:"frameRate,omitempty"` 4926 // Slices - The number of slices to be used when encoding this layer. If not specified, default is zero, which means that encoder will use a single slice for each frame. 4927 Slices *int32 `json:"slices,omitempty"` 4928 // AdaptiveBFrame - Specifies whether or not adaptive B-frames are to be used when encoding this layer. If not specified, the encoder will turn it on whenever the video profile permits its use. 4929 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 4930 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 4931 Width *string `json:"width,omitempty"` 4932 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 4933 Height *string `json:"height,omitempty"` 4934 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 4935 Label *string `json:"label,omitempty"` 4936 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 4937 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 4938} 4939 4940func unmarshalBasicH265VideoLayer(body []byte) (BasicH265VideoLayer, error) { 4941 var m map[string]interface{} 4942 err := json.Unmarshal(body, &m) 4943 if err != nil { 4944 return nil, err 4945 } 4946 4947 switch m["@odata.type"] { 4948 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer): 4949 var hl H265Layer 4950 err := json.Unmarshal(body, &hl) 4951 return hl, err 4952 default: 4953 var hvl H265VideoLayer 4954 err := json.Unmarshal(body, &hvl) 4955 return hvl, err 4956 } 4957} 4958func unmarshalBasicH265VideoLayerArray(body []byte) ([]BasicH265VideoLayer, error) { 4959 var rawMessages []*json.RawMessage 4960 err := json.Unmarshal(body, &rawMessages) 4961 if err != nil { 4962 return nil, err 4963 } 4964 4965 hvlArray := make([]BasicH265VideoLayer, len(rawMessages)) 4966 4967 for index, rawMessage := range rawMessages { 4968 hvl, err := unmarshalBasicH265VideoLayer(*rawMessage) 4969 if err != nil { 4970 return nil, err 4971 } 4972 hvlArray[index] = hvl 4973 } 4974 return hvlArray, nil 4975} 4976 4977// MarshalJSON is the custom marshaler for H265VideoLayer. 4978func (hvl H265VideoLayer) MarshalJSON() ([]byte, error) { 4979 hvl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer 4980 objectMap := make(map[string]interface{}) 4981 if hvl.Bitrate != nil { 4982 objectMap["bitrate"] = hvl.Bitrate 4983 } 4984 if hvl.MaxBitrate != nil { 4985 objectMap["maxBitrate"] = hvl.MaxBitrate 4986 } 4987 if hvl.BFrames != nil { 4988 objectMap["bFrames"] = hvl.BFrames 4989 } 4990 if hvl.FrameRate != nil { 4991 objectMap["frameRate"] = hvl.FrameRate 4992 } 4993 if hvl.Slices != nil { 4994 objectMap["slices"] = hvl.Slices 4995 } 4996 if hvl.AdaptiveBFrame != nil { 4997 objectMap["adaptiveBFrame"] = hvl.AdaptiveBFrame 4998 } 4999 if hvl.Width != nil { 5000 objectMap["width"] = hvl.Width 5001 } 5002 if hvl.Height != nil { 5003 objectMap["height"] = hvl.Height 5004 } 5005 if hvl.Label != nil { 5006 objectMap["label"] = hvl.Label 5007 } 5008 if hvl.OdataType != "" { 5009 objectMap["@odata.type"] = hvl.OdataType 5010 } 5011 return json.Marshal(objectMap) 5012} 5013 5014// AsH265VideoLayer is the BasicLayer implementation for H265VideoLayer. 5015func (hvl H265VideoLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 5016 return &hvl, true 5017} 5018 5019// AsBasicH265VideoLayer is the BasicLayer implementation for H265VideoLayer. 5020func (hvl H265VideoLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 5021 return &hvl, true 5022} 5023 5024// AsH265Layer is the BasicLayer implementation for H265VideoLayer. 5025func (hvl H265VideoLayer) AsH265Layer() (*H265Layer, bool) { 5026 return nil, false 5027} 5028 5029// AsVideoLayer is the BasicLayer implementation for H265VideoLayer. 5030func (hvl H265VideoLayer) AsVideoLayer() (*VideoLayer, bool) { 5031 return nil, false 5032} 5033 5034// AsBasicVideoLayer is the BasicLayer implementation for H265VideoLayer. 5035func (hvl H265VideoLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 5036 return nil, false 5037} 5038 5039// AsH264Layer is the BasicLayer implementation for H265VideoLayer. 5040func (hvl H265VideoLayer) AsH264Layer() (*H264Layer, bool) { 5041 return nil, false 5042} 5043 5044// AsJpgLayer is the BasicLayer implementation for H265VideoLayer. 5045func (hvl H265VideoLayer) AsJpgLayer() (*JpgLayer, bool) { 5046 return nil, false 5047} 5048 5049// AsPngLayer is the BasicLayer implementation for H265VideoLayer. 5050func (hvl H265VideoLayer) AsPngLayer() (*PngLayer, bool) { 5051 return nil, false 5052} 5053 5054// AsLayer is the BasicLayer implementation for H265VideoLayer. 5055func (hvl H265VideoLayer) AsLayer() (*Layer, bool) { 5056 return nil, false 5057} 5058 5059// AsBasicLayer is the BasicLayer implementation for H265VideoLayer. 5060func (hvl H265VideoLayer) AsBasicLayer() (BasicLayer, bool) { 5061 return &hvl, true 5062} 5063 5064// Hls HTTP Live Streaming (HLS) packing setting for the live output. 5065type Hls struct { 5066 // FragmentsPerTsSegment - The number of fragments in an HTTP Live Streaming (HLS) TS segment in the output of the live event. This value does not affect the packing ratio for HLS CMAF output. 5067 FragmentsPerTsSegment *int32 `json:"fragmentsPerTsSegment,omitempty"` 5068} 5069 5070// BasicImage describes the basic properties for generating thumbnails from the input video 5071type BasicImage interface { 5072 AsJpgImage() (*JpgImage, bool) 5073 AsPngImage() (*PngImage, bool) 5074 AsImage() (*Image, bool) 5075} 5076 5077// Image describes the basic properties for generating thumbnails from the input video 5078type Image struct { 5079 // Start - The position in the input video from where to start generating thumbnails. The value can be in ISO 8601 format (For example, PT05S to start at 5 seconds), or a frame count (For example, 10 to start at the 10th frame), or a relative value to stream duration (For example, 10% to start at 10% of stream duration). Also supports a macro {Best}, which tells the encoder to select the best thumbnail from the first few seconds of the video and will only produce one thumbnail, no matter what other settings are for Step and Range. The default value is macro {Best}. 5080 Start *string `json:"start,omitempty"` 5081 // Step - The intervals at which thumbnails are generated. The value can be in ISO 8601 format (For example, PT05S for one image every 5 seconds), or a frame count (For example, 30 for one image every 30 frames), or a relative value to stream duration (For example, 10% for one image every 10% of stream duration). Note: Step value will affect the first generated thumbnail, which may not be exactly the one specified at transform preset start time. This is due to the encoder, which tries to select the best thumbnail between start time and Step position from start time as the first output. As the default value is 10%, it means if stream has long duration, the first generated thumbnail might be far away from the one specified at start time. Try to select reasonable value for Step if the first thumbnail is expected close to start time, or set Range value at 1 if only one thumbnail is needed at start time. 5082 Step *string `json:"step,omitempty"` 5083 // Range - The position relative to transform preset start time in the input video at which to stop generating thumbnails. The value can be in ISO 8601 format (For example, PT5M30S to stop at 5 minutes and 30 seconds from start time), or a frame count (For example, 300 to stop at the 300th frame from the frame at start time. If this value is 1, it means only producing one thumbnail at start time), or a relative value to the stream duration (For example, 50% to stop at half of stream duration from start time). The default value is 100%, which means to stop at the end of the stream. 5084 Range *string `json:"range,omitempty"` 5085 // KeyFrameInterval - The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting. 5086 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 5087 // StretchMode - The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 5088 StretchMode StretchMode `json:"stretchMode,omitempty"` 5089 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 5090 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 5091 // Label - An optional label for the codec. The label can be used to control muxing behavior. 5092 Label *string `json:"label,omitempty"` 5093 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 5094 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 5095} 5096 5097func unmarshalBasicImage(body []byte) (BasicImage, error) { 5098 var m map[string]interface{} 5099 err := json.Unmarshal(body, &m) 5100 if err != nil { 5101 return nil, err 5102 } 5103 5104 switch m["@odata.type"] { 5105 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage): 5106 var ji JpgImage 5107 err := json.Unmarshal(body, &ji) 5108 return ji, err 5109 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage): 5110 var pi PngImage 5111 err := json.Unmarshal(body, &pi) 5112 return pi, err 5113 default: 5114 var i Image 5115 err := json.Unmarshal(body, &i) 5116 return i, err 5117 } 5118} 5119func unmarshalBasicImageArray(body []byte) ([]BasicImage, error) { 5120 var rawMessages []*json.RawMessage 5121 err := json.Unmarshal(body, &rawMessages) 5122 if err != nil { 5123 return nil, err 5124 } 5125 5126 iArray := make([]BasicImage, len(rawMessages)) 5127 5128 for index, rawMessage := range rawMessages { 5129 i, err := unmarshalBasicImage(*rawMessage) 5130 if err != nil { 5131 return nil, err 5132 } 5133 iArray[index] = i 5134 } 5135 return iArray, nil 5136} 5137 5138// MarshalJSON is the custom marshaler for Image. 5139func (i Image) MarshalJSON() ([]byte, error) { 5140 i.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaImage 5141 objectMap := make(map[string]interface{}) 5142 if i.Start != nil { 5143 objectMap["start"] = i.Start 5144 } 5145 if i.Step != nil { 5146 objectMap["step"] = i.Step 5147 } 5148 if i.Range != nil { 5149 objectMap["range"] = i.Range 5150 } 5151 if i.KeyFrameInterval != nil { 5152 objectMap["keyFrameInterval"] = i.KeyFrameInterval 5153 } 5154 if i.StretchMode != "" { 5155 objectMap["stretchMode"] = i.StretchMode 5156 } 5157 if i.SyncMode != "" { 5158 objectMap["syncMode"] = i.SyncMode 5159 } 5160 if i.Label != nil { 5161 objectMap["label"] = i.Label 5162 } 5163 if i.OdataType != "" { 5164 objectMap["@odata.type"] = i.OdataType 5165 } 5166 return json.Marshal(objectMap) 5167} 5168 5169// AsAudio is the BasicCodec implementation for Image. 5170func (i Image) AsAudio() (*Audio, bool) { 5171 return nil, false 5172} 5173 5174// AsBasicAudio is the BasicCodec implementation for Image. 5175func (i Image) AsBasicAudio() (BasicAudio, bool) { 5176 return nil, false 5177} 5178 5179// AsAacAudio is the BasicCodec implementation for Image. 5180func (i Image) AsAacAudio() (*AacAudio, bool) { 5181 return nil, false 5182} 5183 5184// AsVideo is the BasicCodec implementation for Image. 5185func (i Image) AsVideo() (*Video, bool) { 5186 return nil, false 5187} 5188 5189// AsBasicVideo is the BasicCodec implementation for Image. 5190func (i Image) AsBasicVideo() (BasicVideo, bool) { 5191 return &i, true 5192} 5193 5194// AsH265Video is the BasicCodec implementation for Image. 5195func (i Image) AsH265Video() (*H265Video, bool) { 5196 return nil, false 5197} 5198 5199// AsCopyVideo is the BasicCodec implementation for Image. 5200func (i Image) AsCopyVideo() (*CopyVideo, bool) { 5201 return nil, false 5202} 5203 5204// AsImage is the BasicCodec implementation for Image. 5205func (i Image) AsImage() (*Image, bool) { 5206 return &i, true 5207} 5208 5209// AsBasicImage is the BasicCodec implementation for Image. 5210func (i Image) AsBasicImage() (BasicImage, bool) { 5211 return &i, true 5212} 5213 5214// AsCopyAudio is the BasicCodec implementation for Image. 5215func (i Image) AsCopyAudio() (*CopyAudio, bool) { 5216 return nil, false 5217} 5218 5219// AsH264Video is the BasicCodec implementation for Image. 5220func (i Image) AsH264Video() (*H264Video, bool) { 5221 return nil, false 5222} 5223 5224// AsJpgImage is the BasicCodec implementation for Image. 5225func (i Image) AsJpgImage() (*JpgImage, bool) { 5226 return nil, false 5227} 5228 5229// AsPngImage is the BasicCodec implementation for Image. 5230func (i Image) AsPngImage() (*PngImage, bool) { 5231 return nil, false 5232} 5233 5234// AsCodec is the BasicCodec implementation for Image. 5235func (i Image) AsCodec() (*Codec, bool) { 5236 return nil, false 5237} 5238 5239// AsBasicCodec is the BasicCodec implementation for Image. 5240func (i Image) AsBasicCodec() (BasicCodec, bool) { 5241 return &i, true 5242} 5243 5244// BasicImageFormat describes the properties for an output image file. 5245type BasicImageFormat interface { 5246 AsJpgFormat() (*JpgFormat, bool) 5247 AsPngFormat() (*PngFormat, bool) 5248 AsImageFormat() (*ImageFormat, bool) 5249} 5250 5251// ImageFormat describes the properties for an output image file. 5252type ImageFormat struct { 5253 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 5254 FilenamePattern *string `json:"filenamePattern,omitempty"` 5255 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 5256 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 5257} 5258 5259func unmarshalBasicImageFormat(body []byte) (BasicImageFormat, error) { 5260 var m map[string]interface{} 5261 err := json.Unmarshal(body, &m) 5262 if err != nil { 5263 return nil, err 5264 } 5265 5266 switch m["@odata.type"] { 5267 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat): 5268 var jf JpgFormat 5269 err := json.Unmarshal(body, &jf) 5270 return jf, err 5271 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat): 5272 var pf PngFormat 5273 err := json.Unmarshal(body, &pf) 5274 return pf, err 5275 default: 5276 var ifVar ImageFormat 5277 err := json.Unmarshal(body, &ifVar) 5278 return ifVar, err 5279 } 5280} 5281func unmarshalBasicImageFormatArray(body []byte) ([]BasicImageFormat, error) { 5282 var rawMessages []*json.RawMessage 5283 err := json.Unmarshal(body, &rawMessages) 5284 if err != nil { 5285 return nil, err 5286 } 5287 5288 ifVarArray := make([]BasicImageFormat, len(rawMessages)) 5289 5290 for index, rawMessage := range rawMessages { 5291 ifVar, err := unmarshalBasicImageFormat(*rawMessage) 5292 if err != nil { 5293 return nil, err 5294 } 5295 ifVarArray[index] = ifVar 5296 } 5297 return ifVarArray, nil 5298} 5299 5300// MarshalJSON is the custom marshaler for ImageFormat. 5301func (ifVar ImageFormat) MarshalJSON() ([]byte, error) { 5302 ifVar.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat 5303 objectMap := make(map[string]interface{}) 5304 if ifVar.FilenamePattern != nil { 5305 objectMap["filenamePattern"] = ifVar.FilenamePattern 5306 } 5307 if ifVar.OdataType != "" { 5308 objectMap["@odata.type"] = ifVar.OdataType 5309 } 5310 return json.Marshal(objectMap) 5311} 5312 5313// AsImageFormat is the BasicFormat implementation for ImageFormat. 5314func (ifVar ImageFormat) AsImageFormat() (*ImageFormat, bool) { 5315 return &ifVar, true 5316} 5317 5318// AsBasicImageFormat is the BasicFormat implementation for ImageFormat. 5319func (ifVar ImageFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 5320 return &ifVar, true 5321} 5322 5323// AsJpgFormat is the BasicFormat implementation for ImageFormat. 5324func (ifVar ImageFormat) AsJpgFormat() (*JpgFormat, bool) { 5325 return nil, false 5326} 5327 5328// AsPngFormat is the BasicFormat implementation for ImageFormat. 5329func (ifVar ImageFormat) AsPngFormat() (*PngFormat, bool) { 5330 return nil, false 5331} 5332 5333// AsMultiBitrateFormat is the BasicFormat implementation for ImageFormat. 5334func (ifVar ImageFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 5335 return nil, false 5336} 5337 5338// AsBasicMultiBitrateFormat is the BasicFormat implementation for ImageFormat. 5339func (ifVar ImageFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 5340 return nil, false 5341} 5342 5343// AsMp4Format is the BasicFormat implementation for ImageFormat. 5344func (ifVar ImageFormat) AsMp4Format() (*Mp4Format, bool) { 5345 return nil, false 5346} 5347 5348// AsTransportStreamFormat is the BasicFormat implementation for ImageFormat. 5349func (ifVar ImageFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 5350 return nil, false 5351} 5352 5353// AsFormat is the BasicFormat implementation for ImageFormat. 5354func (ifVar ImageFormat) AsFormat() (*Format, bool) { 5355 return nil, false 5356} 5357 5358// AsBasicFormat is the BasicFormat implementation for ImageFormat. 5359func (ifVar ImageFormat) AsBasicFormat() (BasicFormat, bool) { 5360 return &ifVar, true 5361} 5362 5363// BasicInputDefinition base class for defining an input. Use sub classes of this class to specify tracks selections 5364// and related metadata. 5365type BasicInputDefinition interface { 5366 AsFromAllInputFile() (*FromAllInputFile, bool) 5367 AsFromEachInputFile() (*FromEachInputFile, bool) 5368 AsInputFile() (*InputFile, bool) 5369 AsInputDefinition() (*InputDefinition, bool) 5370} 5371 5372// InputDefinition base class for defining an input. Use sub classes of this class to specify tracks selections 5373// and related metadata. 5374type InputDefinition struct { 5375 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 5376 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 5377 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 5378 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 5379} 5380 5381func unmarshalBasicInputDefinition(body []byte) (BasicInputDefinition, error) { 5382 var m map[string]interface{} 5383 err := json.Unmarshal(body, &m) 5384 if err != nil { 5385 return nil, err 5386 } 5387 5388 switch m["@odata.type"] { 5389 case string(OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile): 5390 var faif FromAllInputFile 5391 err := json.Unmarshal(body, &faif) 5392 return faif, err 5393 case string(OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile): 5394 var feif FromEachInputFile 5395 err := json.Unmarshal(body, &feif) 5396 return feif, err 5397 case string(OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile): 5398 var ifVar InputFile 5399 err := json.Unmarshal(body, &ifVar) 5400 return ifVar, err 5401 default: 5402 var ID InputDefinition 5403 err := json.Unmarshal(body, &ID) 5404 return ID, err 5405 } 5406} 5407func unmarshalBasicInputDefinitionArray(body []byte) ([]BasicInputDefinition, error) { 5408 var rawMessages []*json.RawMessage 5409 err := json.Unmarshal(body, &rawMessages) 5410 if err != nil { 5411 return nil, err 5412 } 5413 5414 IDArray := make([]BasicInputDefinition, len(rawMessages)) 5415 5416 for index, rawMessage := range rawMessages { 5417 ID, err := unmarshalBasicInputDefinition(*rawMessage) 5418 if err != nil { 5419 return nil, err 5420 } 5421 IDArray[index] = ID 5422 } 5423 return IDArray, nil 5424} 5425 5426// MarshalJSON is the custom marshaler for InputDefinition. 5427func (ID InputDefinition) MarshalJSON() ([]byte, error) { 5428 ID.OdataType = OdataTypeBasicInputDefinitionOdataTypeInputDefinition 5429 objectMap := make(map[string]interface{}) 5430 if ID.IncludedTracks != nil { 5431 objectMap["includedTracks"] = ID.IncludedTracks 5432 } 5433 if ID.OdataType != "" { 5434 objectMap["@odata.type"] = ID.OdataType 5435 } 5436 return json.Marshal(objectMap) 5437} 5438 5439// AsFromAllInputFile is the BasicInputDefinition implementation for InputDefinition. 5440func (ID InputDefinition) AsFromAllInputFile() (*FromAllInputFile, bool) { 5441 return nil, false 5442} 5443 5444// AsFromEachInputFile is the BasicInputDefinition implementation for InputDefinition. 5445func (ID InputDefinition) AsFromEachInputFile() (*FromEachInputFile, bool) { 5446 return nil, false 5447} 5448 5449// AsInputFile is the BasicInputDefinition implementation for InputDefinition. 5450func (ID InputDefinition) AsInputFile() (*InputFile, bool) { 5451 return nil, false 5452} 5453 5454// AsInputDefinition is the BasicInputDefinition implementation for InputDefinition. 5455func (ID InputDefinition) AsInputDefinition() (*InputDefinition, bool) { 5456 return &ID, true 5457} 5458 5459// AsBasicInputDefinition is the BasicInputDefinition implementation for InputDefinition. 5460func (ID InputDefinition) AsBasicInputDefinition() (BasicInputDefinition, bool) { 5461 return &ID, true 5462} 5463 5464// UnmarshalJSON is the custom unmarshaler for InputDefinition struct. 5465func (ID *InputDefinition) UnmarshalJSON(body []byte) error { 5466 var m map[string]*json.RawMessage 5467 err := json.Unmarshal(body, &m) 5468 if err != nil { 5469 return err 5470 } 5471 for k, v := range m { 5472 switch k { 5473 case "includedTracks": 5474 if v != nil { 5475 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 5476 if err != nil { 5477 return err 5478 } 5479 ID.IncludedTracks = &includedTracks 5480 } 5481 case "@odata.type": 5482 if v != nil { 5483 var odataType OdataTypeBasicInputDefinition 5484 err = json.Unmarshal(*v, &odataType) 5485 if err != nil { 5486 return err 5487 } 5488 ID.OdataType = odataType 5489 } 5490 } 5491 } 5492 5493 return nil 5494} 5495 5496// InputFile an InputDefinition for a single file. TrackSelections are scoped to the file specified. 5497type InputFile struct { 5498 // Filename - Name of the file that this input definition applies to. 5499 Filename *string `json:"filename,omitempty"` 5500 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 5501 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 5502 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 5503 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 5504} 5505 5506// MarshalJSON is the custom marshaler for InputFile. 5507func (ifVar InputFile) MarshalJSON() ([]byte, error) { 5508 ifVar.OdataType = OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile 5509 objectMap := make(map[string]interface{}) 5510 if ifVar.Filename != nil { 5511 objectMap["filename"] = ifVar.Filename 5512 } 5513 if ifVar.IncludedTracks != nil { 5514 objectMap["includedTracks"] = ifVar.IncludedTracks 5515 } 5516 if ifVar.OdataType != "" { 5517 objectMap["@odata.type"] = ifVar.OdataType 5518 } 5519 return json.Marshal(objectMap) 5520} 5521 5522// AsFromAllInputFile is the BasicInputDefinition implementation for InputFile. 5523func (ifVar InputFile) AsFromAllInputFile() (*FromAllInputFile, bool) { 5524 return nil, false 5525} 5526 5527// AsFromEachInputFile is the BasicInputDefinition implementation for InputFile. 5528func (ifVar InputFile) AsFromEachInputFile() (*FromEachInputFile, bool) { 5529 return nil, false 5530} 5531 5532// AsInputFile is the BasicInputDefinition implementation for InputFile. 5533func (ifVar InputFile) AsInputFile() (*InputFile, bool) { 5534 return &ifVar, true 5535} 5536 5537// AsInputDefinition is the BasicInputDefinition implementation for InputFile. 5538func (ifVar InputFile) AsInputDefinition() (*InputDefinition, bool) { 5539 return nil, false 5540} 5541 5542// AsBasicInputDefinition is the BasicInputDefinition implementation for InputFile. 5543func (ifVar InputFile) AsBasicInputDefinition() (BasicInputDefinition, bool) { 5544 return &ifVar, true 5545} 5546 5547// UnmarshalJSON is the custom unmarshaler for InputFile struct. 5548func (ifVar *InputFile) UnmarshalJSON(body []byte) error { 5549 var m map[string]*json.RawMessage 5550 err := json.Unmarshal(body, &m) 5551 if err != nil { 5552 return err 5553 } 5554 for k, v := range m { 5555 switch k { 5556 case "filename": 5557 if v != nil { 5558 var filename string 5559 err = json.Unmarshal(*v, &filename) 5560 if err != nil { 5561 return err 5562 } 5563 ifVar.Filename = &filename 5564 } 5565 case "includedTracks": 5566 if v != nil { 5567 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 5568 if err != nil { 5569 return err 5570 } 5571 ifVar.IncludedTracks = &includedTracks 5572 } 5573 case "@odata.type": 5574 if v != nil { 5575 var odataType OdataTypeBasicInputDefinition 5576 err = json.Unmarshal(*v, &odataType) 5577 if err != nil { 5578 return err 5579 } 5580 ifVar.OdataType = odataType 5581 } 5582 } 5583 } 5584 5585 return nil 5586} 5587 5588// IPAccessControl the IP access control. 5589type IPAccessControl struct { 5590 // Allow - The IP allow list. 5591 Allow *[]IPRange `json:"allow,omitempty"` 5592} 5593 5594// IPRange the IP address range in the CIDR scheme. 5595type IPRange struct { 5596 // Name - The friendly name for the IP address range. 5597 Name *string `json:"name,omitempty"` 5598 // Address - The IP address. 5599 Address *string `json:"address,omitempty"` 5600 // SubnetPrefixLength - The subnet mask prefix length (see CIDR notation). 5601 SubnetPrefixLength *int32 `json:"subnetPrefixLength,omitempty"` 5602} 5603 5604// Job a Job resource type. The progress and state can be obtained by polling a Job or subscribing to 5605// events using EventGrid. 5606type Job struct { 5607 autorest.Response `json:"-"` 5608 // JobProperties - The resource properties. 5609 *JobProperties `json:"properties,omitempty"` 5610 // SystemData - READ-ONLY; The system metadata relating to this resource. 5611 SystemData *SystemData `json:"systemData,omitempty"` 5612 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 5613 ID *string `json:"id,omitempty"` 5614 // Name - READ-ONLY; The name of the resource 5615 Name *string `json:"name,omitempty"` 5616 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 5617 Type *string `json:"type,omitempty"` 5618} 5619 5620// MarshalJSON is the custom marshaler for Job. 5621func (j Job) MarshalJSON() ([]byte, error) { 5622 objectMap := make(map[string]interface{}) 5623 if j.JobProperties != nil { 5624 objectMap["properties"] = j.JobProperties 5625 } 5626 return json.Marshal(objectMap) 5627} 5628 5629// UnmarshalJSON is the custom unmarshaler for Job struct. 5630func (j *Job) UnmarshalJSON(body []byte) error { 5631 var m map[string]*json.RawMessage 5632 err := json.Unmarshal(body, &m) 5633 if err != nil { 5634 return err 5635 } 5636 for k, v := range m { 5637 switch k { 5638 case "properties": 5639 if v != nil { 5640 var jobProperties JobProperties 5641 err = json.Unmarshal(*v, &jobProperties) 5642 if err != nil { 5643 return err 5644 } 5645 j.JobProperties = &jobProperties 5646 } 5647 case "systemData": 5648 if v != nil { 5649 var systemData SystemData 5650 err = json.Unmarshal(*v, &systemData) 5651 if err != nil { 5652 return err 5653 } 5654 j.SystemData = &systemData 5655 } 5656 case "id": 5657 if v != nil { 5658 var ID string 5659 err = json.Unmarshal(*v, &ID) 5660 if err != nil { 5661 return err 5662 } 5663 j.ID = &ID 5664 } 5665 case "name": 5666 if v != nil { 5667 var name string 5668 err = json.Unmarshal(*v, &name) 5669 if err != nil { 5670 return err 5671 } 5672 j.Name = &name 5673 } 5674 case "type": 5675 if v != nil { 5676 var typeVar string 5677 err = json.Unmarshal(*v, &typeVar) 5678 if err != nil { 5679 return err 5680 } 5681 j.Type = &typeVar 5682 } 5683 } 5684 } 5685 5686 return nil 5687} 5688 5689// JobCollection a collection of Job items. 5690type JobCollection struct { 5691 autorest.Response `json:"-"` 5692 // Value - A collection of Job items. 5693 Value *[]Job `json:"value,omitempty"` 5694 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 5695 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 5696} 5697 5698// JobCollectionIterator provides access to a complete listing of Job values. 5699type JobCollectionIterator struct { 5700 i int 5701 page JobCollectionPage 5702} 5703 5704// NextWithContext advances to the next value. If there was an error making 5705// the request the iterator does not advance and the error is returned. 5706func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) { 5707 if tracing.IsEnabled() { 5708 ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext") 5709 defer func() { 5710 sc := -1 5711 if iter.Response().Response.Response != nil { 5712 sc = iter.Response().Response.Response.StatusCode 5713 } 5714 tracing.EndSpan(ctx, sc, err) 5715 }() 5716 } 5717 iter.i++ 5718 if iter.i < len(iter.page.Values()) { 5719 return nil 5720 } 5721 err = iter.page.NextWithContext(ctx) 5722 if err != nil { 5723 iter.i-- 5724 return err 5725 } 5726 iter.i = 0 5727 return nil 5728} 5729 5730// Next advances to the next value. If there was an error making 5731// the request the iterator does not advance and the error is returned. 5732// Deprecated: Use NextWithContext() instead. 5733func (iter *JobCollectionIterator) Next() error { 5734 return iter.NextWithContext(context.Background()) 5735} 5736 5737// NotDone returns true if the enumeration should be started or is not yet complete. 5738func (iter JobCollectionIterator) NotDone() bool { 5739 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 5740} 5741 5742// Response returns the raw server response from the last page request. 5743func (iter JobCollectionIterator) Response() JobCollection { 5744 return iter.page.Response() 5745} 5746 5747// Value returns the current value or a zero-initialized value if the 5748// iterator has advanced beyond the end of the collection. 5749func (iter JobCollectionIterator) Value() Job { 5750 if !iter.page.NotDone() { 5751 return Job{} 5752 } 5753 return iter.page.Values()[iter.i] 5754} 5755 5756// Creates a new instance of the JobCollectionIterator type. 5757func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator { 5758 return JobCollectionIterator{page: page} 5759} 5760 5761// IsEmpty returns true if the ListResult contains no values. 5762func (jc JobCollection) IsEmpty() bool { 5763 return jc.Value == nil || len(*jc.Value) == 0 5764} 5765 5766// hasNextLink returns true if the NextLink is not empty. 5767func (jc JobCollection) hasNextLink() bool { 5768 return jc.OdataNextLink != nil && len(*jc.OdataNextLink) != 0 5769} 5770 5771// jobCollectionPreparer prepares a request to retrieve the next set of results. 5772// It returns nil if no more results exist. 5773func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) { 5774 if !jc.hasNextLink() { 5775 return nil, nil 5776 } 5777 return autorest.Prepare((&http.Request{}).WithContext(ctx), 5778 autorest.AsJSON(), 5779 autorest.AsGet(), 5780 autorest.WithBaseURL(to.String(jc.OdataNextLink))) 5781} 5782 5783// JobCollectionPage contains a page of Job values. 5784type JobCollectionPage struct { 5785 fn func(context.Context, JobCollection) (JobCollection, error) 5786 jc JobCollection 5787} 5788 5789// NextWithContext advances to the next page of values. If there was an error making 5790// the request the page does not advance and the error is returned. 5791func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) { 5792 if tracing.IsEnabled() { 5793 ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext") 5794 defer func() { 5795 sc := -1 5796 if page.Response().Response.Response != nil { 5797 sc = page.Response().Response.Response.StatusCode 5798 } 5799 tracing.EndSpan(ctx, sc, err) 5800 }() 5801 } 5802 for { 5803 next, err := page.fn(ctx, page.jc) 5804 if err != nil { 5805 return err 5806 } 5807 page.jc = next 5808 if !next.hasNextLink() || !next.IsEmpty() { 5809 break 5810 } 5811 } 5812 return nil 5813} 5814 5815// Next advances to the next page of values. If there was an error making 5816// the request the page does not advance and the error is returned. 5817// Deprecated: Use NextWithContext() instead. 5818func (page *JobCollectionPage) Next() error { 5819 return page.NextWithContext(context.Background()) 5820} 5821 5822// NotDone returns true if the page enumeration should be started or is not yet complete. 5823func (page JobCollectionPage) NotDone() bool { 5824 return !page.jc.IsEmpty() 5825} 5826 5827// Response returns the raw server response from the last page request. 5828func (page JobCollectionPage) Response() JobCollection { 5829 return page.jc 5830} 5831 5832// Values returns the slice of values for the current page or nil if there are no values. 5833func (page JobCollectionPage) Values() []Job { 5834 if page.jc.IsEmpty() { 5835 return nil 5836 } 5837 return *page.jc.Value 5838} 5839 5840// Creates a new instance of the JobCollectionPage type. 5841func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage { 5842 return JobCollectionPage{ 5843 fn: getNextPage, 5844 jc: cur, 5845 } 5846} 5847 5848// JobError details of JobOutput errors. 5849type JobError struct { 5850 // Code - READ-ONLY; Error code describing the error. Possible values include: 'JobErrorCodeServiceError', 'JobErrorCodeServiceTransientError', 'JobErrorCodeDownloadNotAccessible', 'JobErrorCodeDownloadTransientError', 'JobErrorCodeUploadNotAccessible', 'JobErrorCodeUploadTransientError', 'JobErrorCodeConfigurationUnsupported', 'JobErrorCodeContentMalformed', 'JobErrorCodeContentUnsupported' 5851 Code JobErrorCode `json:"code,omitempty"` 5852 // Message - READ-ONLY; A human-readable language-dependent representation of the error. 5853 Message *string `json:"message,omitempty"` 5854 // Category - READ-ONLY; Helps with categorization of errors. Possible values include: 'JobErrorCategoryService', 'JobErrorCategoryDownload', 'JobErrorCategoryUpload', 'JobErrorCategoryConfiguration', 'JobErrorCategoryContent' 5855 Category JobErrorCategory `json:"category,omitempty"` 5856 // Retry - READ-ONLY; Indicates that it may be possible to retry the Job. If retry is unsuccessful, please contact Azure support via Azure Portal. Possible values include: 'JobRetryDoNotRetry', 'JobRetryMayRetry' 5857 Retry JobRetry `json:"retry,omitempty"` 5858 // Details - READ-ONLY; An array of details about specific errors that led to this reported error. 5859 Details *[]JobErrorDetail `json:"details,omitempty"` 5860} 5861 5862// MarshalJSON is the custom marshaler for JobError. 5863func (je JobError) MarshalJSON() ([]byte, error) { 5864 objectMap := make(map[string]interface{}) 5865 return json.Marshal(objectMap) 5866} 5867 5868// JobErrorDetail details of JobOutput errors. 5869type JobErrorDetail struct { 5870 // Code - READ-ONLY; Code describing the error detail. 5871 Code *string `json:"code,omitempty"` 5872 // Message - READ-ONLY; A human-readable representation of the error. 5873 Message *string `json:"message,omitempty"` 5874} 5875 5876// MarshalJSON is the custom marshaler for JobErrorDetail. 5877func (jed JobErrorDetail) MarshalJSON() ([]byte, error) { 5878 objectMap := make(map[string]interface{}) 5879 return json.Marshal(objectMap) 5880} 5881 5882// BasicJobInput base class for inputs to a Job. 5883type BasicJobInput interface { 5884 AsJobInputClip() (*JobInputClip, bool) 5885 AsBasicJobInputClip() (BasicJobInputClip, bool) 5886 AsJobInputs() (*JobInputs, bool) 5887 AsJobInputAsset() (*JobInputAsset, bool) 5888 AsJobInputHTTP() (*JobInputHTTP, bool) 5889 AsJobInputSequence() (*JobInputSequence, bool) 5890 AsJobInput() (*JobInput, bool) 5891} 5892 5893// JobInput base class for inputs to a Job. 5894type JobInput struct { 5895 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 5896 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 5897} 5898 5899func unmarshalBasicJobInput(body []byte) (BasicJobInput, error) { 5900 var m map[string]interface{} 5901 err := json.Unmarshal(body, &m) 5902 if err != nil { 5903 return nil, err 5904 } 5905 5906 switch m["@odata.type"] { 5907 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip): 5908 var jic JobInputClip 5909 err := json.Unmarshal(body, &jic) 5910 return jic, err 5911 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs): 5912 var ji JobInputs 5913 err := json.Unmarshal(body, &ji) 5914 return ji, err 5915 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset): 5916 var jia JobInputAsset 5917 err := json.Unmarshal(body, &jia) 5918 return jia, err 5919 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP): 5920 var jih JobInputHTTP 5921 err := json.Unmarshal(body, &jih) 5922 return jih, err 5923 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence): 5924 var jis JobInputSequence 5925 err := json.Unmarshal(body, &jis) 5926 return jis, err 5927 default: 5928 var ji JobInput 5929 err := json.Unmarshal(body, &ji) 5930 return ji, err 5931 } 5932} 5933func unmarshalBasicJobInputArray(body []byte) ([]BasicJobInput, error) { 5934 var rawMessages []*json.RawMessage 5935 err := json.Unmarshal(body, &rawMessages) 5936 if err != nil { 5937 return nil, err 5938 } 5939 5940 jiArray := make([]BasicJobInput, len(rawMessages)) 5941 5942 for index, rawMessage := range rawMessages { 5943 ji, err := unmarshalBasicJobInput(*rawMessage) 5944 if err != nil { 5945 return nil, err 5946 } 5947 jiArray[index] = ji 5948 } 5949 return jiArray, nil 5950} 5951 5952// MarshalJSON is the custom marshaler for JobInput. 5953func (ji JobInput) MarshalJSON() ([]byte, error) { 5954 ji.OdataType = OdataTypeBasicJobInputOdataTypeJobInput 5955 objectMap := make(map[string]interface{}) 5956 if ji.OdataType != "" { 5957 objectMap["@odata.type"] = ji.OdataType 5958 } 5959 return json.Marshal(objectMap) 5960} 5961 5962// AsJobInputClip is the BasicJobInput implementation for JobInput. 5963func (ji JobInput) AsJobInputClip() (*JobInputClip, bool) { 5964 return nil, false 5965} 5966 5967// AsBasicJobInputClip is the BasicJobInput implementation for JobInput. 5968func (ji JobInput) AsBasicJobInputClip() (BasicJobInputClip, bool) { 5969 return nil, false 5970} 5971 5972// AsJobInputs is the BasicJobInput implementation for JobInput. 5973func (ji JobInput) AsJobInputs() (*JobInputs, bool) { 5974 return nil, false 5975} 5976 5977// AsJobInputAsset is the BasicJobInput implementation for JobInput. 5978func (ji JobInput) AsJobInputAsset() (*JobInputAsset, bool) { 5979 return nil, false 5980} 5981 5982// AsJobInputHTTP is the BasicJobInput implementation for JobInput. 5983func (ji JobInput) AsJobInputHTTP() (*JobInputHTTP, bool) { 5984 return nil, false 5985} 5986 5987// AsJobInputSequence is the BasicJobInput implementation for JobInput. 5988func (ji JobInput) AsJobInputSequence() (*JobInputSequence, bool) { 5989 return nil, false 5990} 5991 5992// AsJobInput is the BasicJobInput implementation for JobInput. 5993func (ji JobInput) AsJobInput() (*JobInput, bool) { 5994 return &ji, true 5995} 5996 5997// AsBasicJobInput is the BasicJobInput implementation for JobInput. 5998func (ji JobInput) AsBasicJobInput() (BasicJobInput, bool) { 5999 return &ji, true 6000} 6001 6002// JobInputAsset represents an Asset for input into a Job. 6003type JobInputAsset struct { 6004 // AssetName - The name of the input Asset. 6005 AssetName *string `json:"assetName,omitempty"` 6006 // Files - List of files. Required for JobInputHttp. Maximum of 4000 characters each. Query strings will not be returned in service responses to prevent sensitive data exposure. 6007 Files *[]string `json:"files,omitempty"` 6008 // Start - Defines a point on the timeline of the input media at which processing will start. Defaults to the beginning of the input media. 6009 Start BasicClipTime `json:"start,omitempty"` 6010 // End - Defines a point on the timeline of the input media at which processing will end. Defaults to the end of the input media. 6011 End BasicClipTime `json:"end,omitempty"` 6012 // Label - A label that is assigned to a JobInputClip, that is used to satisfy a reference used in the Transform. For example, a Transform can be authored so as to take an image file with the label 'xyz' and apply it as an overlay onto the input video before it is encoded. When submitting a Job, exactly one of the JobInputs should be the image file, and it should have the label 'xyz'. 6013 Label *string `json:"label,omitempty"` 6014 // InputDefinitions - Defines a list of InputDefinitions. For each InputDefinition, it defines a list of track selections and related metadata. 6015 InputDefinitions *[]BasicInputDefinition `json:"inputDefinitions,omitempty"` 6016 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6017 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6018} 6019 6020// MarshalJSON is the custom marshaler for JobInputAsset. 6021func (jia JobInputAsset) MarshalJSON() ([]byte, error) { 6022 jia.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset 6023 objectMap := make(map[string]interface{}) 6024 if jia.AssetName != nil { 6025 objectMap["assetName"] = jia.AssetName 6026 } 6027 if jia.Files != nil { 6028 objectMap["files"] = jia.Files 6029 } 6030 objectMap["start"] = jia.Start 6031 objectMap["end"] = jia.End 6032 if jia.Label != nil { 6033 objectMap["label"] = jia.Label 6034 } 6035 if jia.InputDefinitions != nil { 6036 objectMap["inputDefinitions"] = jia.InputDefinitions 6037 } 6038 if jia.OdataType != "" { 6039 objectMap["@odata.type"] = jia.OdataType 6040 } 6041 return json.Marshal(objectMap) 6042} 6043 6044// AsJobInputClip is the BasicJobInput implementation for JobInputAsset. 6045func (jia JobInputAsset) AsJobInputClip() (*JobInputClip, bool) { 6046 return nil, false 6047} 6048 6049// AsBasicJobInputClip is the BasicJobInput implementation for JobInputAsset. 6050func (jia JobInputAsset) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6051 return &jia, true 6052} 6053 6054// AsJobInputs is the BasicJobInput implementation for JobInputAsset. 6055func (jia JobInputAsset) AsJobInputs() (*JobInputs, bool) { 6056 return nil, false 6057} 6058 6059// AsJobInputAsset is the BasicJobInput implementation for JobInputAsset. 6060func (jia JobInputAsset) AsJobInputAsset() (*JobInputAsset, bool) { 6061 return &jia, true 6062} 6063 6064// AsJobInputHTTP is the BasicJobInput implementation for JobInputAsset. 6065func (jia JobInputAsset) AsJobInputHTTP() (*JobInputHTTP, bool) { 6066 return nil, false 6067} 6068 6069// AsJobInputSequence is the BasicJobInput implementation for JobInputAsset. 6070func (jia JobInputAsset) AsJobInputSequence() (*JobInputSequence, bool) { 6071 return nil, false 6072} 6073 6074// AsJobInput is the BasicJobInput implementation for JobInputAsset. 6075func (jia JobInputAsset) AsJobInput() (*JobInput, bool) { 6076 return nil, false 6077} 6078 6079// AsBasicJobInput is the BasicJobInput implementation for JobInputAsset. 6080func (jia JobInputAsset) AsBasicJobInput() (BasicJobInput, bool) { 6081 return &jia, true 6082} 6083 6084// UnmarshalJSON is the custom unmarshaler for JobInputAsset struct. 6085func (jia *JobInputAsset) UnmarshalJSON(body []byte) error { 6086 var m map[string]*json.RawMessage 6087 err := json.Unmarshal(body, &m) 6088 if err != nil { 6089 return err 6090 } 6091 for k, v := range m { 6092 switch k { 6093 case "assetName": 6094 if v != nil { 6095 var assetName string 6096 err = json.Unmarshal(*v, &assetName) 6097 if err != nil { 6098 return err 6099 } 6100 jia.AssetName = &assetName 6101 } 6102 case "files": 6103 if v != nil { 6104 var files []string 6105 err = json.Unmarshal(*v, &files) 6106 if err != nil { 6107 return err 6108 } 6109 jia.Files = &files 6110 } 6111 case "start": 6112 if v != nil { 6113 start, err := unmarshalBasicClipTime(*v) 6114 if err != nil { 6115 return err 6116 } 6117 jia.Start = start 6118 } 6119 case "end": 6120 if v != nil { 6121 end, err := unmarshalBasicClipTime(*v) 6122 if err != nil { 6123 return err 6124 } 6125 jia.End = end 6126 } 6127 case "label": 6128 if v != nil { 6129 var label string 6130 err = json.Unmarshal(*v, &label) 6131 if err != nil { 6132 return err 6133 } 6134 jia.Label = &label 6135 } 6136 case "inputDefinitions": 6137 if v != nil { 6138 inputDefinitions, err := unmarshalBasicInputDefinitionArray(*v) 6139 if err != nil { 6140 return err 6141 } 6142 jia.InputDefinitions = &inputDefinitions 6143 } 6144 case "@odata.type": 6145 if v != nil { 6146 var odataType OdataTypeBasicJobInput 6147 err = json.Unmarshal(*v, &odataType) 6148 if err != nil { 6149 return err 6150 } 6151 jia.OdataType = odataType 6152 } 6153 } 6154 } 6155 6156 return nil 6157} 6158 6159// BasicJobInputClip represents input files for a Job. 6160type BasicJobInputClip interface { 6161 AsJobInputAsset() (*JobInputAsset, bool) 6162 AsJobInputHTTP() (*JobInputHTTP, bool) 6163 AsJobInputClip() (*JobInputClip, bool) 6164} 6165 6166// JobInputClip represents input files for a Job. 6167type JobInputClip struct { 6168 // Files - List of files. Required for JobInputHttp. Maximum of 4000 characters each. Query strings will not be returned in service responses to prevent sensitive data exposure. 6169 Files *[]string `json:"files,omitempty"` 6170 // Start - Defines a point on the timeline of the input media at which processing will start. Defaults to the beginning of the input media. 6171 Start BasicClipTime `json:"start,omitempty"` 6172 // End - Defines a point on the timeline of the input media at which processing will end. Defaults to the end of the input media. 6173 End BasicClipTime `json:"end,omitempty"` 6174 // Label - A label that is assigned to a JobInputClip, that is used to satisfy a reference used in the Transform. For example, a Transform can be authored so as to take an image file with the label 'xyz' and apply it as an overlay onto the input video before it is encoded. When submitting a Job, exactly one of the JobInputs should be the image file, and it should have the label 'xyz'. 6175 Label *string `json:"label,omitempty"` 6176 // InputDefinitions - Defines a list of InputDefinitions. For each InputDefinition, it defines a list of track selections and related metadata. 6177 InputDefinitions *[]BasicInputDefinition `json:"inputDefinitions,omitempty"` 6178 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6179 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6180} 6181 6182func unmarshalBasicJobInputClip(body []byte) (BasicJobInputClip, error) { 6183 var m map[string]interface{} 6184 err := json.Unmarshal(body, &m) 6185 if err != nil { 6186 return nil, err 6187 } 6188 6189 switch m["@odata.type"] { 6190 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset): 6191 var jia JobInputAsset 6192 err := json.Unmarshal(body, &jia) 6193 return jia, err 6194 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP): 6195 var jih JobInputHTTP 6196 err := json.Unmarshal(body, &jih) 6197 return jih, err 6198 default: 6199 var jic JobInputClip 6200 err := json.Unmarshal(body, &jic) 6201 return jic, err 6202 } 6203} 6204func unmarshalBasicJobInputClipArray(body []byte) ([]BasicJobInputClip, error) { 6205 var rawMessages []*json.RawMessage 6206 err := json.Unmarshal(body, &rawMessages) 6207 if err != nil { 6208 return nil, err 6209 } 6210 6211 jicArray := make([]BasicJobInputClip, len(rawMessages)) 6212 6213 for index, rawMessage := range rawMessages { 6214 jic, err := unmarshalBasicJobInputClip(*rawMessage) 6215 if err != nil { 6216 return nil, err 6217 } 6218 jicArray[index] = jic 6219 } 6220 return jicArray, nil 6221} 6222 6223// MarshalJSON is the custom marshaler for JobInputClip. 6224func (jic JobInputClip) MarshalJSON() ([]byte, error) { 6225 jic.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip 6226 objectMap := make(map[string]interface{}) 6227 if jic.Files != nil { 6228 objectMap["files"] = jic.Files 6229 } 6230 objectMap["start"] = jic.Start 6231 objectMap["end"] = jic.End 6232 if jic.Label != nil { 6233 objectMap["label"] = jic.Label 6234 } 6235 if jic.InputDefinitions != nil { 6236 objectMap["inputDefinitions"] = jic.InputDefinitions 6237 } 6238 if jic.OdataType != "" { 6239 objectMap["@odata.type"] = jic.OdataType 6240 } 6241 return json.Marshal(objectMap) 6242} 6243 6244// AsJobInputClip is the BasicJobInput implementation for JobInputClip. 6245func (jic JobInputClip) AsJobInputClip() (*JobInputClip, bool) { 6246 return &jic, true 6247} 6248 6249// AsBasicJobInputClip is the BasicJobInput implementation for JobInputClip. 6250func (jic JobInputClip) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6251 return &jic, true 6252} 6253 6254// AsJobInputs is the BasicJobInput implementation for JobInputClip. 6255func (jic JobInputClip) AsJobInputs() (*JobInputs, bool) { 6256 return nil, false 6257} 6258 6259// AsJobInputAsset is the BasicJobInput implementation for JobInputClip. 6260func (jic JobInputClip) AsJobInputAsset() (*JobInputAsset, bool) { 6261 return nil, false 6262} 6263 6264// AsJobInputHTTP is the BasicJobInput implementation for JobInputClip. 6265func (jic JobInputClip) AsJobInputHTTP() (*JobInputHTTP, bool) { 6266 return nil, false 6267} 6268 6269// AsJobInputSequence is the BasicJobInput implementation for JobInputClip. 6270func (jic JobInputClip) AsJobInputSequence() (*JobInputSequence, bool) { 6271 return nil, false 6272} 6273 6274// AsJobInput is the BasicJobInput implementation for JobInputClip. 6275func (jic JobInputClip) AsJobInput() (*JobInput, bool) { 6276 return nil, false 6277} 6278 6279// AsBasicJobInput is the BasicJobInput implementation for JobInputClip. 6280func (jic JobInputClip) AsBasicJobInput() (BasicJobInput, bool) { 6281 return &jic, true 6282} 6283 6284// UnmarshalJSON is the custom unmarshaler for JobInputClip struct. 6285func (jic *JobInputClip) UnmarshalJSON(body []byte) error { 6286 var m map[string]*json.RawMessage 6287 err := json.Unmarshal(body, &m) 6288 if err != nil { 6289 return err 6290 } 6291 for k, v := range m { 6292 switch k { 6293 case "files": 6294 if v != nil { 6295 var files []string 6296 err = json.Unmarshal(*v, &files) 6297 if err != nil { 6298 return err 6299 } 6300 jic.Files = &files 6301 } 6302 case "start": 6303 if v != nil { 6304 start, err := unmarshalBasicClipTime(*v) 6305 if err != nil { 6306 return err 6307 } 6308 jic.Start = start 6309 } 6310 case "end": 6311 if v != nil { 6312 end, err := unmarshalBasicClipTime(*v) 6313 if err != nil { 6314 return err 6315 } 6316 jic.End = end 6317 } 6318 case "label": 6319 if v != nil { 6320 var label string 6321 err = json.Unmarshal(*v, &label) 6322 if err != nil { 6323 return err 6324 } 6325 jic.Label = &label 6326 } 6327 case "inputDefinitions": 6328 if v != nil { 6329 inputDefinitions, err := unmarshalBasicInputDefinitionArray(*v) 6330 if err != nil { 6331 return err 6332 } 6333 jic.InputDefinitions = &inputDefinitions 6334 } 6335 case "@odata.type": 6336 if v != nil { 6337 var odataType OdataTypeBasicJobInput 6338 err = json.Unmarshal(*v, &odataType) 6339 if err != nil { 6340 return err 6341 } 6342 jic.OdataType = odataType 6343 } 6344 } 6345 } 6346 6347 return nil 6348} 6349 6350// JobInputHTTP represents HTTPS job input. 6351type JobInputHTTP struct { 6352 // BaseURI - Base URI for HTTPS job input. It will be concatenated with provided file names. If no base uri is given, then the provided file list is assumed to be fully qualified uris. Maximum length of 4000 characters. The query strings will not be returned in service responses to prevent sensitive data exposure. 6353 BaseURI *string `json:"baseUri,omitempty"` 6354 // Files - List of files. Required for JobInputHttp. Maximum of 4000 characters each. Query strings will not be returned in service responses to prevent sensitive data exposure. 6355 Files *[]string `json:"files,omitempty"` 6356 // Start - Defines a point on the timeline of the input media at which processing will start. Defaults to the beginning of the input media. 6357 Start BasicClipTime `json:"start,omitempty"` 6358 // End - Defines a point on the timeline of the input media at which processing will end. Defaults to the end of the input media. 6359 End BasicClipTime `json:"end,omitempty"` 6360 // Label - A label that is assigned to a JobInputClip, that is used to satisfy a reference used in the Transform. For example, a Transform can be authored so as to take an image file with the label 'xyz' and apply it as an overlay onto the input video before it is encoded. When submitting a Job, exactly one of the JobInputs should be the image file, and it should have the label 'xyz'. 6361 Label *string `json:"label,omitempty"` 6362 // InputDefinitions - Defines a list of InputDefinitions. For each InputDefinition, it defines a list of track selections and related metadata. 6363 InputDefinitions *[]BasicInputDefinition `json:"inputDefinitions,omitempty"` 6364 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6365 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6366} 6367 6368// MarshalJSON is the custom marshaler for JobInputHTTP. 6369func (jih JobInputHTTP) MarshalJSON() ([]byte, error) { 6370 jih.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP 6371 objectMap := make(map[string]interface{}) 6372 if jih.BaseURI != nil { 6373 objectMap["baseUri"] = jih.BaseURI 6374 } 6375 if jih.Files != nil { 6376 objectMap["files"] = jih.Files 6377 } 6378 objectMap["start"] = jih.Start 6379 objectMap["end"] = jih.End 6380 if jih.Label != nil { 6381 objectMap["label"] = jih.Label 6382 } 6383 if jih.InputDefinitions != nil { 6384 objectMap["inputDefinitions"] = jih.InputDefinitions 6385 } 6386 if jih.OdataType != "" { 6387 objectMap["@odata.type"] = jih.OdataType 6388 } 6389 return json.Marshal(objectMap) 6390} 6391 6392// AsJobInputClip is the BasicJobInput implementation for JobInputHTTP. 6393func (jih JobInputHTTP) AsJobInputClip() (*JobInputClip, bool) { 6394 return nil, false 6395} 6396 6397// AsBasicJobInputClip is the BasicJobInput implementation for JobInputHTTP. 6398func (jih JobInputHTTP) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6399 return &jih, true 6400} 6401 6402// AsJobInputs is the BasicJobInput implementation for JobInputHTTP. 6403func (jih JobInputHTTP) AsJobInputs() (*JobInputs, bool) { 6404 return nil, false 6405} 6406 6407// AsJobInputAsset is the BasicJobInput implementation for JobInputHTTP. 6408func (jih JobInputHTTP) AsJobInputAsset() (*JobInputAsset, bool) { 6409 return nil, false 6410} 6411 6412// AsJobInputHTTP is the BasicJobInput implementation for JobInputHTTP. 6413func (jih JobInputHTTP) AsJobInputHTTP() (*JobInputHTTP, bool) { 6414 return &jih, true 6415} 6416 6417// AsJobInputSequence is the BasicJobInput implementation for JobInputHTTP. 6418func (jih JobInputHTTP) AsJobInputSequence() (*JobInputSequence, bool) { 6419 return nil, false 6420} 6421 6422// AsJobInput is the BasicJobInput implementation for JobInputHTTP. 6423func (jih JobInputHTTP) AsJobInput() (*JobInput, bool) { 6424 return nil, false 6425} 6426 6427// AsBasicJobInput is the BasicJobInput implementation for JobInputHTTP. 6428func (jih JobInputHTTP) AsBasicJobInput() (BasicJobInput, bool) { 6429 return &jih, true 6430} 6431 6432// UnmarshalJSON is the custom unmarshaler for JobInputHTTP struct. 6433func (jih *JobInputHTTP) UnmarshalJSON(body []byte) error { 6434 var m map[string]*json.RawMessage 6435 err := json.Unmarshal(body, &m) 6436 if err != nil { 6437 return err 6438 } 6439 for k, v := range m { 6440 switch k { 6441 case "baseUri": 6442 if v != nil { 6443 var baseURI string 6444 err = json.Unmarshal(*v, &baseURI) 6445 if err != nil { 6446 return err 6447 } 6448 jih.BaseURI = &baseURI 6449 } 6450 case "files": 6451 if v != nil { 6452 var files []string 6453 err = json.Unmarshal(*v, &files) 6454 if err != nil { 6455 return err 6456 } 6457 jih.Files = &files 6458 } 6459 case "start": 6460 if v != nil { 6461 start, err := unmarshalBasicClipTime(*v) 6462 if err != nil { 6463 return err 6464 } 6465 jih.Start = start 6466 } 6467 case "end": 6468 if v != nil { 6469 end, err := unmarshalBasicClipTime(*v) 6470 if err != nil { 6471 return err 6472 } 6473 jih.End = end 6474 } 6475 case "label": 6476 if v != nil { 6477 var label string 6478 err = json.Unmarshal(*v, &label) 6479 if err != nil { 6480 return err 6481 } 6482 jih.Label = &label 6483 } 6484 case "inputDefinitions": 6485 if v != nil { 6486 inputDefinitions, err := unmarshalBasicInputDefinitionArray(*v) 6487 if err != nil { 6488 return err 6489 } 6490 jih.InputDefinitions = &inputDefinitions 6491 } 6492 case "@odata.type": 6493 if v != nil { 6494 var odataType OdataTypeBasicJobInput 6495 err = json.Unmarshal(*v, &odataType) 6496 if err != nil { 6497 return err 6498 } 6499 jih.OdataType = odataType 6500 } 6501 } 6502 } 6503 6504 return nil 6505} 6506 6507// JobInputs describes a list of inputs to a Job. 6508type JobInputs struct { 6509 // Inputs - List of inputs to a Job. 6510 Inputs *[]BasicJobInput `json:"inputs,omitempty"` 6511 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6512 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6513} 6514 6515// MarshalJSON is the custom marshaler for JobInputs. 6516func (ji JobInputs) MarshalJSON() ([]byte, error) { 6517 ji.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs 6518 objectMap := make(map[string]interface{}) 6519 if ji.Inputs != nil { 6520 objectMap["inputs"] = ji.Inputs 6521 } 6522 if ji.OdataType != "" { 6523 objectMap["@odata.type"] = ji.OdataType 6524 } 6525 return json.Marshal(objectMap) 6526} 6527 6528// AsJobInputClip is the BasicJobInput implementation for JobInputs. 6529func (ji JobInputs) AsJobInputClip() (*JobInputClip, bool) { 6530 return nil, false 6531} 6532 6533// AsBasicJobInputClip is the BasicJobInput implementation for JobInputs. 6534func (ji JobInputs) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6535 return nil, false 6536} 6537 6538// AsJobInputs is the BasicJobInput implementation for JobInputs. 6539func (ji JobInputs) AsJobInputs() (*JobInputs, bool) { 6540 return &ji, true 6541} 6542 6543// AsJobInputAsset is the BasicJobInput implementation for JobInputs. 6544func (ji JobInputs) AsJobInputAsset() (*JobInputAsset, bool) { 6545 return nil, false 6546} 6547 6548// AsJobInputHTTP is the BasicJobInput implementation for JobInputs. 6549func (ji JobInputs) AsJobInputHTTP() (*JobInputHTTP, bool) { 6550 return nil, false 6551} 6552 6553// AsJobInputSequence is the BasicJobInput implementation for JobInputs. 6554func (ji JobInputs) AsJobInputSequence() (*JobInputSequence, bool) { 6555 return nil, false 6556} 6557 6558// AsJobInput is the BasicJobInput implementation for JobInputs. 6559func (ji JobInputs) AsJobInput() (*JobInput, bool) { 6560 return nil, false 6561} 6562 6563// AsBasicJobInput is the BasicJobInput implementation for JobInputs. 6564func (ji JobInputs) AsBasicJobInput() (BasicJobInput, bool) { 6565 return &ji, true 6566} 6567 6568// UnmarshalJSON is the custom unmarshaler for JobInputs struct. 6569func (ji *JobInputs) UnmarshalJSON(body []byte) error { 6570 var m map[string]*json.RawMessage 6571 err := json.Unmarshal(body, &m) 6572 if err != nil { 6573 return err 6574 } 6575 for k, v := range m { 6576 switch k { 6577 case "inputs": 6578 if v != nil { 6579 inputs, err := unmarshalBasicJobInputArray(*v) 6580 if err != nil { 6581 return err 6582 } 6583 ji.Inputs = &inputs 6584 } 6585 case "@odata.type": 6586 if v != nil { 6587 var odataType OdataTypeBasicJobInput 6588 err = json.Unmarshal(*v, &odataType) 6589 if err != nil { 6590 return err 6591 } 6592 ji.OdataType = odataType 6593 } 6594 } 6595 } 6596 6597 return nil 6598} 6599 6600// JobInputSequence a Sequence contains an ordered list of Clips where each clip is a JobInput. The 6601// Sequence will be treated as a single input. 6602type JobInputSequence struct { 6603 // Inputs - JobInputs that make up the timeline. 6604 Inputs *[]BasicJobInputClip `json:"inputs,omitempty"` 6605 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6606 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6607} 6608 6609// MarshalJSON is the custom marshaler for JobInputSequence. 6610func (jis JobInputSequence) MarshalJSON() ([]byte, error) { 6611 jis.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence 6612 objectMap := make(map[string]interface{}) 6613 if jis.Inputs != nil { 6614 objectMap["inputs"] = jis.Inputs 6615 } 6616 if jis.OdataType != "" { 6617 objectMap["@odata.type"] = jis.OdataType 6618 } 6619 return json.Marshal(objectMap) 6620} 6621 6622// AsJobInputClip is the BasicJobInput implementation for JobInputSequence. 6623func (jis JobInputSequence) AsJobInputClip() (*JobInputClip, bool) { 6624 return nil, false 6625} 6626 6627// AsBasicJobInputClip is the BasicJobInput implementation for JobInputSequence. 6628func (jis JobInputSequence) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6629 return nil, false 6630} 6631 6632// AsJobInputs is the BasicJobInput implementation for JobInputSequence. 6633func (jis JobInputSequence) AsJobInputs() (*JobInputs, bool) { 6634 return nil, false 6635} 6636 6637// AsJobInputAsset is the BasicJobInput implementation for JobInputSequence. 6638func (jis JobInputSequence) AsJobInputAsset() (*JobInputAsset, bool) { 6639 return nil, false 6640} 6641 6642// AsJobInputHTTP is the BasicJobInput implementation for JobInputSequence. 6643func (jis JobInputSequence) AsJobInputHTTP() (*JobInputHTTP, bool) { 6644 return nil, false 6645} 6646 6647// AsJobInputSequence is the BasicJobInput implementation for JobInputSequence. 6648func (jis JobInputSequence) AsJobInputSequence() (*JobInputSequence, bool) { 6649 return &jis, true 6650} 6651 6652// AsJobInput is the BasicJobInput implementation for JobInputSequence. 6653func (jis JobInputSequence) AsJobInput() (*JobInput, bool) { 6654 return nil, false 6655} 6656 6657// AsBasicJobInput is the BasicJobInput implementation for JobInputSequence. 6658func (jis JobInputSequence) AsBasicJobInput() (BasicJobInput, bool) { 6659 return &jis, true 6660} 6661 6662// UnmarshalJSON is the custom unmarshaler for JobInputSequence struct. 6663func (jis *JobInputSequence) UnmarshalJSON(body []byte) error { 6664 var m map[string]*json.RawMessage 6665 err := json.Unmarshal(body, &m) 6666 if err != nil { 6667 return err 6668 } 6669 for k, v := range m { 6670 switch k { 6671 case "inputs": 6672 if v != nil { 6673 inputs, err := unmarshalBasicJobInputClipArray(*v) 6674 if err != nil { 6675 return err 6676 } 6677 jis.Inputs = &inputs 6678 } 6679 case "@odata.type": 6680 if v != nil { 6681 var odataType OdataTypeBasicJobInput 6682 err = json.Unmarshal(*v, &odataType) 6683 if err != nil { 6684 return err 6685 } 6686 jis.OdataType = odataType 6687 } 6688 } 6689 } 6690 6691 return nil 6692} 6693 6694// BasicJobOutput describes all the properties of a JobOutput. 6695type BasicJobOutput interface { 6696 AsJobOutputAsset() (*JobOutputAsset, bool) 6697 AsJobOutput() (*JobOutput, bool) 6698} 6699 6700// JobOutput describes all the properties of a JobOutput. 6701type JobOutput struct { 6702 // Error - READ-ONLY; If the JobOutput is in the Error state, it contains the details of the error. 6703 Error *JobError `json:"error,omitempty"` 6704 // PresetOverride - A preset used to override the preset in the corresponding transform output. 6705 PresetOverride BasicPreset `json:"presetOverride,omitempty"` 6706 // State - READ-ONLY; Describes the state of the JobOutput. Possible values include: 'JobStateCanceled', 'JobStateCanceling', 'JobStateError', 'JobStateFinished', 'JobStateProcessing', 'JobStateQueued', 'JobStateScheduled' 6707 State JobState `json:"state,omitempty"` 6708 // Progress - READ-ONLY; If the JobOutput is in a Processing state, this contains the Job completion percentage. The value is an estimate and not intended to be used to predict Job completion times. To determine if the JobOutput is complete, use the State property. 6709 Progress *int32 `json:"progress,omitempty"` 6710 // Label - A label that is assigned to a JobOutput in order to help uniquely identify it. This is useful when your Transform has more than one TransformOutput, whereby your Job has more than one JobOutput. In such cases, when you submit the Job, you will add two or more JobOutputs, in the same order as TransformOutputs in the Transform. Subsequently, when you retrieve the Job, either through events or on a GET request, you can use the label to easily identify the JobOutput. If a label is not provided, a default value of '{presetName}_{outputIndex}' will be used, where the preset name is the name of the preset in the corresponding TransformOutput and the output index is the relative index of the this JobOutput within the Job. Note that this index is the same as the relative index of the corresponding TransformOutput within its Transform. 6711 Label *string `json:"label,omitempty"` 6712 // StartTime - READ-ONLY; The UTC date and time at which this Job Output began processing. 6713 StartTime *date.Time `json:"startTime,omitempty"` 6714 // EndTime - READ-ONLY; The UTC date and time at which this Job Output finished processing. 6715 EndTime *date.Time `json:"endTime,omitempty"` 6716 // OdataType - Possible values include: 'OdataTypeBasicJobOutputOdataTypeJobOutput', 'OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset' 6717 OdataType OdataTypeBasicJobOutput `json:"@odata.type,omitempty"` 6718} 6719 6720func unmarshalBasicJobOutput(body []byte) (BasicJobOutput, error) { 6721 var m map[string]interface{} 6722 err := json.Unmarshal(body, &m) 6723 if err != nil { 6724 return nil, err 6725 } 6726 6727 switch m["@odata.type"] { 6728 case string(OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset): 6729 var joa JobOutputAsset 6730 err := json.Unmarshal(body, &joa) 6731 return joa, err 6732 default: 6733 var jo JobOutput 6734 err := json.Unmarshal(body, &jo) 6735 return jo, err 6736 } 6737} 6738func unmarshalBasicJobOutputArray(body []byte) ([]BasicJobOutput, error) { 6739 var rawMessages []*json.RawMessage 6740 err := json.Unmarshal(body, &rawMessages) 6741 if err != nil { 6742 return nil, err 6743 } 6744 6745 joArray := make([]BasicJobOutput, len(rawMessages)) 6746 6747 for index, rawMessage := range rawMessages { 6748 jo, err := unmarshalBasicJobOutput(*rawMessage) 6749 if err != nil { 6750 return nil, err 6751 } 6752 joArray[index] = jo 6753 } 6754 return joArray, nil 6755} 6756 6757// MarshalJSON is the custom marshaler for JobOutput. 6758func (jo JobOutput) MarshalJSON() ([]byte, error) { 6759 jo.OdataType = OdataTypeBasicJobOutputOdataTypeJobOutput 6760 objectMap := make(map[string]interface{}) 6761 objectMap["presetOverride"] = jo.PresetOverride 6762 if jo.Label != nil { 6763 objectMap["label"] = jo.Label 6764 } 6765 if jo.OdataType != "" { 6766 objectMap["@odata.type"] = jo.OdataType 6767 } 6768 return json.Marshal(objectMap) 6769} 6770 6771// AsJobOutputAsset is the BasicJobOutput implementation for JobOutput. 6772func (jo JobOutput) AsJobOutputAsset() (*JobOutputAsset, bool) { 6773 return nil, false 6774} 6775 6776// AsJobOutput is the BasicJobOutput implementation for JobOutput. 6777func (jo JobOutput) AsJobOutput() (*JobOutput, bool) { 6778 return &jo, true 6779} 6780 6781// AsBasicJobOutput is the BasicJobOutput implementation for JobOutput. 6782func (jo JobOutput) AsBasicJobOutput() (BasicJobOutput, bool) { 6783 return &jo, true 6784} 6785 6786// UnmarshalJSON is the custom unmarshaler for JobOutput struct. 6787func (jo *JobOutput) UnmarshalJSON(body []byte) error { 6788 var m map[string]*json.RawMessage 6789 err := json.Unmarshal(body, &m) 6790 if err != nil { 6791 return err 6792 } 6793 for k, v := range m { 6794 switch k { 6795 case "error": 6796 if v != nil { 6797 var errorVar JobError 6798 err = json.Unmarshal(*v, &errorVar) 6799 if err != nil { 6800 return err 6801 } 6802 jo.Error = &errorVar 6803 } 6804 case "presetOverride": 6805 if v != nil { 6806 presetOverride, err := unmarshalBasicPreset(*v) 6807 if err != nil { 6808 return err 6809 } 6810 jo.PresetOverride = presetOverride 6811 } 6812 case "state": 6813 if v != nil { 6814 var state JobState 6815 err = json.Unmarshal(*v, &state) 6816 if err != nil { 6817 return err 6818 } 6819 jo.State = state 6820 } 6821 case "progress": 6822 if v != nil { 6823 var progress int32 6824 err = json.Unmarshal(*v, &progress) 6825 if err != nil { 6826 return err 6827 } 6828 jo.Progress = &progress 6829 } 6830 case "label": 6831 if v != nil { 6832 var label string 6833 err = json.Unmarshal(*v, &label) 6834 if err != nil { 6835 return err 6836 } 6837 jo.Label = &label 6838 } 6839 case "startTime": 6840 if v != nil { 6841 var startTime date.Time 6842 err = json.Unmarshal(*v, &startTime) 6843 if err != nil { 6844 return err 6845 } 6846 jo.StartTime = &startTime 6847 } 6848 case "endTime": 6849 if v != nil { 6850 var endTime date.Time 6851 err = json.Unmarshal(*v, &endTime) 6852 if err != nil { 6853 return err 6854 } 6855 jo.EndTime = &endTime 6856 } 6857 case "@odata.type": 6858 if v != nil { 6859 var odataType OdataTypeBasicJobOutput 6860 err = json.Unmarshal(*v, &odataType) 6861 if err != nil { 6862 return err 6863 } 6864 jo.OdataType = odataType 6865 } 6866 } 6867 } 6868 6869 return nil 6870} 6871 6872// JobOutputAsset represents an Asset used as a JobOutput. 6873type JobOutputAsset struct { 6874 // AssetName - The name of the output Asset. 6875 AssetName *string `json:"assetName,omitempty"` 6876 // Error - READ-ONLY; If the JobOutput is in the Error state, it contains the details of the error. 6877 Error *JobError `json:"error,omitempty"` 6878 // PresetOverride - A preset used to override the preset in the corresponding transform output. 6879 PresetOverride BasicPreset `json:"presetOverride,omitempty"` 6880 // State - READ-ONLY; Describes the state of the JobOutput. Possible values include: 'JobStateCanceled', 'JobStateCanceling', 'JobStateError', 'JobStateFinished', 'JobStateProcessing', 'JobStateQueued', 'JobStateScheduled' 6881 State JobState `json:"state,omitempty"` 6882 // Progress - READ-ONLY; If the JobOutput is in a Processing state, this contains the Job completion percentage. The value is an estimate and not intended to be used to predict Job completion times. To determine if the JobOutput is complete, use the State property. 6883 Progress *int32 `json:"progress,omitempty"` 6884 // Label - A label that is assigned to a JobOutput in order to help uniquely identify it. This is useful when your Transform has more than one TransformOutput, whereby your Job has more than one JobOutput. In such cases, when you submit the Job, you will add two or more JobOutputs, in the same order as TransformOutputs in the Transform. Subsequently, when you retrieve the Job, either through events or on a GET request, you can use the label to easily identify the JobOutput. If a label is not provided, a default value of '{presetName}_{outputIndex}' will be used, where the preset name is the name of the preset in the corresponding TransformOutput and the output index is the relative index of the this JobOutput within the Job. Note that this index is the same as the relative index of the corresponding TransformOutput within its Transform. 6885 Label *string `json:"label,omitempty"` 6886 // StartTime - READ-ONLY; The UTC date and time at which this Job Output began processing. 6887 StartTime *date.Time `json:"startTime,omitempty"` 6888 // EndTime - READ-ONLY; The UTC date and time at which this Job Output finished processing. 6889 EndTime *date.Time `json:"endTime,omitempty"` 6890 // OdataType - Possible values include: 'OdataTypeBasicJobOutputOdataTypeJobOutput', 'OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset' 6891 OdataType OdataTypeBasicJobOutput `json:"@odata.type,omitempty"` 6892} 6893 6894// MarshalJSON is the custom marshaler for JobOutputAsset. 6895func (joa JobOutputAsset) MarshalJSON() ([]byte, error) { 6896 joa.OdataType = OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset 6897 objectMap := make(map[string]interface{}) 6898 if joa.AssetName != nil { 6899 objectMap["assetName"] = joa.AssetName 6900 } 6901 objectMap["presetOverride"] = joa.PresetOverride 6902 if joa.Label != nil { 6903 objectMap["label"] = joa.Label 6904 } 6905 if joa.OdataType != "" { 6906 objectMap["@odata.type"] = joa.OdataType 6907 } 6908 return json.Marshal(objectMap) 6909} 6910 6911// AsJobOutputAsset is the BasicJobOutput implementation for JobOutputAsset. 6912func (joa JobOutputAsset) AsJobOutputAsset() (*JobOutputAsset, bool) { 6913 return &joa, true 6914} 6915 6916// AsJobOutput is the BasicJobOutput implementation for JobOutputAsset. 6917func (joa JobOutputAsset) AsJobOutput() (*JobOutput, bool) { 6918 return nil, false 6919} 6920 6921// AsBasicJobOutput is the BasicJobOutput implementation for JobOutputAsset. 6922func (joa JobOutputAsset) AsBasicJobOutput() (BasicJobOutput, bool) { 6923 return &joa, true 6924} 6925 6926// UnmarshalJSON is the custom unmarshaler for JobOutputAsset struct. 6927func (joa *JobOutputAsset) UnmarshalJSON(body []byte) error { 6928 var m map[string]*json.RawMessage 6929 err := json.Unmarshal(body, &m) 6930 if err != nil { 6931 return err 6932 } 6933 for k, v := range m { 6934 switch k { 6935 case "assetName": 6936 if v != nil { 6937 var assetName string 6938 err = json.Unmarshal(*v, &assetName) 6939 if err != nil { 6940 return err 6941 } 6942 joa.AssetName = &assetName 6943 } 6944 case "error": 6945 if v != nil { 6946 var errorVar JobError 6947 err = json.Unmarshal(*v, &errorVar) 6948 if err != nil { 6949 return err 6950 } 6951 joa.Error = &errorVar 6952 } 6953 case "presetOverride": 6954 if v != nil { 6955 presetOverride, err := unmarshalBasicPreset(*v) 6956 if err != nil { 6957 return err 6958 } 6959 joa.PresetOverride = presetOverride 6960 } 6961 case "state": 6962 if v != nil { 6963 var state JobState 6964 err = json.Unmarshal(*v, &state) 6965 if err != nil { 6966 return err 6967 } 6968 joa.State = state 6969 } 6970 case "progress": 6971 if v != nil { 6972 var progress int32 6973 err = json.Unmarshal(*v, &progress) 6974 if err != nil { 6975 return err 6976 } 6977 joa.Progress = &progress 6978 } 6979 case "label": 6980 if v != nil { 6981 var label string 6982 err = json.Unmarshal(*v, &label) 6983 if err != nil { 6984 return err 6985 } 6986 joa.Label = &label 6987 } 6988 case "startTime": 6989 if v != nil { 6990 var startTime date.Time 6991 err = json.Unmarshal(*v, &startTime) 6992 if err != nil { 6993 return err 6994 } 6995 joa.StartTime = &startTime 6996 } 6997 case "endTime": 6998 if v != nil { 6999 var endTime date.Time 7000 err = json.Unmarshal(*v, &endTime) 7001 if err != nil { 7002 return err 7003 } 7004 joa.EndTime = &endTime 7005 } 7006 case "@odata.type": 7007 if v != nil { 7008 var odataType OdataTypeBasicJobOutput 7009 err = json.Unmarshal(*v, &odataType) 7010 if err != nil { 7011 return err 7012 } 7013 joa.OdataType = odataType 7014 } 7015 } 7016 } 7017 7018 return nil 7019} 7020 7021// JobProperties properties of the Job. 7022type JobProperties struct { 7023 // Created - READ-ONLY; The UTC date and time when the customer has created the Job, in 'YYYY-MM-DDThh:mm:ssZ' format. 7024 Created *date.Time `json:"created,omitempty"` 7025 // State - READ-ONLY; The current state of the job. Possible values include: 'JobStateCanceled', 'JobStateCanceling', 'JobStateError', 'JobStateFinished', 'JobStateProcessing', 'JobStateQueued', 'JobStateScheduled' 7026 State JobState `json:"state,omitempty"` 7027 // Description - Optional customer supplied description of the Job. 7028 Description *string `json:"description,omitempty"` 7029 // Input - The inputs for the Job. 7030 Input BasicJobInput `json:"input,omitempty"` 7031 // LastModified - READ-ONLY; The UTC date and time when the customer has last updated the Job, in 'YYYY-MM-DDThh:mm:ssZ' format. 7032 LastModified *date.Time `json:"lastModified,omitempty"` 7033 // Outputs - The outputs for the Job. 7034 Outputs *[]BasicJobOutput `json:"outputs,omitempty"` 7035 // Priority - Priority with which the job should be processed. Higher priority jobs are processed before lower priority jobs. If not set, the default is normal. Possible values include: 'PriorityLow', 'PriorityNormal', 'PriorityHigh' 7036 Priority Priority `json:"priority,omitempty"` 7037 // CorrelationData - Customer provided key, value pairs that will be returned in Job and JobOutput state events. 7038 CorrelationData map[string]*string `json:"correlationData"` 7039 // StartTime - READ-ONLY; The UTC date and time at which this Job began processing. 7040 StartTime *date.Time `json:"startTime,omitempty"` 7041 // EndTime - READ-ONLY; The UTC date and time at which this Job finished processing. 7042 EndTime *date.Time `json:"endTime,omitempty"` 7043} 7044 7045// MarshalJSON is the custom marshaler for JobProperties. 7046func (jp JobProperties) MarshalJSON() ([]byte, error) { 7047 objectMap := make(map[string]interface{}) 7048 if jp.Description != nil { 7049 objectMap["description"] = jp.Description 7050 } 7051 objectMap["input"] = jp.Input 7052 if jp.Outputs != nil { 7053 objectMap["outputs"] = jp.Outputs 7054 } 7055 if jp.Priority != "" { 7056 objectMap["priority"] = jp.Priority 7057 } 7058 if jp.CorrelationData != nil { 7059 objectMap["correlationData"] = jp.CorrelationData 7060 } 7061 return json.Marshal(objectMap) 7062} 7063 7064// UnmarshalJSON is the custom unmarshaler for JobProperties struct. 7065func (jp *JobProperties) UnmarshalJSON(body []byte) error { 7066 var m map[string]*json.RawMessage 7067 err := json.Unmarshal(body, &m) 7068 if err != nil { 7069 return err 7070 } 7071 for k, v := range m { 7072 switch k { 7073 case "created": 7074 if v != nil { 7075 var created date.Time 7076 err = json.Unmarshal(*v, &created) 7077 if err != nil { 7078 return err 7079 } 7080 jp.Created = &created 7081 } 7082 case "state": 7083 if v != nil { 7084 var state JobState 7085 err = json.Unmarshal(*v, &state) 7086 if err != nil { 7087 return err 7088 } 7089 jp.State = state 7090 } 7091 case "description": 7092 if v != nil { 7093 var description string 7094 err = json.Unmarshal(*v, &description) 7095 if err != nil { 7096 return err 7097 } 7098 jp.Description = &description 7099 } 7100 case "input": 7101 if v != nil { 7102 input, err := unmarshalBasicJobInput(*v) 7103 if err != nil { 7104 return err 7105 } 7106 jp.Input = input 7107 } 7108 case "lastModified": 7109 if v != nil { 7110 var lastModified date.Time 7111 err = json.Unmarshal(*v, &lastModified) 7112 if err != nil { 7113 return err 7114 } 7115 jp.LastModified = &lastModified 7116 } 7117 case "outputs": 7118 if v != nil { 7119 outputs, err := unmarshalBasicJobOutputArray(*v) 7120 if err != nil { 7121 return err 7122 } 7123 jp.Outputs = &outputs 7124 } 7125 case "priority": 7126 if v != nil { 7127 var priority Priority 7128 err = json.Unmarshal(*v, &priority) 7129 if err != nil { 7130 return err 7131 } 7132 jp.Priority = priority 7133 } 7134 case "correlationData": 7135 if v != nil { 7136 var correlationData map[string]*string 7137 err = json.Unmarshal(*v, &correlationData) 7138 if err != nil { 7139 return err 7140 } 7141 jp.CorrelationData = correlationData 7142 } 7143 case "startTime": 7144 if v != nil { 7145 var startTime date.Time 7146 err = json.Unmarshal(*v, &startTime) 7147 if err != nil { 7148 return err 7149 } 7150 jp.StartTime = &startTime 7151 } 7152 case "endTime": 7153 if v != nil { 7154 var endTime date.Time 7155 err = json.Unmarshal(*v, &endTime) 7156 if err != nil { 7157 return err 7158 } 7159 jp.EndTime = &endTime 7160 } 7161 } 7162 } 7163 7164 return nil 7165} 7166 7167// JpgFormat describes the settings for producing JPEG thumbnails. 7168type JpgFormat struct { 7169 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 7170 FilenamePattern *string `json:"filenamePattern,omitempty"` 7171 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 7172 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 7173} 7174 7175// MarshalJSON is the custom marshaler for JpgFormat. 7176func (jf JpgFormat) MarshalJSON() ([]byte, error) { 7177 jf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat 7178 objectMap := make(map[string]interface{}) 7179 if jf.FilenamePattern != nil { 7180 objectMap["filenamePattern"] = jf.FilenamePattern 7181 } 7182 if jf.OdataType != "" { 7183 objectMap["@odata.type"] = jf.OdataType 7184 } 7185 return json.Marshal(objectMap) 7186} 7187 7188// AsImageFormat is the BasicFormat implementation for JpgFormat. 7189func (jf JpgFormat) AsImageFormat() (*ImageFormat, bool) { 7190 return nil, false 7191} 7192 7193// AsBasicImageFormat is the BasicFormat implementation for JpgFormat. 7194func (jf JpgFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 7195 return &jf, true 7196} 7197 7198// AsJpgFormat is the BasicFormat implementation for JpgFormat. 7199func (jf JpgFormat) AsJpgFormat() (*JpgFormat, bool) { 7200 return &jf, true 7201} 7202 7203// AsPngFormat is the BasicFormat implementation for JpgFormat. 7204func (jf JpgFormat) AsPngFormat() (*PngFormat, bool) { 7205 return nil, false 7206} 7207 7208// AsMultiBitrateFormat is the BasicFormat implementation for JpgFormat. 7209func (jf JpgFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 7210 return nil, false 7211} 7212 7213// AsBasicMultiBitrateFormat is the BasicFormat implementation for JpgFormat. 7214func (jf JpgFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 7215 return nil, false 7216} 7217 7218// AsMp4Format is the BasicFormat implementation for JpgFormat. 7219func (jf JpgFormat) AsMp4Format() (*Mp4Format, bool) { 7220 return nil, false 7221} 7222 7223// AsTransportStreamFormat is the BasicFormat implementation for JpgFormat. 7224func (jf JpgFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 7225 return nil, false 7226} 7227 7228// AsFormat is the BasicFormat implementation for JpgFormat. 7229func (jf JpgFormat) AsFormat() (*Format, bool) { 7230 return nil, false 7231} 7232 7233// AsBasicFormat is the BasicFormat implementation for JpgFormat. 7234func (jf JpgFormat) AsBasicFormat() (BasicFormat, bool) { 7235 return &jf, true 7236} 7237 7238// JpgImage describes the properties for producing a series of JPEG images from the input video. 7239type JpgImage struct { 7240 // Layers - A collection of output JPEG image layers to be produced by the encoder. 7241 Layers *[]JpgLayer `json:"layers,omitempty"` 7242 // SpriteColumn - Sets the number of columns used in thumbnail sprite image. The number of rows are automatically calculated and a VTT file is generated with the coordinate mappings for each thumbnail in the sprite. Note: this value should be a positive integer and a proper value is recommended so that the output image resolution will not go beyond JPEG maximum pixel resolution limit 65535x65535. 7243 SpriteColumn *int32 `json:"spriteColumn,omitempty"` 7244 // Start - The position in the input video from where to start generating thumbnails. The value can be in ISO 8601 format (For example, PT05S to start at 5 seconds), or a frame count (For example, 10 to start at the 10th frame), or a relative value to stream duration (For example, 10% to start at 10% of stream duration). Also supports a macro {Best}, which tells the encoder to select the best thumbnail from the first few seconds of the video and will only produce one thumbnail, no matter what other settings are for Step and Range. The default value is macro {Best}. 7245 Start *string `json:"start,omitempty"` 7246 // Step - The intervals at which thumbnails are generated. The value can be in ISO 8601 format (For example, PT05S for one image every 5 seconds), or a frame count (For example, 30 for one image every 30 frames), or a relative value to stream duration (For example, 10% for one image every 10% of stream duration). Note: Step value will affect the first generated thumbnail, which may not be exactly the one specified at transform preset start time. This is due to the encoder, which tries to select the best thumbnail between start time and Step position from start time as the first output. As the default value is 10%, it means if stream has long duration, the first generated thumbnail might be far away from the one specified at start time. Try to select reasonable value for Step if the first thumbnail is expected close to start time, or set Range value at 1 if only one thumbnail is needed at start time. 7247 Step *string `json:"step,omitempty"` 7248 // Range - The position relative to transform preset start time in the input video at which to stop generating thumbnails. The value can be in ISO 8601 format (For example, PT5M30S to stop at 5 minutes and 30 seconds from start time), or a frame count (For example, 300 to stop at the 300th frame from the frame at start time. If this value is 1, it means only producing one thumbnail at start time), or a relative value to the stream duration (For example, 50% to stop at half of stream duration from start time). The default value is 100%, which means to stop at the end of the stream. 7249 Range *string `json:"range,omitempty"` 7250 // KeyFrameInterval - The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting. 7251 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 7252 // StretchMode - The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 7253 StretchMode StretchMode `json:"stretchMode,omitempty"` 7254 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 7255 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 7256 // Label - An optional label for the codec. The label can be used to control muxing behavior. 7257 Label *string `json:"label,omitempty"` 7258 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 7259 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 7260} 7261 7262// MarshalJSON is the custom marshaler for JpgImage. 7263func (ji JpgImage) MarshalJSON() ([]byte, error) { 7264 ji.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage 7265 objectMap := make(map[string]interface{}) 7266 if ji.Layers != nil { 7267 objectMap["layers"] = ji.Layers 7268 } 7269 if ji.SpriteColumn != nil { 7270 objectMap["spriteColumn"] = ji.SpriteColumn 7271 } 7272 if ji.Start != nil { 7273 objectMap["start"] = ji.Start 7274 } 7275 if ji.Step != nil { 7276 objectMap["step"] = ji.Step 7277 } 7278 if ji.Range != nil { 7279 objectMap["range"] = ji.Range 7280 } 7281 if ji.KeyFrameInterval != nil { 7282 objectMap["keyFrameInterval"] = ji.KeyFrameInterval 7283 } 7284 if ji.StretchMode != "" { 7285 objectMap["stretchMode"] = ji.StretchMode 7286 } 7287 if ji.SyncMode != "" { 7288 objectMap["syncMode"] = ji.SyncMode 7289 } 7290 if ji.Label != nil { 7291 objectMap["label"] = ji.Label 7292 } 7293 if ji.OdataType != "" { 7294 objectMap["@odata.type"] = ji.OdataType 7295 } 7296 return json.Marshal(objectMap) 7297} 7298 7299// AsAudio is the BasicCodec implementation for JpgImage. 7300func (ji JpgImage) AsAudio() (*Audio, bool) { 7301 return nil, false 7302} 7303 7304// AsBasicAudio is the BasicCodec implementation for JpgImage. 7305func (ji JpgImage) AsBasicAudio() (BasicAudio, bool) { 7306 return nil, false 7307} 7308 7309// AsAacAudio is the BasicCodec implementation for JpgImage. 7310func (ji JpgImage) AsAacAudio() (*AacAudio, bool) { 7311 return nil, false 7312} 7313 7314// AsVideo is the BasicCodec implementation for JpgImage. 7315func (ji JpgImage) AsVideo() (*Video, bool) { 7316 return nil, false 7317} 7318 7319// AsBasicVideo is the BasicCodec implementation for JpgImage. 7320func (ji JpgImage) AsBasicVideo() (BasicVideo, bool) { 7321 return &ji, true 7322} 7323 7324// AsH265Video is the BasicCodec implementation for JpgImage. 7325func (ji JpgImage) AsH265Video() (*H265Video, bool) { 7326 return nil, false 7327} 7328 7329// AsCopyVideo is the BasicCodec implementation for JpgImage. 7330func (ji JpgImage) AsCopyVideo() (*CopyVideo, bool) { 7331 return nil, false 7332} 7333 7334// AsImage is the BasicCodec implementation for JpgImage. 7335func (ji JpgImage) AsImage() (*Image, bool) { 7336 return nil, false 7337} 7338 7339// AsBasicImage is the BasicCodec implementation for JpgImage. 7340func (ji JpgImage) AsBasicImage() (BasicImage, bool) { 7341 return &ji, true 7342} 7343 7344// AsCopyAudio is the BasicCodec implementation for JpgImage. 7345func (ji JpgImage) AsCopyAudio() (*CopyAudio, bool) { 7346 return nil, false 7347} 7348 7349// AsH264Video is the BasicCodec implementation for JpgImage. 7350func (ji JpgImage) AsH264Video() (*H264Video, bool) { 7351 return nil, false 7352} 7353 7354// AsJpgImage is the BasicCodec implementation for JpgImage. 7355func (ji JpgImage) AsJpgImage() (*JpgImage, bool) { 7356 return &ji, true 7357} 7358 7359// AsPngImage is the BasicCodec implementation for JpgImage. 7360func (ji JpgImage) AsPngImage() (*PngImage, bool) { 7361 return nil, false 7362} 7363 7364// AsCodec is the BasicCodec implementation for JpgImage. 7365func (ji JpgImage) AsCodec() (*Codec, bool) { 7366 return nil, false 7367} 7368 7369// AsBasicCodec is the BasicCodec implementation for JpgImage. 7370func (ji JpgImage) AsBasicCodec() (BasicCodec, bool) { 7371 return &ji, true 7372} 7373 7374// JpgLayer describes the settings to produce a JPEG image from the input video. 7375type JpgLayer struct { 7376 // Quality - The compression quality of the JPEG output. Range is from 0-100 and the default is 70. 7377 Quality *int32 `json:"quality,omitempty"` 7378 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 7379 Width *string `json:"width,omitempty"` 7380 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 7381 Height *string `json:"height,omitempty"` 7382 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 7383 Label *string `json:"label,omitempty"` 7384 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 7385 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 7386} 7387 7388// MarshalJSON is the custom marshaler for JpgLayer. 7389func (jl JpgLayer) MarshalJSON() ([]byte, error) { 7390 jl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer 7391 objectMap := make(map[string]interface{}) 7392 if jl.Quality != nil { 7393 objectMap["quality"] = jl.Quality 7394 } 7395 if jl.Width != nil { 7396 objectMap["width"] = jl.Width 7397 } 7398 if jl.Height != nil { 7399 objectMap["height"] = jl.Height 7400 } 7401 if jl.Label != nil { 7402 objectMap["label"] = jl.Label 7403 } 7404 if jl.OdataType != "" { 7405 objectMap["@odata.type"] = jl.OdataType 7406 } 7407 return json.Marshal(objectMap) 7408} 7409 7410// AsH265VideoLayer is the BasicLayer implementation for JpgLayer. 7411func (jl JpgLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 7412 return nil, false 7413} 7414 7415// AsBasicH265VideoLayer is the BasicLayer implementation for JpgLayer. 7416func (jl JpgLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 7417 return nil, false 7418} 7419 7420// AsH265Layer is the BasicLayer implementation for JpgLayer. 7421func (jl JpgLayer) AsH265Layer() (*H265Layer, bool) { 7422 return nil, false 7423} 7424 7425// AsVideoLayer is the BasicLayer implementation for JpgLayer. 7426func (jl JpgLayer) AsVideoLayer() (*VideoLayer, bool) { 7427 return nil, false 7428} 7429 7430// AsBasicVideoLayer is the BasicLayer implementation for JpgLayer. 7431func (jl JpgLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 7432 return nil, false 7433} 7434 7435// AsH264Layer is the BasicLayer implementation for JpgLayer. 7436func (jl JpgLayer) AsH264Layer() (*H264Layer, bool) { 7437 return nil, false 7438} 7439 7440// AsJpgLayer is the BasicLayer implementation for JpgLayer. 7441func (jl JpgLayer) AsJpgLayer() (*JpgLayer, bool) { 7442 return &jl, true 7443} 7444 7445// AsPngLayer is the BasicLayer implementation for JpgLayer. 7446func (jl JpgLayer) AsPngLayer() (*PngLayer, bool) { 7447 return nil, false 7448} 7449 7450// AsLayer is the BasicLayer implementation for JpgLayer. 7451func (jl JpgLayer) AsLayer() (*Layer, bool) { 7452 return nil, false 7453} 7454 7455// AsBasicLayer is the BasicLayer implementation for JpgLayer. 7456func (jl JpgLayer) AsBasicLayer() (BasicLayer, bool) { 7457 return &jl, true 7458} 7459 7460// KeyDelivery ... 7461type KeyDelivery struct { 7462 // AccessControl - The access control properties for Key Delivery. 7463 AccessControl *AccessControl `json:"accessControl,omitempty"` 7464} 7465 7466// KeyVaultProperties ... 7467type KeyVaultProperties struct { 7468 // KeyIdentifier - The URL of the Key Vault key used to encrypt the account. The key may either be versioned (for example https://vault/keys/mykey/version1) or reference a key without a version (for example https://vault/keys/mykey). 7469 KeyIdentifier *string `json:"keyIdentifier,omitempty"` 7470 // CurrentKeyIdentifier - READ-ONLY; The current key used to encrypt the Media Services account, including the key version. 7471 CurrentKeyIdentifier *string `json:"currentKeyIdentifier,omitempty"` 7472} 7473 7474// MarshalJSON is the custom marshaler for KeyVaultProperties. 7475func (kvp KeyVaultProperties) MarshalJSON() ([]byte, error) { 7476 objectMap := make(map[string]interface{}) 7477 if kvp.KeyIdentifier != nil { 7478 objectMap["keyIdentifier"] = kvp.KeyIdentifier 7479 } 7480 return json.Marshal(objectMap) 7481} 7482 7483// BasicLayer the encoder can be configured to produce video and/or images (thumbnails) at different resolutions, by 7484// specifying a layer for each desired resolution. A layer represents the properties for the video or image at a 7485// resolution. 7486type BasicLayer interface { 7487 AsH265VideoLayer() (*H265VideoLayer, bool) 7488 AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) 7489 AsH265Layer() (*H265Layer, bool) 7490 AsVideoLayer() (*VideoLayer, bool) 7491 AsBasicVideoLayer() (BasicVideoLayer, bool) 7492 AsH264Layer() (*H264Layer, bool) 7493 AsJpgLayer() (*JpgLayer, bool) 7494 AsPngLayer() (*PngLayer, bool) 7495 AsLayer() (*Layer, bool) 7496} 7497 7498// Layer the encoder can be configured to produce video and/or images (thumbnails) at different resolutions, by 7499// specifying a layer for each desired resolution. A layer represents the properties for the video or image at 7500// a resolution. 7501type Layer struct { 7502 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 7503 Width *string `json:"width,omitempty"` 7504 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 7505 Height *string `json:"height,omitempty"` 7506 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 7507 Label *string `json:"label,omitempty"` 7508 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 7509 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 7510} 7511 7512func unmarshalBasicLayer(body []byte) (BasicLayer, error) { 7513 var m map[string]interface{} 7514 err := json.Unmarshal(body, &m) 7515 if err != nil { 7516 return nil, err 7517 } 7518 7519 switch m["@odata.type"] { 7520 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer): 7521 var hvl H265VideoLayer 7522 err := json.Unmarshal(body, &hvl) 7523 return hvl, err 7524 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer): 7525 var hl H265Layer 7526 err := json.Unmarshal(body, &hl) 7527 return hl, err 7528 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer): 7529 var vl VideoLayer 7530 err := json.Unmarshal(body, &vl) 7531 return vl, err 7532 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer): 7533 var hl H264Layer 7534 err := json.Unmarshal(body, &hl) 7535 return hl, err 7536 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer): 7537 var jl JpgLayer 7538 err := json.Unmarshal(body, &jl) 7539 return jl, err 7540 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer): 7541 var pl PngLayer 7542 err := json.Unmarshal(body, &pl) 7543 return pl, err 7544 default: 7545 var l Layer 7546 err := json.Unmarshal(body, &l) 7547 return l, err 7548 } 7549} 7550func unmarshalBasicLayerArray(body []byte) ([]BasicLayer, error) { 7551 var rawMessages []*json.RawMessage 7552 err := json.Unmarshal(body, &rawMessages) 7553 if err != nil { 7554 return nil, err 7555 } 7556 7557 lArray := make([]BasicLayer, len(rawMessages)) 7558 7559 for index, rawMessage := range rawMessages { 7560 l, err := unmarshalBasicLayer(*rawMessage) 7561 if err != nil { 7562 return nil, err 7563 } 7564 lArray[index] = l 7565 } 7566 return lArray, nil 7567} 7568 7569// MarshalJSON is the custom marshaler for Layer. 7570func (l Layer) MarshalJSON() ([]byte, error) { 7571 l.OdataType = OdataTypeBasicLayerOdataTypeLayer 7572 objectMap := make(map[string]interface{}) 7573 if l.Width != nil { 7574 objectMap["width"] = l.Width 7575 } 7576 if l.Height != nil { 7577 objectMap["height"] = l.Height 7578 } 7579 if l.Label != nil { 7580 objectMap["label"] = l.Label 7581 } 7582 if l.OdataType != "" { 7583 objectMap["@odata.type"] = l.OdataType 7584 } 7585 return json.Marshal(objectMap) 7586} 7587 7588// AsH265VideoLayer is the BasicLayer implementation for Layer. 7589func (l Layer) AsH265VideoLayer() (*H265VideoLayer, bool) { 7590 return nil, false 7591} 7592 7593// AsBasicH265VideoLayer is the BasicLayer implementation for Layer. 7594func (l Layer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 7595 return nil, false 7596} 7597 7598// AsH265Layer is the BasicLayer implementation for Layer. 7599func (l Layer) AsH265Layer() (*H265Layer, bool) { 7600 return nil, false 7601} 7602 7603// AsVideoLayer is the BasicLayer implementation for Layer. 7604func (l Layer) AsVideoLayer() (*VideoLayer, bool) { 7605 return nil, false 7606} 7607 7608// AsBasicVideoLayer is the BasicLayer implementation for Layer. 7609func (l Layer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 7610 return nil, false 7611} 7612 7613// AsH264Layer is the BasicLayer implementation for Layer. 7614func (l Layer) AsH264Layer() (*H264Layer, bool) { 7615 return nil, false 7616} 7617 7618// AsJpgLayer is the BasicLayer implementation for Layer. 7619func (l Layer) AsJpgLayer() (*JpgLayer, bool) { 7620 return nil, false 7621} 7622 7623// AsPngLayer is the BasicLayer implementation for Layer. 7624func (l Layer) AsPngLayer() (*PngLayer, bool) { 7625 return nil, false 7626} 7627 7628// AsLayer is the BasicLayer implementation for Layer. 7629func (l Layer) AsLayer() (*Layer, bool) { 7630 return &l, true 7631} 7632 7633// AsBasicLayer is the BasicLayer implementation for Layer. 7634func (l Layer) AsBasicLayer() (BasicLayer, bool) { 7635 return &l, true 7636} 7637 7638// ListContainerSasInput the parameters to the list SAS request. 7639type ListContainerSasInput struct { 7640 // Permissions - The permissions to set on the SAS URL. Possible values include: 'AssetContainerPermissionRead', 'AssetContainerPermissionReadWrite', 'AssetContainerPermissionReadWriteDelete' 7641 Permissions AssetContainerPermission `json:"permissions,omitempty"` 7642 // ExpiryTime - The SAS URL expiration time. This must be less than 24 hours from the current time. 7643 ExpiryTime *date.Time `json:"expiryTime,omitempty"` 7644} 7645 7646// ListContentKeysResponse class of response for listContentKeys action 7647type ListContentKeysResponse struct { 7648 autorest.Response `json:"-"` 7649 // ContentKeys - ContentKeys used by current Streaming Locator 7650 ContentKeys *[]StreamingLocatorContentKey `json:"contentKeys,omitempty"` 7651} 7652 7653// ListEdgePoliciesInput ... 7654type ListEdgePoliciesInput struct { 7655 // DeviceID - Unique identifier of the edge device. 7656 DeviceID *string `json:"deviceId,omitempty"` 7657} 7658 7659// ListPathsResponse class of response for listPaths action 7660type ListPathsResponse struct { 7661 autorest.Response `json:"-"` 7662 // StreamingPaths - Streaming Paths supported by current Streaming Locator 7663 StreamingPaths *[]StreamingPath `json:"streamingPaths,omitempty"` 7664 // DownloadPaths - Download Paths supported by current Streaming Locator 7665 DownloadPaths *[]string `json:"downloadPaths,omitempty"` 7666} 7667 7668// ListStreamingLocatorsResponse the Streaming Locators associated with this Asset. 7669type ListStreamingLocatorsResponse struct { 7670 autorest.Response `json:"-"` 7671 // StreamingLocators - READ-ONLY; The list of Streaming Locators. 7672 StreamingLocators *[]AssetStreamingLocator `json:"streamingLocators,omitempty"` 7673} 7674 7675// MarshalJSON is the custom marshaler for ListStreamingLocatorsResponse. 7676func (lslr ListStreamingLocatorsResponse) MarshalJSON() ([]byte, error) { 7677 objectMap := make(map[string]interface{}) 7678 return json.Marshal(objectMap) 7679} 7680 7681// LiveEvent the live event. 7682type LiveEvent struct { 7683 autorest.Response `json:"-"` 7684 // LiveEventProperties - The live event properties. 7685 *LiveEventProperties `json:"properties,omitempty"` 7686 // SystemData - READ-ONLY; The system metadata relating to this resource. 7687 SystemData *SystemData `json:"systemData,omitempty"` 7688 // Tags - Resource tags. 7689 Tags map[string]*string `json:"tags"` 7690 // Location - The geo-location where the resource lives 7691 Location *string `json:"location,omitempty"` 7692 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 7693 ID *string `json:"id,omitempty"` 7694 // Name - READ-ONLY; The name of the resource 7695 Name *string `json:"name,omitempty"` 7696 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 7697 Type *string `json:"type,omitempty"` 7698} 7699 7700// MarshalJSON is the custom marshaler for LiveEvent. 7701func (le LiveEvent) MarshalJSON() ([]byte, error) { 7702 objectMap := make(map[string]interface{}) 7703 if le.LiveEventProperties != nil { 7704 objectMap["properties"] = le.LiveEventProperties 7705 } 7706 if le.Tags != nil { 7707 objectMap["tags"] = le.Tags 7708 } 7709 if le.Location != nil { 7710 objectMap["location"] = le.Location 7711 } 7712 return json.Marshal(objectMap) 7713} 7714 7715// UnmarshalJSON is the custom unmarshaler for LiveEvent struct. 7716func (le *LiveEvent) UnmarshalJSON(body []byte) error { 7717 var m map[string]*json.RawMessage 7718 err := json.Unmarshal(body, &m) 7719 if err != nil { 7720 return err 7721 } 7722 for k, v := range m { 7723 switch k { 7724 case "properties": 7725 if v != nil { 7726 var liveEventProperties LiveEventProperties 7727 err = json.Unmarshal(*v, &liveEventProperties) 7728 if err != nil { 7729 return err 7730 } 7731 le.LiveEventProperties = &liveEventProperties 7732 } 7733 case "systemData": 7734 if v != nil { 7735 var systemData SystemData 7736 err = json.Unmarshal(*v, &systemData) 7737 if err != nil { 7738 return err 7739 } 7740 le.SystemData = &systemData 7741 } 7742 case "tags": 7743 if v != nil { 7744 var tags map[string]*string 7745 err = json.Unmarshal(*v, &tags) 7746 if err != nil { 7747 return err 7748 } 7749 le.Tags = tags 7750 } 7751 case "location": 7752 if v != nil { 7753 var location string 7754 err = json.Unmarshal(*v, &location) 7755 if err != nil { 7756 return err 7757 } 7758 le.Location = &location 7759 } 7760 case "id": 7761 if v != nil { 7762 var ID string 7763 err = json.Unmarshal(*v, &ID) 7764 if err != nil { 7765 return err 7766 } 7767 le.ID = &ID 7768 } 7769 case "name": 7770 if v != nil { 7771 var name string 7772 err = json.Unmarshal(*v, &name) 7773 if err != nil { 7774 return err 7775 } 7776 le.Name = &name 7777 } 7778 case "type": 7779 if v != nil { 7780 var typeVar string 7781 err = json.Unmarshal(*v, &typeVar) 7782 if err != nil { 7783 return err 7784 } 7785 le.Type = &typeVar 7786 } 7787 } 7788 } 7789 7790 return nil 7791} 7792 7793// LiveEventActionInput the LiveEvent action input parameter definition. 7794type LiveEventActionInput struct { 7795 // RemoveOutputsOnStop - The flag indicates whether live outputs are automatically deleted when live event is being stopped. Deleting live outputs do not delete the underlying assets. 7796 RemoveOutputsOnStop *bool `json:"removeOutputsOnStop,omitempty"` 7797} 7798 7799// LiveEventEncoding specifies the live event type and optional encoding settings for encoding live events. 7800type LiveEventEncoding struct { 7801 // EncodingType - Live event type. When encodingType is set to None, the service simply passes through the incoming video and audio layer(s) to the output. When encodingType is set to Standard or Premium1080p, a live encoder transcodes the incoming stream into multiple bitrates or layers. See https://go.microsoft.com/fwlink/?linkid=2095101 for more information. This property cannot be modified after the live event is created. Possible values include: 'LiveEventEncodingTypeNone', 'LiveEventEncodingTypeStandard', 'LiveEventEncodingTypePremium1080p', 'LiveEventEncodingTypePassthroughBasic', 'LiveEventEncodingTypePassthroughStandard' 7802 EncodingType LiveEventEncodingType `json:"encodingType,omitempty"` 7803 // PresetName - The optional encoding preset name, used when encodingType is not None. This value is specified at creation time and cannot be updated. If the encodingType is set to Standard, then the default preset name is ‘Default720p’. Else if the encodingType is set to Premium1080p, the default preset is ‘Default1080p’. 7804 PresetName *string `json:"presetName,omitempty"` 7805 // StretchMode - Specifies how the input video will be resized to fit the desired output resolution(s). Default is None. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 7806 StretchMode StretchMode `json:"stretchMode,omitempty"` 7807 // KeyFrameInterval - Use an ISO 8601 time value between 0.5 to 20 seconds to specify the output fragment length for the video and audio tracks of an encoding live event. For example, use PT2S to indicate 2 seconds. For the video track it also defines the key frame interval, or the length of a GoP (group of pictures). If this value is not set for an encoding live event, the fragment duration defaults to 2 seconds. The value cannot be set for pass-through live events. 7808 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 7809} 7810 7811// LiveEventEndpoint the live event endpoint. 7812type LiveEventEndpoint struct { 7813 // Protocol - The endpoint protocol. 7814 Protocol *string `json:"protocol,omitempty"` 7815 // URL - The endpoint URL. 7816 URL *string `json:"url,omitempty"` 7817} 7818 7819// LiveEventInput the live event input. 7820type LiveEventInput struct { 7821 // StreamingProtocol - The input protocol for the live event. This is specified at creation time and cannot be updated. Possible values include: 'LiveEventInputProtocolFragmentedMP4', 'LiveEventInputProtocolRTMP' 7822 StreamingProtocol LiveEventInputProtocol `json:"streamingProtocol,omitempty"` 7823 // AccessControl - Access control for live event input. 7824 AccessControl *LiveEventInputAccessControl `json:"accessControl,omitempty"` 7825 // KeyFrameIntervalDuration - ISO 8601 time duration of the key frame interval duration of the input. This value sets the EXT-X-TARGETDURATION property in the HLS output. For example, use PT2S to indicate 2 seconds. Leave the value empty for encoding live events. 7826 KeyFrameIntervalDuration *string `json:"keyFrameIntervalDuration,omitempty"` 7827 // AccessToken - A UUID in string form to uniquely identify the stream. This can be specified at creation time but cannot be updated. If omitted, the service will generate a unique value. 7828 AccessToken *string `json:"accessToken,omitempty"` 7829 // Endpoints - The input endpoints for the live event. 7830 Endpoints *[]LiveEventEndpoint `json:"endpoints,omitempty"` 7831} 7832 7833// LiveEventInputAccessControl the IP access control for live event input. 7834type LiveEventInputAccessControl struct { 7835 // IP - The IP access control properties. 7836 IP *IPAccessControl `json:"ip,omitempty"` 7837} 7838 7839// LiveEventInputTrackSelection a track selection condition. This property is reserved for future use, any 7840// value set on this property will be ignored. 7841type LiveEventInputTrackSelection struct { 7842 // Property - Property name to select. This property is reserved for future use, any value set on this property will be ignored. 7843 Property *string `json:"property,omitempty"` 7844 // Operation - Comparing operation. This property is reserved for future use, any value set on this property will be ignored. 7845 Operation *string `json:"operation,omitempty"` 7846 // Value - Property value to select. This property is reserved for future use, any value set on this property will be ignored. 7847 Value *string `json:"value,omitempty"` 7848} 7849 7850// LiveEventListResult the LiveEvent list result. 7851type LiveEventListResult struct { 7852 autorest.Response `json:"-"` 7853 // Value - The result of the List Live Event operation. 7854 Value *[]LiveEvent `json:"value,omitempty"` 7855 // OdataCount - The number of result. 7856 OdataCount *int32 `json:"@odata.count,omitempty"` 7857 // OdataNextLink - The link to the next set of results. Not empty if value contains incomplete list of live outputs. 7858 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 7859} 7860 7861// LiveEventListResultIterator provides access to a complete listing of LiveEvent values. 7862type LiveEventListResultIterator struct { 7863 i int 7864 page LiveEventListResultPage 7865} 7866 7867// NextWithContext advances to the next value. If there was an error making 7868// the request the iterator does not advance and the error is returned. 7869func (iter *LiveEventListResultIterator) NextWithContext(ctx context.Context) (err error) { 7870 if tracing.IsEnabled() { 7871 ctx = tracing.StartSpan(ctx, fqdn+"/LiveEventListResultIterator.NextWithContext") 7872 defer func() { 7873 sc := -1 7874 if iter.Response().Response.Response != nil { 7875 sc = iter.Response().Response.Response.StatusCode 7876 } 7877 tracing.EndSpan(ctx, sc, err) 7878 }() 7879 } 7880 iter.i++ 7881 if iter.i < len(iter.page.Values()) { 7882 return nil 7883 } 7884 err = iter.page.NextWithContext(ctx) 7885 if err != nil { 7886 iter.i-- 7887 return err 7888 } 7889 iter.i = 0 7890 return nil 7891} 7892 7893// Next advances to the next value. If there was an error making 7894// the request the iterator does not advance and the error is returned. 7895// Deprecated: Use NextWithContext() instead. 7896func (iter *LiveEventListResultIterator) Next() error { 7897 return iter.NextWithContext(context.Background()) 7898} 7899 7900// NotDone returns true if the enumeration should be started or is not yet complete. 7901func (iter LiveEventListResultIterator) NotDone() bool { 7902 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 7903} 7904 7905// Response returns the raw server response from the last page request. 7906func (iter LiveEventListResultIterator) Response() LiveEventListResult { 7907 return iter.page.Response() 7908} 7909 7910// Value returns the current value or a zero-initialized value if the 7911// iterator has advanced beyond the end of the collection. 7912func (iter LiveEventListResultIterator) Value() LiveEvent { 7913 if !iter.page.NotDone() { 7914 return LiveEvent{} 7915 } 7916 return iter.page.Values()[iter.i] 7917} 7918 7919// Creates a new instance of the LiveEventListResultIterator type. 7920func NewLiveEventListResultIterator(page LiveEventListResultPage) LiveEventListResultIterator { 7921 return LiveEventListResultIterator{page: page} 7922} 7923 7924// IsEmpty returns true if the ListResult contains no values. 7925func (lelr LiveEventListResult) IsEmpty() bool { 7926 return lelr.Value == nil || len(*lelr.Value) == 0 7927} 7928 7929// hasNextLink returns true if the NextLink is not empty. 7930func (lelr LiveEventListResult) hasNextLink() bool { 7931 return lelr.OdataNextLink != nil && len(*lelr.OdataNextLink) != 0 7932} 7933 7934// liveEventListResultPreparer prepares a request to retrieve the next set of results. 7935// It returns nil if no more results exist. 7936func (lelr LiveEventListResult) liveEventListResultPreparer(ctx context.Context) (*http.Request, error) { 7937 if !lelr.hasNextLink() { 7938 return nil, nil 7939 } 7940 return autorest.Prepare((&http.Request{}).WithContext(ctx), 7941 autorest.AsJSON(), 7942 autorest.AsGet(), 7943 autorest.WithBaseURL(to.String(lelr.OdataNextLink))) 7944} 7945 7946// LiveEventListResultPage contains a page of LiveEvent values. 7947type LiveEventListResultPage struct { 7948 fn func(context.Context, LiveEventListResult) (LiveEventListResult, error) 7949 lelr LiveEventListResult 7950} 7951 7952// NextWithContext advances to the next page of values. If there was an error making 7953// the request the page does not advance and the error is returned. 7954func (page *LiveEventListResultPage) NextWithContext(ctx context.Context) (err error) { 7955 if tracing.IsEnabled() { 7956 ctx = tracing.StartSpan(ctx, fqdn+"/LiveEventListResultPage.NextWithContext") 7957 defer func() { 7958 sc := -1 7959 if page.Response().Response.Response != nil { 7960 sc = page.Response().Response.Response.StatusCode 7961 } 7962 tracing.EndSpan(ctx, sc, err) 7963 }() 7964 } 7965 for { 7966 next, err := page.fn(ctx, page.lelr) 7967 if err != nil { 7968 return err 7969 } 7970 page.lelr = next 7971 if !next.hasNextLink() || !next.IsEmpty() { 7972 break 7973 } 7974 } 7975 return nil 7976} 7977 7978// Next advances to the next page of values. If there was an error making 7979// the request the page does not advance and the error is returned. 7980// Deprecated: Use NextWithContext() instead. 7981func (page *LiveEventListResultPage) Next() error { 7982 return page.NextWithContext(context.Background()) 7983} 7984 7985// NotDone returns true if the page enumeration should be started or is not yet complete. 7986func (page LiveEventListResultPage) NotDone() bool { 7987 return !page.lelr.IsEmpty() 7988} 7989 7990// Response returns the raw server response from the last page request. 7991func (page LiveEventListResultPage) Response() LiveEventListResult { 7992 return page.lelr 7993} 7994 7995// Values returns the slice of values for the current page or nil if there are no values. 7996func (page LiveEventListResultPage) Values() []LiveEvent { 7997 if page.lelr.IsEmpty() { 7998 return nil 7999 } 8000 return *page.lelr.Value 8001} 8002 8003// Creates a new instance of the LiveEventListResultPage type. 8004func NewLiveEventListResultPage(cur LiveEventListResult, getNextPage func(context.Context, LiveEventListResult) (LiveEventListResult, error)) LiveEventListResultPage { 8005 return LiveEventListResultPage{ 8006 fn: getNextPage, 8007 lelr: cur, 8008 } 8009} 8010 8011// LiveEventOutputTranscriptionTrack describes a transcription track in the output of a live event, 8012// generated using speech-to-text transcription. This property is reserved for future use, any value set on 8013// this property will be ignored. 8014type LiveEventOutputTranscriptionTrack struct { 8015 // TrackName - The output track name. This property is reserved for future use, any value set on this property will be ignored. 8016 TrackName *string `json:"trackName,omitempty"` 8017} 8018 8019// LiveEventPreview live event preview settings. 8020type LiveEventPreview struct { 8021 // Endpoints - The endpoints for preview. Do not share the preview URL with the live event audience. 8022 Endpoints *[]LiveEventEndpoint `json:"endpoints,omitempty"` 8023 // AccessControl - The access control for live event preview. 8024 AccessControl *LiveEventPreviewAccessControl `json:"accessControl,omitempty"` 8025 // PreviewLocator - The identifier of the preview locator in Guid format. Specifying this at creation time allows the caller to know the preview locator url before the event is created. If omitted, the service will generate a random identifier. This value cannot be updated once the live event is created. 8026 PreviewLocator *string `json:"previewLocator,omitempty"` 8027 // StreamingPolicyName - The name of streaming policy used for the live event preview. This value is specified at creation time and cannot be updated. 8028 StreamingPolicyName *string `json:"streamingPolicyName,omitempty"` 8029 // AlternativeMediaID - An alternative media identifier associated with the streaming locator created for the preview. This value is specified at creation time and cannot be updated. The identifier can be used in the CustomLicenseAcquisitionUrlTemplate or the CustomKeyAcquisitionUrlTemplate of the StreamingPolicy specified in the StreamingPolicyName field. 8030 AlternativeMediaID *string `json:"alternativeMediaId,omitempty"` 8031} 8032 8033// LiveEventPreviewAccessControl the IP access control for the live event preview endpoint. 8034type LiveEventPreviewAccessControl struct { 8035 // IP - The IP access control properties. 8036 IP *IPAccessControl `json:"ip,omitempty"` 8037} 8038 8039// LiveEventProperties the live event properties. 8040type LiveEventProperties struct { 8041 // Description - A description for the live event. 8042 Description *string `json:"description,omitempty"` 8043 // Input - Live event input settings. It defines how the live event receives input from a contribution encoder. 8044 Input *LiveEventInput `json:"input,omitempty"` 8045 // Preview - Live event preview settings. Preview allows live event producers to preview the live streaming content without creating any live output. 8046 Preview *LiveEventPreview `json:"preview,omitempty"` 8047 // Encoding - Encoding settings for the live event. It configures whether a live encoder is used for the live event and settings for the live encoder if it is used. 8048 Encoding *LiveEventEncoding `json:"encoding,omitempty"` 8049 // Transcriptions - Live transcription settings for the live event. See https://go.microsoft.com/fwlink/?linkid=2133742 for more information about the live transcription feature. 8050 Transcriptions *[]LiveEventTranscription `json:"transcriptions,omitempty"` 8051 // ProvisioningState - READ-ONLY; The provisioning state of the live event. 8052 ProvisioningState *string `json:"provisioningState,omitempty"` 8053 // ResourceState - READ-ONLY; The resource state of the live event. See https://go.microsoft.com/fwlink/?linkid=2139012 for more information. Possible values include: 'LiveEventResourceStateStopped', 'LiveEventResourceStateAllocating', 'LiveEventResourceStateStandBy', 'LiveEventResourceStateStarting', 'LiveEventResourceStateRunning', 'LiveEventResourceStateStopping', 'LiveEventResourceStateDeleting' 8054 ResourceState LiveEventResourceState `json:"resourceState,omitempty"` 8055 // CrossSiteAccessPolicies - Live event cross site access policies. 8056 CrossSiteAccessPolicies *CrossSiteAccessPolicies `json:"crossSiteAccessPolicies,omitempty"` 8057 // UseStaticHostname - Specifies whether a static hostname would be assigned to the live event preview and ingest endpoints. This value can only be updated if the live event is in Standby state 8058 UseStaticHostname *bool `json:"useStaticHostname,omitempty"` 8059 // HostnamePrefix - When useStaticHostname is set to true, the hostnamePrefix specifies the first part of the hostname assigned to the live event preview and ingest endpoints. The final hostname would be a combination of this prefix, the media service account name and a short code for the Azure Media Services data center. 8060 HostnamePrefix *string `json:"hostnamePrefix,omitempty"` 8061 // StreamOptions - The options to use for the LiveEvent. This value is specified at creation time and cannot be updated. The valid values for the array entry values are 'Default' and 'LowLatency'. 8062 StreamOptions *[]StreamOptionsFlag `json:"streamOptions,omitempty"` 8063 // Created - READ-ONLY; The creation time for the live event 8064 Created *date.Time `json:"created,omitempty"` 8065 // LastModified - READ-ONLY; The last modified time of the live event. 8066 LastModified *date.Time `json:"lastModified,omitempty"` 8067} 8068 8069// MarshalJSON is the custom marshaler for LiveEventProperties. 8070func (lep LiveEventProperties) MarshalJSON() ([]byte, error) { 8071 objectMap := make(map[string]interface{}) 8072 if lep.Description != nil { 8073 objectMap["description"] = lep.Description 8074 } 8075 if lep.Input != nil { 8076 objectMap["input"] = lep.Input 8077 } 8078 if lep.Preview != nil { 8079 objectMap["preview"] = lep.Preview 8080 } 8081 if lep.Encoding != nil { 8082 objectMap["encoding"] = lep.Encoding 8083 } 8084 if lep.Transcriptions != nil { 8085 objectMap["transcriptions"] = lep.Transcriptions 8086 } 8087 if lep.CrossSiteAccessPolicies != nil { 8088 objectMap["crossSiteAccessPolicies"] = lep.CrossSiteAccessPolicies 8089 } 8090 if lep.UseStaticHostname != nil { 8091 objectMap["useStaticHostname"] = lep.UseStaticHostname 8092 } 8093 if lep.HostnamePrefix != nil { 8094 objectMap["hostnamePrefix"] = lep.HostnamePrefix 8095 } 8096 if lep.StreamOptions != nil { 8097 objectMap["streamOptions"] = lep.StreamOptions 8098 } 8099 return json.Marshal(objectMap) 8100} 8101 8102// LiveEventsAllocateFuture an abstraction for monitoring and retrieving the results of a long-running 8103// operation. 8104type LiveEventsAllocateFuture struct { 8105 azure.FutureAPI 8106 // Result returns the result of the asynchronous operation. 8107 // If the operation has not completed it will return an error. 8108 Result func(LiveEventsClient) (autorest.Response, error) 8109} 8110 8111// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8112func (future *LiveEventsAllocateFuture) UnmarshalJSON(body []byte) error { 8113 var azFuture azure.Future 8114 if err := json.Unmarshal(body, &azFuture); err != nil { 8115 return err 8116 } 8117 future.FutureAPI = &azFuture 8118 future.Result = future.result 8119 return nil 8120} 8121 8122// result is the default implementation for LiveEventsAllocateFuture.Result. 8123func (future *LiveEventsAllocateFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8124 var done bool 8125 done, err = future.DoneWithContext(context.Background(), client) 8126 if err != nil { 8127 err = autorest.NewErrorWithError(err, "media.LiveEventsAllocateFuture", "Result", future.Response(), "Polling failure") 8128 return 8129 } 8130 if !done { 8131 ar.Response = future.Response() 8132 err = azure.NewAsyncOpIncompleteError("media.LiveEventsAllocateFuture") 8133 return 8134 } 8135 ar.Response = future.Response() 8136 return 8137} 8138 8139// LiveEventsCreateFuture an abstraction for monitoring and retrieving the results of a long-running 8140// operation. 8141type LiveEventsCreateFuture struct { 8142 azure.FutureAPI 8143 // Result returns the result of the asynchronous operation. 8144 // If the operation has not completed it will return an error. 8145 Result func(LiveEventsClient) (LiveEvent, error) 8146} 8147 8148// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8149func (future *LiveEventsCreateFuture) UnmarshalJSON(body []byte) error { 8150 var azFuture azure.Future 8151 if err := json.Unmarshal(body, &azFuture); err != nil { 8152 return err 8153 } 8154 future.FutureAPI = &azFuture 8155 future.Result = future.result 8156 return nil 8157} 8158 8159// result is the default implementation for LiveEventsCreateFuture.Result. 8160func (future *LiveEventsCreateFuture) result(client LiveEventsClient) (le LiveEvent, err error) { 8161 var done bool 8162 done, err = future.DoneWithContext(context.Background(), client) 8163 if err != nil { 8164 err = autorest.NewErrorWithError(err, "media.LiveEventsCreateFuture", "Result", future.Response(), "Polling failure") 8165 return 8166 } 8167 if !done { 8168 le.Response.Response = future.Response() 8169 err = azure.NewAsyncOpIncompleteError("media.LiveEventsCreateFuture") 8170 return 8171 } 8172 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 8173 if le.Response.Response, err = future.GetResult(sender); err == nil && le.Response.Response.StatusCode != http.StatusNoContent { 8174 le, err = client.CreateResponder(le.Response.Response) 8175 if err != nil { 8176 err = autorest.NewErrorWithError(err, "media.LiveEventsCreateFuture", "Result", le.Response.Response, "Failure responding to request") 8177 } 8178 } 8179 return 8180} 8181 8182// LiveEventsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running 8183// operation. 8184type LiveEventsDeleteFuture struct { 8185 azure.FutureAPI 8186 // Result returns the result of the asynchronous operation. 8187 // If the operation has not completed it will return an error. 8188 Result func(LiveEventsClient) (autorest.Response, error) 8189} 8190 8191// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8192func (future *LiveEventsDeleteFuture) UnmarshalJSON(body []byte) error { 8193 var azFuture azure.Future 8194 if err := json.Unmarshal(body, &azFuture); err != nil { 8195 return err 8196 } 8197 future.FutureAPI = &azFuture 8198 future.Result = future.result 8199 return nil 8200} 8201 8202// result is the default implementation for LiveEventsDeleteFuture.Result. 8203func (future *LiveEventsDeleteFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8204 var done bool 8205 done, err = future.DoneWithContext(context.Background(), client) 8206 if err != nil { 8207 err = autorest.NewErrorWithError(err, "media.LiveEventsDeleteFuture", "Result", future.Response(), "Polling failure") 8208 return 8209 } 8210 if !done { 8211 ar.Response = future.Response() 8212 err = azure.NewAsyncOpIncompleteError("media.LiveEventsDeleteFuture") 8213 return 8214 } 8215 ar.Response = future.Response() 8216 return 8217} 8218 8219// LiveEventsResetFuture an abstraction for monitoring and retrieving the results of a long-running 8220// operation. 8221type LiveEventsResetFuture struct { 8222 azure.FutureAPI 8223 // Result returns the result of the asynchronous operation. 8224 // If the operation has not completed it will return an error. 8225 Result func(LiveEventsClient) (autorest.Response, error) 8226} 8227 8228// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8229func (future *LiveEventsResetFuture) UnmarshalJSON(body []byte) error { 8230 var azFuture azure.Future 8231 if err := json.Unmarshal(body, &azFuture); err != nil { 8232 return err 8233 } 8234 future.FutureAPI = &azFuture 8235 future.Result = future.result 8236 return nil 8237} 8238 8239// result is the default implementation for LiveEventsResetFuture.Result. 8240func (future *LiveEventsResetFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8241 var done bool 8242 done, err = future.DoneWithContext(context.Background(), client) 8243 if err != nil { 8244 err = autorest.NewErrorWithError(err, "media.LiveEventsResetFuture", "Result", future.Response(), "Polling failure") 8245 return 8246 } 8247 if !done { 8248 ar.Response = future.Response() 8249 err = azure.NewAsyncOpIncompleteError("media.LiveEventsResetFuture") 8250 return 8251 } 8252 ar.Response = future.Response() 8253 return 8254} 8255 8256// LiveEventsStartFuture an abstraction for monitoring and retrieving the results of a long-running 8257// operation. 8258type LiveEventsStartFuture struct { 8259 azure.FutureAPI 8260 // Result returns the result of the asynchronous operation. 8261 // If the operation has not completed it will return an error. 8262 Result func(LiveEventsClient) (autorest.Response, error) 8263} 8264 8265// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8266func (future *LiveEventsStartFuture) UnmarshalJSON(body []byte) error { 8267 var azFuture azure.Future 8268 if err := json.Unmarshal(body, &azFuture); err != nil { 8269 return err 8270 } 8271 future.FutureAPI = &azFuture 8272 future.Result = future.result 8273 return nil 8274} 8275 8276// result is the default implementation for LiveEventsStartFuture.Result. 8277func (future *LiveEventsStartFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8278 var done bool 8279 done, err = future.DoneWithContext(context.Background(), client) 8280 if err != nil { 8281 err = autorest.NewErrorWithError(err, "media.LiveEventsStartFuture", "Result", future.Response(), "Polling failure") 8282 return 8283 } 8284 if !done { 8285 ar.Response = future.Response() 8286 err = azure.NewAsyncOpIncompleteError("media.LiveEventsStartFuture") 8287 return 8288 } 8289 ar.Response = future.Response() 8290 return 8291} 8292 8293// LiveEventsStopFuture an abstraction for monitoring and retrieving the results of a long-running 8294// operation. 8295type LiveEventsStopFuture struct { 8296 azure.FutureAPI 8297 // Result returns the result of the asynchronous operation. 8298 // If the operation has not completed it will return an error. 8299 Result func(LiveEventsClient) (autorest.Response, error) 8300} 8301 8302// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8303func (future *LiveEventsStopFuture) UnmarshalJSON(body []byte) error { 8304 var azFuture azure.Future 8305 if err := json.Unmarshal(body, &azFuture); err != nil { 8306 return err 8307 } 8308 future.FutureAPI = &azFuture 8309 future.Result = future.result 8310 return nil 8311} 8312 8313// result is the default implementation for LiveEventsStopFuture.Result. 8314func (future *LiveEventsStopFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8315 var done bool 8316 done, err = future.DoneWithContext(context.Background(), client) 8317 if err != nil { 8318 err = autorest.NewErrorWithError(err, "media.LiveEventsStopFuture", "Result", future.Response(), "Polling failure") 8319 return 8320 } 8321 if !done { 8322 ar.Response = future.Response() 8323 err = azure.NewAsyncOpIncompleteError("media.LiveEventsStopFuture") 8324 return 8325 } 8326 ar.Response = future.Response() 8327 return 8328} 8329 8330// LiveEventsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running 8331// operation. 8332type LiveEventsUpdateFuture struct { 8333 azure.FutureAPI 8334 // Result returns the result of the asynchronous operation. 8335 // If the operation has not completed it will return an error. 8336 Result func(LiveEventsClient) (LiveEvent, error) 8337} 8338 8339// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8340func (future *LiveEventsUpdateFuture) UnmarshalJSON(body []byte) error { 8341 var azFuture azure.Future 8342 if err := json.Unmarshal(body, &azFuture); err != nil { 8343 return err 8344 } 8345 future.FutureAPI = &azFuture 8346 future.Result = future.result 8347 return nil 8348} 8349 8350// result is the default implementation for LiveEventsUpdateFuture.Result. 8351func (future *LiveEventsUpdateFuture) result(client LiveEventsClient) (le LiveEvent, err error) { 8352 var done bool 8353 done, err = future.DoneWithContext(context.Background(), client) 8354 if err != nil { 8355 err = autorest.NewErrorWithError(err, "media.LiveEventsUpdateFuture", "Result", future.Response(), "Polling failure") 8356 return 8357 } 8358 if !done { 8359 le.Response.Response = future.Response() 8360 err = azure.NewAsyncOpIncompleteError("media.LiveEventsUpdateFuture") 8361 return 8362 } 8363 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 8364 if le.Response.Response, err = future.GetResult(sender); err == nil && le.Response.Response.StatusCode != http.StatusNoContent { 8365 le, err = client.UpdateResponder(le.Response.Response) 8366 if err != nil { 8367 err = autorest.NewErrorWithError(err, "media.LiveEventsUpdateFuture", "Result", le.Response.Response, "Failure responding to request") 8368 } 8369 } 8370 return 8371} 8372 8373// LiveEventTranscription describes the transcription tracks in the output of a live event, generated using 8374// speech-to-text transcription. This property is reserved for future use, any value set on this property 8375// will be ignored. 8376type LiveEventTranscription struct { 8377 // Language - Specifies the language (locale) to be used for speech-to-text transcription – it should match the spoken language in the audio track. The value should be in BCP-47 format (e.g: 'en-US'). See https://go.microsoft.com/fwlink/?linkid=2133742 for more information about the live transcription feature and the list of supported languages. 8378 Language *string `json:"language,omitempty"` 8379 // InputTrackSelection - Provides a mechanism to select the audio track in the input live feed, to which speech-to-text transcription is applied. This property is reserved for future use, any value set on this property will be ignored. 8380 InputTrackSelection *[]LiveEventInputTrackSelection `json:"inputTrackSelection,omitempty"` 8381 // OutputTranscriptionTrack - Describes a transcription track in the output of a live event, generated using speech-to-text transcription. This property is reserved for future use, any value set on this property will be ignored. 8382 OutputTranscriptionTrack *LiveEventOutputTranscriptionTrack `json:"outputTranscriptionTrack,omitempty"` 8383} 8384 8385// LiveOutput the Live Output. 8386type LiveOutput struct { 8387 autorest.Response `json:"-"` 8388 // LiveOutputProperties - Live output properties. 8389 *LiveOutputProperties `json:"properties,omitempty"` 8390 // SystemData - READ-ONLY; The system metadata relating to this resource. 8391 SystemData *SystemData `json:"systemData,omitempty"` 8392 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 8393 ID *string `json:"id,omitempty"` 8394 // Name - READ-ONLY; The name of the resource 8395 Name *string `json:"name,omitempty"` 8396 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 8397 Type *string `json:"type,omitempty"` 8398} 8399 8400// MarshalJSON is the custom marshaler for LiveOutput. 8401func (lo LiveOutput) MarshalJSON() ([]byte, error) { 8402 objectMap := make(map[string]interface{}) 8403 if lo.LiveOutputProperties != nil { 8404 objectMap["properties"] = lo.LiveOutputProperties 8405 } 8406 return json.Marshal(objectMap) 8407} 8408 8409// UnmarshalJSON is the custom unmarshaler for LiveOutput struct. 8410func (lo *LiveOutput) UnmarshalJSON(body []byte) error { 8411 var m map[string]*json.RawMessage 8412 err := json.Unmarshal(body, &m) 8413 if err != nil { 8414 return err 8415 } 8416 for k, v := range m { 8417 switch k { 8418 case "properties": 8419 if v != nil { 8420 var liveOutputProperties LiveOutputProperties 8421 err = json.Unmarshal(*v, &liveOutputProperties) 8422 if err != nil { 8423 return err 8424 } 8425 lo.LiveOutputProperties = &liveOutputProperties 8426 } 8427 case "systemData": 8428 if v != nil { 8429 var systemData SystemData 8430 err = json.Unmarshal(*v, &systemData) 8431 if err != nil { 8432 return err 8433 } 8434 lo.SystemData = &systemData 8435 } 8436 case "id": 8437 if v != nil { 8438 var ID string 8439 err = json.Unmarshal(*v, &ID) 8440 if err != nil { 8441 return err 8442 } 8443 lo.ID = &ID 8444 } 8445 case "name": 8446 if v != nil { 8447 var name string 8448 err = json.Unmarshal(*v, &name) 8449 if err != nil { 8450 return err 8451 } 8452 lo.Name = &name 8453 } 8454 case "type": 8455 if v != nil { 8456 var typeVar string 8457 err = json.Unmarshal(*v, &typeVar) 8458 if err != nil { 8459 return err 8460 } 8461 lo.Type = &typeVar 8462 } 8463 } 8464 } 8465 8466 return nil 8467} 8468 8469// LiveOutputListResult the LiveOutput list result. 8470type LiveOutputListResult struct { 8471 autorest.Response `json:"-"` 8472 // Value - The result of the List LiveOutput operation. 8473 Value *[]LiveOutput `json:"value,omitempty"` 8474 // OdataCount - The number of result. 8475 OdataCount *int32 `json:"@odata.count,omitempty"` 8476 // OdataNextLink - The link to the next set of results. Not empty if value contains incomplete list of live outputs. 8477 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 8478} 8479 8480// LiveOutputListResultIterator provides access to a complete listing of LiveOutput values. 8481type LiveOutputListResultIterator struct { 8482 i int 8483 page LiveOutputListResultPage 8484} 8485 8486// NextWithContext advances to the next value. If there was an error making 8487// the request the iterator does not advance and the error is returned. 8488func (iter *LiveOutputListResultIterator) NextWithContext(ctx context.Context) (err error) { 8489 if tracing.IsEnabled() { 8490 ctx = tracing.StartSpan(ctx, fqdn+"/LiveOutputListResultIterator.NextWithContext") 8491 defer func() { 8492 sc := -1 8493 if iter.Response().Response.Response != nil { 8494 sc = iter.Response().Response.Response.StatusCode 8495 } 8496 tracing.EndSpan(ctx, sc, err) 8497 }() 8498 } 8499 iter.i++ 8500 if iter.i < len(iter.page.Values()) { 8501 return nil 8502 } 8503 err = iter.page.NextWithContext(ctx) 8504 if err != nil { 8505 iter.i-- 8506 return err 8507 } 8508 iter.i = 0 8509 return nil 8510} 8511 8512// Next advances to the next value. If there was an error making 8513// the request the iterator does not advance and the error is returned. 8514// Deprecated: Use NextWithContext() instead. 8515func (iter *LiveOutputListResultIterator) Next() error { 8516 return iter.NextWithContext(context.Background()) 8517} 8518 8519// NotDone returns true if the enumeration should be started or is not yet complete. 8520func (iter LiveOutputListResultIterator) NotDone() bool { 8521 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 8522} 8523 8524// Response returns the raw server response from the last page request. 8525func (iter LiveOutputListResultIterator) Response() LiveOutputListResult { 8526 return iter.page.Response() 8527} 8528 8529// Value returns the current value or a zero-initialized value if the 8530// iterator has advanced beyond the end of the collection. 8531func (iter LiveOutputListResultIterator) Value() LiveOutput { 8532 if !iter.page.NotDone() { 8533 return LiveOutput{} 8534 } 8535 return iter.page.Values()[iter.i] 8536} 8537 8538// Creates a new instance of the LiveOutputListResultIterator type. 8539func NewLiveOutputListResultIterator(page LiveOutputListResultPage) LiveOutputListResultIterator { 8540 return LiveOutputListResultIterator{page: page} 8541} 8542 8543// IsEmpty returns true if the ListResult contains no values. 8544func (lolr LiveOutputListResult) IsEmpty() bool { 8545 return lolr.Value == nil || len(*lolr.Value) == 0 8546} 8547 8548// hasNextLink returns true if the NextLink is not empty. 8549func (lolr LiveOutputListResult) hasNextLink() bool { 8550 return lolr.OdataNextLink != nil && len(*lolr.OdataNextLink) != 0 8551} 8552 8553// liveOutputListResultPreparer prepares a request to retrieve the next set of results. 8554// It returns nil if no more results exist. 8555func (lolr LiveOutputListResult) liveOutputListResultPreparer(ctx context.Context) (*http.Request, error) { 8556 if !lolr.hasNextLink() { 8557 return nil, nil 8558 } 8559 return autorest.Prepare((&http.Request{}).WithContext(ctx), 8560 autorest.AsJSON(), 8561 autorest.AsGet(), 8562 autorest.WithBaseURL(to.String(lolr.OdataNextLink))) 8563} 8564 8565// LiveOutputListResultPage contains a page of LiveOutput values. 8566type LiveOutputListResultPage struct { 8567 fn func(context.Context, LiveOutputListResult) (LiveOutputListResult, error) 8568 lolr LiveOutputListResult 8569} 8570 8571// NextWithContext advances to the next page of values. If there was an error making 8572// the request the page does not advance and the error is returned. 8573func (page *LiveOutputListResultPage) NextWithContext(ctx context.Context) (err error) { 8574 if tracing.IsEnabled() { 8575 ctx = tracing.StartSpan(ctx, fqdn+"/LiveOutputListResultPage.NextWithContext") 8576 defer func() { 8577 sc := -1 8578 if page.Response().Response.Response != nil { 8579 sc = page.Response().Response.Response.StatusCode 8580 } 8581 tracing.EndSpan(ctx, sc, err) 8582 }() 8583 } 8584 for { 8585 next, err := page.fn(ctx, page.lolr) 8586 if err != nil { 8587 return err 8588 } 8589 page.lolr = next 8590 if !next.hasNextLink() || !next.IsEmpty() { 8591 break 8592 } 8593 } 8594 return nil 8595} 8596 8597// Next advances to the next page of values. If there was an error making 8598// the request the page does not advance and the error is returned. 8599// Deprecated: Use NextWithContext() instead. 8600func (page *LiveOutputListResultPage) Next() error { 8601 return page.NextWithContext(context.Background()) 8602} 8603 8604// NotDone returns true if the page enumeration should be started or is not yet complete. 8605func (page LiveOutputListResultPage) NotDone() bool { 8606 return !page.lolr.IsEmpty() 8607} 8608 8609// Response returns the raw server response from the last page request. 8610func (page LiveOutputListResultPage) Response() LiveOutputListResult { 8611 return page.lolr 8612} 8613 8614// Values returns the slice of values for the current page or nil if there are no values. 8615func (page LiveOutputListResultPage) Values() []LiveOutput { 8616 if page.lolr.IsEmpty() { 8617 return nil 8618 } 8619 return *page.lolr.Value 8620} 8621 8622// Creates a new instance of the LiveOutputListResultPage type. 8623func NewLiveOutputListResultPage(cur LiveOutputListResult, getNextPage func(context.Context, LiveOutputListResult) (LiveOutputListResult, error)) LiveOutputListResultPage { 8624 return LiveOutputListResultPage{ 8625 fn: getNextPage, 8626 lolr: cur, 8627 } 8628} 8629 8630// LiveOutputProperties the JSON object that contains the properties required to create a live output. 8631type LiveOutputProperties struct { 8632 // Description - The description of the live output. 8633 Description *string `json:"description,omitempty"` 8634 // AssetName - The asset that the live output will write to. 8635 AssetName *string `json:"assetName,omitempty"` 8636 // ArchiveWindowLength - ISO 8601 time between 1 minute to 25 hours to indicate the maximum content length that can be archived in the asset for this live output. This also sets the maximum content length for the rewind window. For example, use PT1H30M to indicate 1 hour and 30 minutes of archive window. 8637 ArchiveWindowLength *string `json:"archiveWindowLength,omitempty"` 8638 // ManifestName - The manifest file name. If not provided, the service will generate one automatically. 8639 ManifestName *string `json:"manifestName,omitempty"` 8640 // Hls - HTTP Live Streaming (HLS) packing setting for the live output. 8641 Hls *Hls `json:"hls,omitempty"` 8642 // OutputSnapTime - The initial timestamp that the live output will start at, any content before this value will not be archived. 8643 OutputSnapTime *int64 `json:"outputSnapTime,omitempty"` 8644 // Created - READ-ONLY; The creation time the live output. 8645 Created *date.Time `json:"created,omitempty"` 8646 // LastModified - READ-ONLY; The time the live output was last modified. 8647 LastModified *date.Time `json:"lastModified,omitempty"` 8648 // ProvisioningState - READ-ONLY; The provisioning state of the live output. 8649 ProvisioningState *string `json:"provisioningState,omitempty"` 8650 // ResourceState - READ-ONLY; The resource state of the live output. Possible values include: 'LiveOutputResourceStateCreating', 'LiveOutputResourceStateRunning', 'LiveOutputResourceStateDeleting' 8651 ResourceState LiveOutputResourceState `json:"resourceState,omitempty"` 8652} 8653 8654// MarshalJSON is the custom marshaler for LiveOutputProperties. 8655func (lop LiveOutputProperties) MarshalJSON() ([]byte, error) { 8656 objectMap := make(map[string]interface{}) 8657 if lop.Description != nil { 8658 objectMap["description"] = lop.Description 8659 } 8660 if lop.AssetName != nil { 8661 objectMap["assetName"] = lop.AssetName 8662 } 8663 if lop.ArchiveWindowLength != nil { 8664 objectMap["archiveWindowLength"] = lop.ArchiveWindowLength 8665 } 8666 if lop.ManifestName != nil { 8667 objectMap["manifestName"] = lop.ManifestName 8668 } 8669 if lop.Hls != nil { 8670 objectMap["hls"] = lop.Hls 8671 } 8672 if lop.OutputSnapTime != nil { 8673 objectMap["outputSnapTime"] = lop.OutputSnapTime 8674 } 8675 return json.Marshal(objectMap) 8676} 8677 8678// LiveOutputsCreateFuture an abstraction for monitoring and retrieving the results of a long-running 8679// operation. 8680type LiveOutputsCreateFuture struct { 8681 azure.FutureAPI 8682 // Result returns the result of the asynchronous operation. 8683 // If the operation has not completed it will return an error. 8684 Result func(LiveOutputsClient) (LiveOutput, error) 8685} 8686 8687// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8688func (future *LiveOutputsCreateFuture) UnmarshalJSON(body []byte) error { 8689 var azFuture azure.Future 8690 if err := json.Unmarshal(body, &azFuture); err != nil { 8691 return err 8692 } 8693 future.FutureAPI = &azFuture 8694 future.Result = future.result 8695 return nil 8696} 8697 8698// result is the default implementation for LiveOutputsCreateFuture.Result. 8699func (future *LiveOutputsCreateFuture) result(client LiveOutputsClient) (lo LiveOutput, err error) { 8700 var done bool 8701 done, err = future.DoneWithContext(context.Background(), client) 8702 if err != nil { 8703 err = autorest.NewErrorWithError(err, "media.LiveOutputsCreateFuture", "Result", future.Response(), "Polling failure") 8704 return 8705 } 8706 if !done { 8707 lo.Response.Response = future.Response() 8708 err = azure.NewAsyncOpIncompleteError("media.LiveOutputsCreateFuture") 8709 return 8710 } 8711 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 8712 if lo.Response.Response, err = future.GetResult(sender); err == nil && lo.Response.Response.StatusCode != http.StatusNoContent { 8713 lo, err = client.CreateResponder(lo.Response.Response) 8714 if err != nil { 8715 err = autorest.NewErrorWithError(err, "media.LiveOutputsCreateFuture", "Result", lo.Response.Response, "Failure responding to request") 8716 } 8717 } 8718 return 8719} 8720 8721// LiveOutputsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running 8722// operation. 8723type LiveOutputsDeleteFuture struct { 8724 azure.FutureAPI 8725 // Result returns the result of the asynchronous operation. 8726 // If the operation has not completed it will return an error. 8727 Result func(LiveOutputsClient) (autorest.Response, error) 8728} 8729 8730// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8731func (future *LiveOutputsDeleteFuture) UnmarshalJSON(body []byte) error { 8732 var azFuture azure.Future 8733 if err := json.Unmarshal(body, &azFuture); err != nil { 8734 return err 8735 } 8736 future.FutureAPI = &azFuture 8737 future.Result = future.result 8738 return nil 8739} 8740 8741// result is the default implementation for LiveOutputsDeleteFuture.Result. 8742func (future *LiveOutputsDeleteFuture) result(client LiveOutputsClient) (ar autorest.Response, err error) { 8743 var done bool 8744 done, err = future.DoneWithContext(context.Background(), client) 8745 if err != nil { 8746 err = autorest.NewErrorWithError(err, "media.LiveOutputsDeleteFuture", "Result", future.Response(), "Polling failure") 8747 return 8748 } 8749 if !done { 8750 ar.Response = future.Response() 8751 err = azure.NewAsyncOpIncompleteError("media.LiveOutputsDeleteFuture") 8752 return 8753 } 8754 ar.Response = future.Response() 8755 return 8756} 8757 8758// LogSpecification a diagnostic log emitted by service. 8759type LogSpecification struct { 8760 // Name - READ-ONLY; The diagnostic log category name. 8761 Name *string `json:"name,omitempty"` 8762 // DisplayName - READ-ONLY; The diagnostic log category display name. 8763 DisplayName *string `json:"displayName,omitempty"` 8764 // BlobDuration - READ-ONLY; The time range for requests in each blob. 8765 BlobDuration *string `json:"blobDuration,omitempty"` 8766} 8767 8768// MarshalJSON is the custom marshaler for LogSpecification. 8769func (ls LogSpecification) MarshalJSON() ([]byte, error) { 8770 objectMap := make(map[string]interface{}) 8771 return json.Marshal(objectMap) 8772} 8773 8774// MetricDimension a metric dimension. 8775type MetricDimension struct { 8776 // Name - READ-ONLY; The metric dimension name. 8777 Name *string `json:"name,omitempty"` 8778 // DisplayName - READ-ONLY; The display name for the dimension. 8779 DisplayName *string `json:"displayName,omitempty"` 8780 // ToBeExportedForShoebox - READ-ONLY; Whether to export metric to shoebox. 8781 ToBeExportedForShoebox *bool `json:"toBeExportedForShoebox,omitempty"` 8782} 8783 8784// MarshalJSON is the custom marshaler for MetricDimension. 8785func (md MetricDimension) MarshalJSON() ([]byte, error) { 8786 objectMap := make(map[string]interface{}) 8787 return json.Marshal(objectMap) 8788} 8789 8790// MetricSpecification a metric emitted by service. 8791type MetricSpecification struct { 8792 // Name - READ-ONLY; The metric name. 8793 Name *string `json:"name,omitempty"` 8794 // DisplayName - READ-ONLY; The metric display name. 8795 DisplayName *string `json:"displayName,omitempty"` 8796 // DisplayDescription - READ-ONLY; The metric display description. 8797 DisplayDescription *string `json:"displayDescription,omitempty"` 8798 // Unit - READ-ONLY; The metric unit. Possible values include: 'MetricUnitBytes', 'MetricUnitCount', 'MetricUnitMilliseconds' 8799 Unit MetricUnit `json:"unit,omitempty"` 8800 // AggregationType - READ-ONLY; The metric aggregation type. Possible values include: 'MetricAggregationTypeAverage', 'MetricAggregationTypeCount', 'MetricAggregationTypeTotal' 8801 AggregationType MetricAggregationType `json:"aggregationType,omitempty"` 8802 // LockAggregationType - READ-ONLY; The metric lock aggregation type. Possible values include: 'MetricAggregationTypeAverage', 'MetricAggregationTypeCount', 'MetricAggregationTypeTotal' 8803 LockAggregationType MetricAggregationType `json:"lockAggregationType,omitempty"` 8804 // SupportedAggregationTypes - Supported aggregation types. 8805 SupportedAggregationTypes *[]string `json:"supportedAggregationTypes,omitempty"` 8806 // Dimensions - READ-ONLY; The metric dimensions. 8807 Dimensions *[]MetricDimension `json:"dimensions,omitempty"` 8808 // EnableRegionalMdmAccount - READ-ONLY; Indicates whether regional MDM account is enabled. 8809 EnableRegionalMdmAccount *bool `json:"enableRegionalMdmAccount,omitempty"` 8810 // SourceMdmAccount - READ-ONLY; The source MDM account. 8811 SourceMdmAccount *string `json:"sourceMdmAccount,omitempty"` 8812 // SourceMdmNamespace - READ-ONLY; The source MDM namespace. 8813 SourceMdmNamespace *string `json:"sourceMdmNamespace,omitempty"` 8814 // SupportedTimeGrainTypes - READ-ONLY; The supported time grain types. 8815 SupportedTimeGrainTypes *[]string `json:"supportedTimeGrainTypes,omitempty"` 8816} 8817 8818// MarshalJSON is the custom marshaler for MetricSpecification. 8819func (ms MetricSpecification) MarshalJSON() ([]byte, error) { 8820 objectMap := make(map[string]interface{}) 8821 if ms.SupportedAggregationTypes != nil { 8822 objectMap["supportedAggregationTypes"] = ms.SupportedAggregationTypes 8823 } 8824 return json.Marshal(objectMap) 8825} 8826 8827// Mp4Format describes the properties for an output ISO MP4 file. 8828type Mp4Format struct { 8829 // OutputFiles - The list of output files to produce. Each entry in the list is a set of audio and video layer labels to be muxed together . 8830 OutputFiles *[]OutputFile `json:"outputFiles,omitempty"` 8831 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 8832 FilenamePattern *string `json:"filenamePattern,omitempty"` 8833 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 8834 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 8835} 8836 8837// MarshalJSON is the custom marshaler for Mp4Format. 8838func (m4f Mp4Format) MarshalJSON() ([]byte, error) { 8839 m4f.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format 8840 objectMap := make(map[string]interface{}) 8841 if m4f.OutputFiles != nil { 8842 objectMap["outputFiles"] = m4f.OutputFiles 8843 } 8844 if m4f.FilenamePattern != nil { 8845 objectMap["filenamePattern"] = m4f.FilenamePattern 8846 } 8847 if m4f.OdataType != "" { 8848 objectMap["@odata.type"] = m4f.OdataType 8849 } 8850 return json.Marshal(objectMap) 8851} 8852 8853// AsImageFormat is the BasicFormat implementation for Mp4Format. 8854func (m4f Mp4Format) AsImageFormat() (*ImageFormat, bool) { 8855 return nil, false 8856} 8857 8858// AsBasicImageFormat is the BasicFormat implementation for Mp4Format. 8859func (m4f Mp4Format) AsBasicImageFormat() (BasicImageFormat, bool) { 8860 return nil, false 8861} 8862 8863// AsJpgFormat is the BasicFormat implementation for Mp4Format. 8864func (m4f Mp4Format) AsJpgFormat() (*JpgFormat, bool) { 8865 return nil, false 8866} 8867 8868// AsPngFormat is the BasicFormat implementation for Mp4Format. 8869func (m4f Mp4Format) AsPngFormat() (*PngFormat, bool) { 8870 return nil, false 8871} 8872 8873// AsMultiBitrateFormat is the BasicFormat implementation for Mp4Format. 8874func (m4f Mp4Format) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 8875 return nil, false 8876} 8877 8878// AsBasicMultiBitrateFormat is the BasicFormat implementation for Mp4Format. 8879func (m4f Mp4Format) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 8880 return &m4f, true 8881} 8882 8883// AsMp4Format is the BasicFormat implementation for Mp4Format. 8884func (m4f Mp4Format) AsMp4Format() (*Mp4Format, bool) { 8885 return &m4f, true 8886} 8887 8888// AsTransportStreamFormat is the BasicFormat implementation for Mp4Format. 8889func (m4f Mp4Format) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 8890 return nil, false 8891} 8892 8893// AsFormat is the BasicFormat implementation for Mp4Format. 8894func (m4f Mp4Format) AsFormat() (*Format, bool) { 8895 return nil, false 8896} 8897 8898// AsBasicFormat is the BasicFormat implementation for Mp4Format. 8899func (m4f Mp4Format) AsBasicFormat() (BasicFormat, bool) { 8900 return &m4f, true 8901} 8902 8903// BasicMultiBitrateFormat describes the properties for producing a collection of GOP aligned multi-bitrate files. The 8904// default behavior is to produce one output file for each video layer which is muxed together with all the audios. The 8905// exact output files produced can be controlled by specifying the outputFiles collection. 8906type BasicMultiBitrateFormat interface { 8907 AsMp4Format() (*Mp4Format, bool) 8908 AsTransportStreamFormat() (*TransportStreamFormat, bool) 8909 AsMultiBitrateFormat() (*MultiBitrateFormat, bool) 8910} 8911 8912// MultiBitrateFormat describes the properties for producing a collection of GOP aligned multi-bitrate files. 8913// The default behavior is to produce one output file for each video layer which is muxed together with all the 8914// audios. The exact output files produced can be controlled by specifying the outputFiles collection. 8915type MultiBitrateFormat struct { 8916 // OutputFiles - The list of output files to produce. Each entry in the list is a set of audio and video layer labels to be muxed together . 8917 OutputFiles *[]OutputFile `json:"outputFiles,omitempty"` 8918 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 8919 FilenamePattern *string `json:"filenamePattern,omitempty"` 8920 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 8921 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 8922} 8923 8924func unmarshalBasicMultiBitrateFormat(body []byte) (BasicMultiBitrateFormat, error) { 8925 var m map[string]interface{} 8926 err := json.Unmarshal(body, &m) 8927 if err != nil { 8928 return nil, err 8929 } 8930 8931 switch m["@odata.type"] { 8932 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format): 8933 var m4f Mp4Format 8934 err := json.Unmarshal(body, &m4f) 8935 return m4f, err 8936 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat): 8937 var tsf TransportStreamFormat 8938 err := json.Unmarshal(body, &tsf) 8939 return tsf, err 8940 default: 8941 var mbf MultiBitrateFormat 8942 err := json.Unmarshal(body, &mbf) 8943 return mbf, err 8944 } 8945} 8946func unmarshalBasicMultiBitrateFormatArray(body []byte) ([]BasicMultiBitrateFormat, error) { 8947 var rawMessages []*json.RawMessage 8948 err := json.Unmarshal(body, &rawMessages) 8949 if err != nil { 8950 return nil, err 8951 } 8952 8953 mbfArray := make([]BasicMultiBitrateFormat, len(rawMessages)) 8954 8955 for index, rawMessage := range rawMessages { 8956 mbf, err := unmarshalBasicMultiBitrateFormat(*rawMessage) 8957 if err != nil { 8958 return nil, err 8959 } 8960 mbfArray[index] = mbf 8961 } 8962 return mbfArray, nil 8963} 8964 8965// MarshalJSON is the custom marshaler for MultiBitrateFormat. 8966func (mbf MultiBitrateFormat) MarshalJSON() ([]byte, error) { 8967 mbf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat 8968 objectMap := make(map[string]interface{}) 8969 if mbf.OutputFiles != nil { 8970 objectMap["outputFiles"] = mbf.OutputFiles 8971 } 8972 if mbf.FilenamePattern != nil { 8973 objectMap["filenamePattern"] = mbf.FilenamePattern 8974 } 8975 if mbf.OdataType != "" { 8976 objectMap["@odata.type"] = mbf.OdataType 8977 } 8978 return json.Marshal(objectMap) 8979} 8980 8981// AsImageFormat is the BasicFormat implementation for MultiBitrateFormat. 8982func (mbf MultiBitrateFormat) AsImageFormat() (*ImageFormat, bool) { 8983 return nil, false 8984} 8985 8986// AsBasicImageFormat is the BasicFormat implementation for MultiBitrateFormat. 8987func (mbf MultiBitrateFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 8988 return nil, false 8989} 8990 8991// AsJpgFormat is the BasicFormat implementation for MultiBitrateFormat. 8992func (mbf MultiBitrateFormat) AsJpgFormat() (*JpgFormat, bool) { 8993 return nil, false 8994} 8995 8996// AsPngFormat is the BasicFormat implementation for MultiBitrateFormat. 8997func (mbf MultiBitrateFormat) AsPngFormat() (*PngFormat, bool) { 8998 return nil, false 8999} 9000 9001// AsMultiBitrateFormat is the BasicFormat implementation for MultiBitrateFormat. 9002func (mbf MultiBitrateFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 9003 return &mbf, true 9004} 9005 9006// AsBasicMultiBitrateFormat is the BasicFormat implementation for MultiBitrateFormat. 9007func (mbf MultiBitrateFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 9008 return &mbf, true 9009} 9010 9011// AsMp4Format is the BasicFormat implementation for MultiBitrateFormat. 9012func (mbf MultiBitrateFormat) AsMp4Format() (*Mp4Format, bool) { 9013 return nil, false 9014} 9015 9016// AsTransportStreamFormat is the BasicFormat implementation for MultiBitrateFormat. 9017func (mbf MultiBitrateFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 9018 return nil, false 9019} 9020 9021// AsFormat is the BasicFormat implementation for MultiBitrateFormat. 9022func (mbf MultiBitrateFormat) AsFormat() (*Format, bool) { 9023 return nil, false 9024} 9025 9026// AsBasicFormat is the BasicFormat implementation for MultiBitrateFormat. 9027func (mbf MultiBitrateFormat) AsBasicFormat() (BasicFormat, bool) { 9028 return &mbf, true 9029} 9030 9031// NoEncryption class for NoEncryption scheme 9032type NoEncryption struct { 9033 // EnabledProtocols - Representing supported protocols 9034 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 9035} 9036 9037// Operation an operation. 9038type Operation struct { 9039 // Name - The operation name. 9040 Name *string `json:"name,omitempty"` 9041 // Display - The operation display name. 9042 Display *OperationDisplay `json:"display,omitempty"` 9043 // Origin - Origin of the operation. 9044 Origin *string `json:"origin,omitempty"` 9045 // Properties - Operation properties format. 9046 Properties *Properties `json:"properties,omitempty"` 9047 // IsDataAction - Whether the operation applies to data-plane. 9048 IsDataAction *bool `json:"isDataAction,omitempty"` 9049 // ActionType - Indicates the action type. Possible values include: 'ActionTypeInternal' 9050 ActionType ActionType `json:"actionType,omitempty"` 9051} 9052 9053// OperationCollection a collection of Operation items. 9054type OperationCollection struct { 9055 autorest.Response `json:"-"` 9056 // Value - A collection of Operation items. 9057 Value *[]Operation `json:"value,omitempty"` 9058} 9059 9060// OperationDisplay operation details. 9061type OperationDisplay struct { 9062 // Provider - The service provider. 9063 Provider *string `json:"provider,omitempty"` 9064 // Resource - Resource on which the operation is performed. 9065 Resource *string `json:"resource,omitempty"` 9066 // Operation - The operation type. 9067 Operation *string `json:"operation,omitempty"` 9068 // Description - The operation description. 9069 Description *string `json:"description,omitempty"` 9070} 9071 9072// OutputFile represents an output file produced. 9073type OutputFile struct { 9074 // Labels - The list of labels that describe how the encoder should multiplex video and audio into an output file. For example, if the encoder is producing two video layers with labels v1 and v2, and one audio layer with label a1, then an array like '[v1, a1]' tells the encoder to produce an output file with the video track represented by v1 and the audio track represented by a1. 9075 Labels *[]string `json:"labels,omitempty"` 9076} 9077 9078// BasicOverlay base type for all overlays - image, audio or video. 9079type BasicOverlay interface { 9080 AsAudioOverlay() (*AudioOverlay, bool) 9081 AsVideoOverlay() (*VideoOverlay, bool) 9082 AsOverlay() (*Overlay, bool) 9083} 9084 9085// Overlay base type for all overlays - image, audio or video. 9086type Overlay struct { 9087 // InputLabel - The label of the job input which is to be used as an overlay. The Input must specify exactly one file. You can specify an image file in JPG, PNG, GIF or BMP format, or an audio file (such as a WAV, MP3, WMA or M4A file), or a video file. See https://aka.ms/mesformats for the complete list of supported audio and video file formats. 9088 InputLabel *string `json:"inputLabel,omitempty"` 9089 // Start - The start position, with reference to the input video, at which the overlay starts. The value should be in ISO 8601 format. For example, PT05S to start the overlay at 5 seconds into the input video. If not specified the overlay starts from the beginning of the input video. 9090 Start *string `json:"start,omitempty"` 9091 // End - The end position, with reference to the input video, at which the overlay ends. The value should be in ISO 8601 format. For example, PT30S to end the overlay at 30 seconds into the input video. If not specified or the value is greater than the input video duration, the overlay will be applied until the end of the input video if the overlay media duration is greater than the input video duration, else the overlay will last as long as the overlay media duration. 9092 End *string `json:"end,omitempty"` 9093 // FadeInDuration - The duration over which the overlay fades in onto the input video. The value should be in ISO 8601 duration format. If not specified the default behavior is to have no fade in (same as PT0S). 9094 FadeInDuration *string `json:"fadeInDuration,omitempty"` 9095 // FadeOutDuration - The duration over which the overlay fades out of the input video. The value should be in ISO 8601 duration format. If not specified the default behavior is to have no fade out (same as PT0S). 9096 FadeOutDuration *string `json:"fadeOutDuration,omitempty"` 9097 // AudioGainLevel - The gain level of audio in the overlay. The value should be in the range [0, 1.0]. The default is 1.0. 9098 AudioGainLevel *float64 `json:"audioGainLevel,omitempty"` 9099 // OdataType - Possible values include: 'OdataTypeBasicOverlayOdataTypeOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay' 9100 OdataType OdataTypeBasicOverlay `json:"@odata.type,omitempty"` 9101} 9102 9103func unmarshalBasicOverlay(body []byte) (BasicOverlay, error) { 9104 var m map[string]interface{} 9105 err := json.Unmarshal(body, &m) 9106 if err != nil { 9107 return nil, err 9108 } 9109 9110 switch m["@odata.type"] { 9111 case string(OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay): 9112 var ao AudioOverlay 9113 err := json.Unmarshal(body, &ao) 9114 return ao, err 9115 case string(OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay): 9116 var vo VideoOverlay 9117 err := json.Unmarshal(body, &vo) 9118 return vo, err 9119 default: 9120 var o Overlay 9121 err := json.Unmarshal(body, &o) 9122 return o, err 9123 } 9124} 9125func unmarshalBasicOverlayArray(body []byte) ([]BasicOverlay, error) { 9126 var rawMessages []*json.RawMessage 9127 err := json.Unmarshal(body, &rawMessages) 9128 if err != nil { 9129 return nil, err 9130 } 9131 9132 oArray := make([]BasicOverlay, len(rawMessages)) 9133 9134 for index, rawMessage := range rawMessages { 9135 o, err := unmarshalBasicOverlay(*rawMessage) 9136 if err != nil { 9137 return nil, err 9138 } 9139 oArray[index] = o 9140 } 9141 return oArray, nil 9142} 9143 9144// MarshalJSON is the custom marshaler for Overlay. 9145func (o Overlay) MarshalJSON() ([]byte, error) { 9146 o.OdataType = OdataTypeBasicOverlayOdataTypeOverlay 9147 objectMap := make(map[string]interface{}) 9148 if o.InputLabel != nil { 9149 objectMap["inputLabel"] = o.InputLabel 9150 } 9151 if o.Start != nil { 9152 objectMap["start"] = o.Start 9153 } 9154 if o.End != nil { 9155 objectMap["end"] = o.End 9156 } 9157 if o.FadeInDuration != nil { 9158 objectMap["fadeInDuration"] = o.FadeInDuration 9159 } 9160 if o.FadeOutDuration != nil { 9161 objectMap["fadeOutDuration"] = o.FadeOutDuration 9162 } 9163 if o.AudioGainLevel != nil { 9164 objectMap["audioGainLevel"] = o.AudioGainLevel 9165 } 9166 if o.OdataType != "" { 9167 objectMap["@odata.type"] = o.OdataType 9168 } 9169 return json.Marshal(objectMap) 9170} 9171 9172// AsAudioOverlay is the BasicOverlay implementation for Overlay. 9173func (o Overlay) AsAudioOverlay() (*AudioOverlay, bool) { 9174 return nil, false 9175} 9176 9177// AsVideoOverlay is the BasicOverlay implementation for Overlay. 9178func (o Overlay) AsVideoOverlay() (*VideoOverlay, bool) { 9179 return nil, false 9180} 9181 9182// AsOverlay is the BasicOverlay implementation for Overlay. 9183func (o Overlay) AsOverlay() (*Overlay, bool) { 9184 return &o, true 9185} 9186 9187// AsBasicOverlay is the BasicOverlay implementation for Overlay. 9188func (o Overlay) AsBasicOverlay() (BasicOverlay, bool) { 9189 return &o, true 9190} 9191 9192// PngFormat describes the settings for producing PNG thumbnails. 9193type PngFormat struct { 9194 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 9195 FilenamePattern *string `json:"filenamePattern,omitempty"` 9196 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 9197 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 9198} 9199 9200// MarshalJSON is the custom marshaler for PngFormat. 9201func (pf PngFormat) MarshalJSON() ([]byte, error) { 9202 pf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat 9203 objectMap := make(map[string]interface{}) 9204 if pf.FilenamePattern != nil { 9205 objectMap["filenamePattern"] = pf.FilenamePattern 9206 } 9207 if pf.OdataType != "" { 9208 objectMap["@odata.type"] = pf.OdataType 9209 } 9210 return json.Marshal(objectMap) 9211} 9212 9213// AsImageFormat is the BasicFormat implementation for PngFormat. 9214func (pf PngFormat) AsImageFormat() (*ImageFormat, bool) { 9215 return nil, false 9216} 9217 9218// AsBasicImageFormat is the BasicFormat implementation for PngFormat. 9219func (pf PngFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 9220 return &pf, true 9221} 9222 9223// AsJpgFormat is the BasicFormat implementation for PngFormat. 9224func (pf PngFormat) AsJpgFormat() (*JpgFormat, bool) { 9225 return nil, false 9226} 9227 9228// AsPngFormat is the BasicFormat implementation for PngFormat. 9229func (pf PngFormat) AsPngFormat() (*PngFormat, bool) { 9230 return &pf, true 9231} 9232 9233// AsMultiBitrateFormat is the BasicFormat implementation for PngFormat. 9234func (pf PngFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 9235 return nil, false 9236} 9237 9238// AsBasicMultiBitrateFormat is the BasicFormat implementation for PngFormat. 9239func (pf PngFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 9240 return nil, false 9241} 9242 9243// AsMp4Format is the BasicFormat implementation for PngFormat. 9244func (pf PngFormat) AsMp4Format() (*Mp4Format, bool) { 9245 return nil, false 9246} 9247 9248// AsTransportStreamFormat is the BasicFormat implementation for PngFormat. 9249func (pf PngFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 9250 return nil, false 9251} 9252 9253// AsFormat is the BasicFormat implementation for PngFormat. 9254func (pf PngFormat) AsFormat() (*Format, bool) { 9255 return nil, false 9256} 9257 9258// AsBasicFormat is the BasicFormat implementation for PngFormat. 9259func (pf PngFormat) AsBasicFormat() (BasicFormat, bool) { 9260 return &pf, true 9261} 9262 9263// PngImage describes the properties for producing a series of PNG images from the input video. 9264type PngImage struct { 9265 // Layers - A collection of output PNG image layers to be produced by the encoder. 9266 Layers *[]PngLayer `json:"layers,omitempty"` 9267 // Start - The position in the input video from where to start generating thumbnails. The value can be in ISO 8601 format (For example, PT05S to start at 5 seconds), or a frame count (For example, 10 to start at the 10th frame), or a relative value to stream duration (For example, 10% to start at 10% of stream duration). Also supports a macro {Best}, which tells the encoder to select the best thumbnail from the first few seconds of the video and will only produce one thumbnail, no matter what other settings are for Step and Range. The default value is macro {Best}. 9268 Start *string `json:"start,omitempty"` 9269 // Step - The intervals at which thumbnails are generated. The value can be in ISO 8601 format (For example, PT05S for one image every 5 seconds), or a frame count (For example, 30 for one image every 30 frames), or a relative value to stream duration (For example, 10% for one image every 10% of stream duration). Note: Step value will affect the first generated thumbnail, which may not be exactly the one specified at transform preset start time. This is due to the encoder, which tries to select the best thumbnail between start time and Step position from start time as the first output. As the default value is 10%, it means if stream has long duration, the first generated thumbnail might be far away from the one specified at start time. Try to select reasonable value for Step if the first thumbnail is expected close to start time, or set Range value at 1 if only one thumbnail is needed at start time. 9270 Step *string `json:"step,omitempty"` 9271 // Range - The position relative to transform preset start time in the input video at which to stop generating thumbnails. The value can be in ISO 8601 format (For example, PT5M30S to stop at 5 minutes and 30 seconds from start time), or a frame count (For example, 300 to stop at the 300th frame from the frame at start time. If this value is 1, it means only producing one thumbnail at start time), or a relative value to the stream duration (For example, 50% to stop at half of stream duration from start time). The default value is 100%, which means to stop at the end of the stream. 9272 Range *string `json:"range,omitempty"` 9273 // KeyFrameInterval - The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting. 9274 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 9275 // StretchMode - The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 9276 StretchMode StretchMode `json:"stretchMode,omitempty"` 9277 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 9278 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 9279 // Label - An optional label for the codec. The label can be used to control muxing behavior. 9280 Label *string `json:"label,omitempty"` 9281 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 9282 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 9283} 9284 9285// MarshalJSON is the custom marshaler for PngImage. 9286func (pi PngImage) MarshalJSON() ([]byte, error) { 9287 pi.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage 9288 objectMap := make(map[string]interface{}) 9289 if pi.Layers != nil { 9290 objectMap["layers"] = pi.Layers 9291 } 9292 if pi.Start != nil { 9293 objectMap["start"] = pi.Start 9294 } 9295 if pi.Step != nil { 9296 objectMap["step"] = pi.Step 9297 } 9298 if pi.Range != nil { 9299 objectMap["range"] = pi.Range 9300 } 9301 if pi.KeyFrameInterval != nil { 9302 objectMap["keyFrameInterval"] = pi.KeyFrameInterval 9303 } 9304 if pi.StretchMode != "" { 9305 objectMap["stretchMode"] = pi.StretchMode 9306 } 9307 if pi.SyncMode != "" { 9308 objectMap["syncMode"] = pi.SyncMode 9309 } 9310 if pi.Label != nil { 9311 objectMap["label"] = pi.Label 9312 } 9313 if pi.OdataType != "" { 9314 objectMap["@odata.type"] = pi.OdataType 9315 } 9316 return json.Marshal(objectMap) 9317} 9318 9319// AsAudio is the BasicCodec implementation for PngImage. 9320func (pi PngImage) AsAudio() (*Audio, bool) { 9321 return nil, false 9322} 9323 9324// AsBasicAudio is the BasicCodec implementation for PngImage. 9325func (pi PngImage) AsBasicAudio() (BasicAudio, bool) { 9326 return nil, false 9327} 9328 9329// AsAacAudio is the BasicCodec implementation for PngImage. 9330func (pi PngImage) AsAacAudio() (*AacAudio, bool) { 9331 return nil, false 9332} 9333 9334// AsVideo is the BasicCodec implementation for PngImage. 9335func (pi PngImage) AsVideo() (*Video, bool) { 9336 return nil, false 9337} 9338 9339// AsBasicVideo is the BasicCodec implementation for PngImage. 9340func (pi PngImage) AsBasicVideo() (BasicVideo, bool) { 9341 return &pi, true 9342} 9343 9344// AsH265Video is the BasicCodec implementation for PngImage. 9345func (pi PngImage) AsH265Video() (*H265Video, bool) { 9346 return nil, false 9347} 9348 9349// AsCopyVideo is the BasicCodec implementation for PngImage. 9350func (pi PngImage) AsCopyVideo() (*CopyVideo, bool) { 9351 return nil, false 9352} 9353 9354// AsImage is the BasicCodec implementation for PngImage. 9355func (pi PngImage) AsImage() (*Image, bool) { 9356 return nil, false 9357} 9358 9359// AsBasicImage is the BasicCodec implementation for PngImage. 9360func (pi PngImage) AsBasicImage() (BasicImage, bool) { 9361 return &pi, true 9362} 9363 9364// AsCopyAudio is the BasicCodec implementation for PngImage. 9365func (pi PngImage) AsCopyAudio() (*CopyAudio, bool) { 9366 return nil, false 9367} 9368 9369// AsH264Video is the BasicCodec implementation for PngImage. 9370func (pi PngImage) AsH264Video() (*H264Video, bool) { 9371 return nil, false 9372} 9373 9374// AsJpgImage is the BasicCodec implementation for PngImage. 9375func (pi PngImage) AsJpgImage() (*JpgImage, bool) { 9376 return nil, false 9377} 9378 9379// AsPngImage is the BasicCodec implementation for PngImage. 9380func (pi PngImage) AsPngImage() (*PngImage, bool) { 9381 return &pi, true 9382} 9383 9384// AsCodec is the BasicCodec implementation for PngImage. 9385func (pi PngImage) AsCodec() (*Codec, bool) { 9386 return nil, false 9387} 9388 9389// AsBasicCodec is the BasicCodec implementation for PngImage. 9390func (pi PngImage) AsBasicCodec() (BasicCodec, bool) { 9391 return &pi, true 9392} 9393 9394// PngLayer describes the settings to produce a PNG image from the input video. 9395type PngLayer struct { 9396 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 9397 Width *string `json:"width,omitempty"` 9398 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 9399 Height *string `json:"height,omitempty"` 9400 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 9401 Label *string `json:"label,omitempty"` 9402 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 9403 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 9404} 9405 9406// MarshalJSON is the custom marshaler for PngLayer. 9407func (pl PngLayer) MarshalJSON() ([]byte, error) { 9408 pl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer 9409 objectMap := make(map[string]interface{}) 9410 if pl.Width != nil { 9411 objectMap["width"] = pl.Width 9412 } 9413 if pl.Height != nil { 9414 objectMap["height"] = pl.Height 9415 } 9416 if pl.Label != nil { 9417 objectMap["label"] = pl.Label 9418 } 9419 if pl.OdataType != "" { 9420 objectMap["@odata.type"] = pl.OdataType 9421 } 9422 return json.Marshal(objectMap) 9423} 9424 9425// AsH265VideoLayer is the BasicLayer implementation for PngLayer. 9426func (pl PngLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 9427 return nil, false 9428} 9429 9430// AsBasicH265VideoLayer is the BasicLayer implementation for PngLayer. 9431func (pl PngLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 9432 return nil, false 9433} 9434 9435// AsH265Layer is the BasicLayer implementation for PngLayer. 9436func (pl PngLayer) AsH265Layer() (*H265Layer, bool) { 9437 return nil, false 9438} 9439 9440// AsVideoLayer is the BasicLayer implementation for PngLayer. 9441func (pl PngLayer) AsVideoLayer() (*VideoLayer, bool) { 9442 return nil, false 9443} 9444 9445// AsBasicVideoLayer is the BasicLayer implementation for PngLayer. 9446func (pl PngLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 9447 return nil, false 9448} 9449 9450// AsH264Layer is the BasicLayer implementation for PngLayer. 9451func (pl PngLayer) AsH264Layer() (*H264Layer, bool) { 9452 return nil, false 9453} 9454 9455// AsJpgLayer is the BasicLayer implementation for PngLayer. 9456func (pl PngLayer) AsJpgLayer() (*JpgLayer, bool) { 9457 return nil, false 9458} 9459 9460// AsPngLayer is the BasicLayer implementation for PngLayer. 9461func (pl PngLayer) AsPngLayer() (*PngLayer, bool) { 9462 return &pl, true 9463} 9464 9465// AsLayer is the BasicLayer implementation for PngLayer. 9466func (pl PngLayer) AsLayer() (*Layer, bool) { 9467 return nil, false 9468} 9469 9470// AsBasicLayer is the BasicLayer implementation for PngLayer. 9471func (pl PngLayer) AsBasicLayer() (BasicLayer, bool) { 9472 return &pl, true 9473} 9474 9475// PresentationTimeRange the presentation time range, this is asset related and not recommended for Account 9476// Filter. 9477type PresentationTimeRange struct { 9478 // StartTimestamp - The absolute start time boundary. 9479 StartTimestamp *int64 `json:"startTimestamp,omitempty"` 9480 // EndTimestamp - The absolute end time boundary. 9481 EndTimestamp *int64 `json:"endTimestamp,omitempty"` 9482 // PresentationWindowDuration - The relative to end sliding window. 9483 PresentationWindowDuration *int64 `json:"presentationWindowDuration,omitempty"` 9484 // LiveBackoffDuration - The relative to end right edge. 9485 LiveBackoffDuration *int64 `json:"liveBackoffDuration,omitempty"` 9486 // Timescale - The time scale of time stamps. 9487 Timescale *int64 `json:"timescale,omitempty"` 9488 // ForceEndTimestamp - The indicator of forcing existing of end time stamp. 9489 ForceEndTimestamp *bool `json:"forceEndTimestamp,omitempty"` 9490} 9491 9492// BasicPreset base type for all Presets, which define the recipe or instructions on how the input media files should 9493// be processed. 9494type BasicPreset interface { 9495 AsFaceDetectorPreset() (*FaceDetectorPreset, bool) 9496 AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) 9497 AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) 9498 AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) 9499 AsStandardEncoderPreset() (*StandardEncoderPreset, bool) 9500 AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) 9501 AsPreset() (*Preset, bool) 9502} 9503 9504// Preset base type for all Presets, which define the recipe or instructions on how the input media files 9505// should be processed. 9506type Preset struct { 9507 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 9508 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 9509} 9510 9511func unmarshalBasicPreset(body []byte) (BasicPreset, error) { 9512 var m map[string]interface{} 9513 err := json.Unmarshal(body, &m) 9514 if err != nil { 9515 return nil, err 9516 } 9517 9518 switch m["@odata.type"] { 9519 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset): 9520 var fdp FaceDetectorPreset 9521 err := json.Unmarshal(body, &fdp) 9522 return fdp, err 9523 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset): 9524 var aap AudioAnalyzerPreset 9525 err := json.Unmarshal(body, &aap) 9526 return aap, err 9527 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset): 9528 var bisep BuiltInStandardEncoderPreset 9529 err := json.Unmarshal(body, &bisep) 9530 return bisep, err 9531 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset): 9532 var sep StandardEncoderPreset 9533 err := json.Unmarshal(body, &sep) 9534 return sep, err 9535 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset): 9536 var vap VideoAnalyzerPreset 9537 err := json.Unmarshal(body, &vap) 9538 return vap, err 9539 default: 9540 var p Preset 9541 err := json.Unmarshal(body, &p) 9542 return p, err 9543 } 9544} 9545func unmarshalBasicPresetArray(body []byte) ([]BasicPreset, error) { 9546 var rawMessages []*json.RawMessage 9547 err := json.Unmarshal(body, &rawMessages) 9548 if err != nil { 9549 return nil, err 9550 } 9551 9552 pArray := make([]BasicPreset, len(rawMessages)) 9553 9554 for index, rawMessage := range rawMessages { 9555 p, err := unmarshalBasicPreset(*rawMessage) 9556 if err != nil { 9557 return nil, err 9558 } 9559 pArray[index] = p 9560 } 9561 return pArray, nil 9562} 9563 9564// MarshalJSON is the custom marshaler for Preset. 9565func (p Preset) MarshalJSON() ([]byte, error) { 9566 p.OdataType = OdataTypeBasicPresetOdataTypePreset 9567 objectMap := make(map[string]interface{}) 9568 if p.OdataType != "" { 9569 objectMap["@odata.type"] = p.OdataType 9570 } 9571 return json.Marshal(objectMap) 9572} 9573 9574// AsFaceDetectorPreset is the BasicPreset implementation for Preset. 9575func (p Preset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 9576 return nil, false 9577} 9578 9579// AsAudioAnalyzerPreset is the BasicPreset implementation for Preset. 9580func (p Preset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 9581 return nil, false 9582} 9583 9584// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for Preset. 9585func (p Preset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 9586 return nil, false 9587} 9588 9589// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for Preset. 9590func (p Preset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 9591 return nil, false 9592} 9593 9594// AsStandardEncoderPreset is the BasicPreset implementation for Preset. 9595func (p Preset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 9596 return nil, false 9597} 9598 9599// AsVideoAnalyzerPreset is the BasicPreset implementation for Preset. 9600func (p Preset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 9601 return nil, false 9602} 9603 9604// AsPreset is the BasicPreset implementation for Preset. 9605func (p Preset) AsPreset() (*Preset, bool) { 9606 return &p, true 9607} 9608 9609// AsBasicPreset is the BasicPreset implementation for Preset. 9610func (p Preset) AsBasicPreset() (BasicPreset, bool) { 9611 return &p, true 9612} 9613 9614// PresetConfigurations an object of optional configuration settings for encoder. 9615type PresetConfigurations struct { 9616 // Complexity - Allows you to configure the encoder settings to control the balance between speed and quality. Example: set Complexity as Speed for faster encoding but less compression efficiency. Possible values include: 'ComplexitySpeed', 'ComplexityBalanced', 'ComplexityQuality' 9617 Complexity Complexity `json:"complexity,omitempty"` 9618 // InterleaveOutput - Sets the interleave mode of the output to control how audio and video are stored in the container format. Example: set InterleavedOutput as NonInterleavedOutput to produce audio-only and video-only outputs in separate MP4 files. Possible values include: 'InterleaveOutputNonInterleavedOutput', 'InterleaveOutputInterleavedOutput' 9619 InterleaveOutput InterleaveOutput `json:"interleaveOutput,omitempty"` 9620 // KeyFrameIntervalInSeconds - The key frame interval in seconds. Example: set KeyFrameIntervalInSeconds as 2 to reduce the playback buffering for some players. 9621 KeyFrameIntervalInSeconds *float64 `json:"keyFrameIntervalInSeconds,omitempty"` 9622 // MaxBitrateBps - The maximum bitrate in bits per second (threshold for the top video layer). Example: set MaxBitrateBps as 6000000 to avoid producing very high bitrate outputs for contents with high complexity. 9623 MaxBitrateBps *int32 `json:"maxBitrateBps,omitempty"` 9624 // MaxHeight - The maximum height of output video layers. Example: set MaxHeight as 720 to produce output layers up to 720P even if the input is 4K. 9625 MaxHeight *int32 `json:"maxHeight,omitempty"` 9626 // MaxLayers - The maximum number of output video layers. Example: set MaxLayers as 4 to make sure at most 4 output layers are produced to control the overall cost of the encoding job. 9627 MaxLayers *int32 `json:"maxLayers,omitempty"` 9628 // MinBitrateBps - The minimum bitrate in bits per second (threshold for the bottom video layer). Example: set MinBitrateBps as 200000 to have a bottom layer that covers users with low network bandwidth. 9629 MinBitrateBps *int32 `json:"minBitrateBps,omitempty"` 9630 // MinHeight - The minimum height of output video layers. Example: set MinHeight as 360 to avoid output layers of smaller resolutions like 180P. 9631 MinHeight *int32 `json:"minHeight,omitempty"` 9632} 9633 9634// PrivateEndpoint the Private Endpoint resource. 9635type PrivateEndpoint struct { 9636 // ID - READ-ONLY; The ARM identifier for Private Endpoint 9637 ID *string `json:"id,omitempty"` 9638} 9639 9640// MarshalJSON is the custom marshaler for PrivateEndpoint. 9641func (peVar PrivateEndpoint) MarshalJSON() ([]byte, error) { 9642 objectMap := make(map[string]interface{}) 9643 return json.Marshal(objectMap) 9644} 9645 9646// PrivateEndpointConnection the Private Endpoint Connection resource. 9647type PrivateEndpointConnection struct { 9648 autorest.Response `json:"-"` 9649 // PrivateEndpointConnectionProperties - Resource properties. 9650 *PrivateEndpointConnectionProperties `json:"properties,omitempty"` 9651 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9652 ID *string `json:"id,omitempty"` 9653 // Name - READ-ONLY; The name of the resource 9654 Name *string `json:"name,omitempty"` 9655 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9656 Type *string `json:"type,omitempty"` 9657} 9658 9659// MarshalJSON is the custom marshaler for PrivateEndpointConnection. 9660func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) { 9661 objectMap := make(map[string]interface{}) 9662 if pec.PrivateEndpointConnectionProperties != nil { 9663 objectMap["properties"] = pec.PrivateEndpointConnectionProperties 9664 } 9665 return json.Marshal(objectMap) 9666} 9667 9668// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnection struct. 9669func (pec *PrivateEndpointConnection) UnmarshalJSON(body []byte) error { 9670 var m map[string]*json.RawMessage 9671 err := json.Unmarshal(body, &m) 9672 if err != nil { 9673 return err 9674 } 9675 for k, v := range m { 9676 switch k { 9677 case "properties": 9678 if v != nil { 9679 var privateEndpointConnectionProperties PrivateEndpointConnectionProperties 9680 err = json.Unmarshal(*v, &privateEndpointConnectionProperties) 9681 if err != nil { 9682 return err 9683 } 9684 pec.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties 9685 } 9686 case "id": 9687 if v != nil { 9688 var ID string 9689 err = json.Unmarshal(*v, &ID) 9690 if err != nil { 9691 return err 9692 } 9693 pec.ID = &ID 9694 } 9695 case "name": 9696 if v != nil { 9697 var name string 9698 err = json.Unmarshal(*v, &name) 9699 if err != nil { 9700 return err 9701 } 9702 pec.Name = &name 9703 } 9704 case "type": 9705 if v != nil { 9706 var typeVar string 9707 err = json.Unmarshal(*v, &typeVar) 9708 if err != nil { 9709 return err 9710 } 9711 pec.Type = &typeVar 9712 } 9713 } 9714 } 9715 9716 return nil 9717} 9718 9719// PrivateEndpointConnectionListResult list of private endpoint connection associated with the specified 9720// storage account 9721type PrivateEndpointConnectionListResult struct { 9722 autorest.Response `json:"-"` 9723 // Value - Array of private endpoint connections 9724 Value *[]PrivateEndpointConnection `json:"value,omitempty"` 9725} 9726 9727// PrivateEndpointConnectionProperties properties of the PrivateEndpointConnectProperties. 9728type PrivateEndpointConnectionProperties struct { 9729 // PrivateEndpoint - The resource of private end point. 9730 PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` 9731 // PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer and provider. 9732 PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` 9733 // ProvisioningState - The provisioning state of the private endpoint connection resource. Possible values include: 'PrivateEndpointConnectionProvisioningStateSucceeded', 'PrivateEndpointConnectionProvisioningStateCreating', 'PrivateEndpointConnectionProvisioningStateDeleting', 'PrivateEndpointConnectionProvisioningStateFailed' 9734 ProvisioningState PrivateEndpointConnectionProvisioningState `json:"provisioningState,omitempty"` 9735} 9736 9737// PrivateLinkResource a private link resource 9738type PrivateLinkResource struct { 9739 autorest.Response `json:"-"` 9740 // PrivateLinkResourceProperties - Resource properties. 9741 *PrivateLinkResourceProperties `json:"properties,omitempty"` 9742 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9743 ID *string `json:"id,omitempty"` 9744 // Name - READ-ONLY; The name of the resource 9745 Name *string `json:"name,omitempty"` 9746 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9747 Type *string `json:"type,omitempty"` 9748} 9749 9750// MarshalJSON is the custom marshaler for PrivateLinkResource. 9751func (plr PrivateLinkResource) MarshalJSON() ([]byte, error) { 9752 objectMap := make(map[string]interface{}) 9753 if plr.PrivateLinkResourceProperties != nil { 9754 objectMap["properties"] = plr.PrivateLinkResourceProperties 9755 } 9756 return json.Marshal(objectMap) 9757} 9758 9759// UnmarshalJSON is the custom unmarshaler for PrivateLinkResource struct. 9760func (plr *PrivateLinkResource) UnmarshalJSON(body []byte) error { 9761 var m map[string]*json.RawMessage 9762 err := json.Unmarshal(body, &m) 9763 if err != nil { 9764 return err 9765 } 9766 for k, v := range m { 9767 switch k { 9768 case "properties": 9769 if v != nil { 9770 var privateLinkResourceProperties PrivateLinkResourceProperties 9771 err = json.Unmarshal(*v, &privateLinkResourceProperties) 9772 if err != nil { 9773 return err 9774 } 9775 plr.PrivateLinkResourceProperties = &privateLinkResourceProperties 9776 } 9777 case "id": 9778 if v != nil { 9779 var ID string 9780 err = json.Unmarshal(*v, &ID) 9781 if err != nil { 9782 return err 9783 } 9784 plr.ID = &ID 9785 } 9786 case "name": 9787 if v != nil { 9788 var name string 9789 err = json.Unmarshal(*v, &name) 9790 if err != nil { 9791 return err 9792 } 9793 plr.Name = &name 9794 } 9795 case "type": 9796 if v != nil { 9797 var typeVar string 9798 err = json.Unmarshal(*v, &typeVar) 9799 if err != nil { 9800 return err 9801 } 9802 plr.Type = &typeVar 9803 } 9804 } 9805 } 9806 9807 return nil 9808} 9809 9810// PrivateLinkResourceListResult a list of private link resources 9811type PrivateLinkResourceListResult struct { 9812 autorest.Response `json:"-"` 9813 // Value - Array of private link resources 9814 Value *[]PrivateLinkResource `json:"value,omitempty"` 9815} 9816 9817// PrivateLinkResourceProperties properties of a private link resource. 9818type PrivateLinkResourceProperties struct { 9819 // GroupID - READ-ONLY; The private link resource group id. 9820 GroupID *string `json:"groupId,omitempty"` 9821 // RequiredMembers - READ-ONLY; The private link resource required member names. 9822 RequiredMembers *[]string `json:"requiredMembers,omitempty"` 9823 // RequiredZoneNames - The private link resource Private link DNS zone name. 9824 RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"` 9825} 9826 9827// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties. 9828func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) { 9829 objectMap := make(map[string]interface{}) 9830 if plrp.RequiredZoneNames != nil { 9831 objectMap["requiredZoneNames"] = plrp.RequiredZoneNames 9832 } 9833 return json.Marshal(objectMap) 9834} 9835 9836// PrivateLinkServiceConnectionState a collection of information about the state of the connection between 9837// service consumer and provider. 9838type PrivateLinkServiceConnectionState struct { 9839 // Status - Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. Possible values include: 'PrivateEndpointServiceConnectionStatusPending', 'PrivateEndpointServiceConnectionStatusApproved', 'PrivateEndpointServiceConnectionStatusRejected' 9840 Status PrivateEndpointServiceConnectionStatus `json:"status,omitempty"` 9841 // Description - The reason for approval/rejection of the connection. 9842 Description *string `json:"description,omitempty"` 9843 // ActionsRequired - A message indicating if changes on the service provider require any updates on the consumer. 9844 ActionsRequired *string `json:"actionsRequired,omitempty"` 9845} 9846 9847// Properties the service specification property. 9848type Properties struct { 9849 // ServiceSpecification - READ-ONLY; The service specifications. 9850 ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"` 9851} 9852 9853// MarshalJSON is the custom marshaler for Properties. 9854func (p Properties) MarshalJSON() ([]byte, error) { 9855 objectMap := make(map[string]interface{}) 9856 return json.Marshal(objectMap) 9857} 9858 9859// ProxyResource the resource model definition for a Azure Resource Manager proxy resource. It will not 9860// have tags and a location 9861type ProxyResource struct { 9862 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9863 ID *string `json:"id,omitempty"` 9864 // Name - READ-ONLY; The name of the resource 9865 Name *string `json:"name,omitempty"` 9866 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9867 Type *string `json:"type,omitempty"` 9868} 9869 9870// MarshalJSON is the custom marshaler for ProxyResource. 9871func (pr ProxyResource) MarshalJSON() ([]byte, error) { 9872 objectMap := make(map[string]interface{}) 9873 return json.Marshal(objectMap) 9874} 9875 9876// Rectangle describes the properties of a rectangular window applied to the input media before processing 9877// it. 9878type Rectangle struct { 9879 // Left - The number of pixels from the left-margin. This can be absolute pixel value (e.g 100), or relative to the size of the video (For example, 50%). 9880 Left *string `json:"left,omitempty"` 9881 // Top - The number of pixels from the top-margin. This can be absolute pixel value (e.g 100), or relative to the size of the video (For example, 50%). 9882 Top *string `json:"top,omitempty"` 9883 // Width - The width of the rectangular region in pixels. This can be absolute pixel value (e.g 100), or relative to the size of the video (For example, 50%). 9884 Width *string `json:"width,omitempty"` 9885 // Height - The height of the rectangular region in pixels. This can be absolute pixel value (e.g 100), or relative to the size of the video (For example, 50%). 9886 Height *string `json:"height,omitempty"` 9887} 9888 9889// Resource common fields that are returned in the response for all Azure Resource Manager resources 9890type Resource struct { 9891 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9892 ID *string `json:"id,omitempty"` 9893 // Name - READ-ONLY; The name of the resource 9894 Name *string `json:"name,omitempty"` 9895 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9896 Type *string `json:"type,omitempty"` 9897} 9898 9899// MarshalJSON is the custom marshaler for Resource. 9900func (r Resource) MarshalJSON() ([]byte, error) { 9901 objectMap := make(map[string]interface{}) 9902 return json.Marshal(objectMap) 9903} 9904 9905// ResourceIdentity ... 9906type ResourceIdentity struct { 9907 // UserAssignedIdentity - The user assigned managed identity's ARM ID to use when accessing a resource. 9908 UserAssignedIdentity *string `json:"userAssignedIdentity,omitempty"` 9909 // UseSystemAssignedIdentity - Indicates whether to use System Assigned Managed Identity. Mutual exclusive with User Assigned Managed Identity. 9910 UseSystemAssignedIdentity *bool `json:"useSystemAssignedIdentity,omitempty"` 9911} 9912 9913// SelectAudioTrackByAttribute select audio tracks from the input by specifying an attribute and an 9914// attribute filter. 9915type SelectAudioTrackByAttribute struct { 9916 // Attribute - The TrackAttribute to filter the tracks by. Possible values include: 'TrackAttributeBitrate', 'TrackAttributeLanguage' 9917 Attribute TrackAttribute `json:"attribute,omitempty"` 9918 // Filter - The type of AttributeFilter to apply to the TrackAttribute in order to select the tracks. Possible values include: 'AttributeFilterAll', 'AttributeFilterTop', 'AttributeFilterBottom', 'AttributeFilterValueEquals' 9919 Filter AttributeFilter `json:"filter,omitempty"` 9920 // FilterValue - The value to filter the tracks by. Only used when AttributeFilter.ValueEquals is specified for the Filter property. 9921 FilterValue *string `json:"filterValue,omitempty"` 9922 // ChannelMapping - Optional designation for single channel audio tracks. Can be used to combine the tracks into stereo or multi-channel audio tracks. Possible values include: 'ChannelMappingFrontLeft', 'ChannelMappingFrontRight', 'ChannelMappingCenter', 'ChannelMappingLowFrequencyEffects', 'ChannelMappingBackLeft', 'ChannelMappingBackRight', 'ChannelMappingStereoLeft', 'ChannelMappingStereoRight' 9923 ChannelMapping ChannelMapping `json:"channelMapping,omitempty"` 9924 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 9925 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 9926} 9927 9928// MarshalJSON is the custom marshaler for SelectAudioTrackByAttribute. 9929func (satba SelectAudioTrackByAttribute) MarshalJSON() ([]byte, error) { 9930 satba.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute 9931 objectMap := make(map[string]interface{}) 9932 if satba.Attribute != "" { 9933 objectMap["attribute"] = satba.Attribute 9934 } 9935 if satba.Filter != "" { 9936 objectMap["filter"] = satba.Filter 9937 } 9938 if satba.FilterValue != nil { 9939 objectMap["filterValue"] = satba.FilterValue 9940 } 9941 if satba.ChannelMapping != "" { 9942 objectMap["channelMapping"] = satba.ChannelMapping 9943 } 9944 if satba.OdataType != "" { 9945 objectMap["@odata.type"] = satba.OdataType 9946 } 9947 return json.Marshal(objectMap) 9948} 9949 9950// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9951func (satba SelectAudioTrackByAttribute) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 9952 return nil, false 9953} 9954 9955// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9956func (satba SelectAudioTrackByAttribute) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 9957 return &satba, true 9958} 9959 9960// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9961func (satba SelectAudioTrackByAttribute) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 9962 return &satba, true 9963} 9964 9965// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9966func (satba SelectAudioTrackByAttribute) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 9967 return nil, false 9968} 9969 9970// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9971func (satba SelectAudioTrackByAttribute) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 9972 return nil, false 9973} 9974 9975// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9976func (satba SelectAudioTrackByAttribute) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 9977 return nil, false 9978} 9979 9980// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9981func (satba SelectAudioTrackByAttribute) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 9982 return nil, false 9983} 9984 9985// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9986func (satba SelectAudioTrackByAttribute) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 9987 return nil, false 9988} 9989 9990// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9991func (satba SelectAudioTrackByAttribute) AsTrackDescriptor() (*TrackDescriptor, bool) { 9992 return nil, false 9993} 9994 9995// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9996func (satba SelectAudioTrackByAttribute) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 9997 return &satba, true 9998} 9999 10000// SelectAudioTrackByID select audio tracks from the input by specifying a track identifier. 10001type SelectAudioTrackByID struct { 10002 // TrackID - Track identifier to select 10003 TrackID *int64 `json:"trackId,omitempty"` 10004 // ChannelMapping - Optional designation for single channel audio tracks. Can be used to combine the tracks into stereo or multi-channel audio tracks. Possible values include: 'ChannelMappingFrontLeft', 'ChannelMappingFrontRight', 'ChannelMappingCenter', 'ChannelMappingLowFrequencyEffects', 'ChannelMappingBackLeft', 'ChannelMappingBackRight', 'ChannelMappingStereoLeft', 'ChannelMappingStereoRight' 10005 ChannelMapping ChannelMapping `json:"channelMapping,omitempty"` 10006 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 10007 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 10008} 10009 10010// MarshalJSON is the custom marshaler for SelectAudioTrackByID. 10011func (satbi SelectAudioTrackByID) MarshalJSON() ([]byte, error) { 10012 satbi.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID 10013 objectMap := make(map[string]interface{}) 10014 if satbi.TrackID != nil { 10015 objectMap["trackId"] = satbi.TrackID 10016 } 10017 if satbi.ChannelMapping != "" { 10018 objectMap["channelMapping"] = satbi.ChannelMapping 10019 } 10020 if satbi.OdataType != "" { 10021 objectMap["@odata.type"] = satbi.OdataType 10022 } 10023 return json.Marshal(objectMap) 10024} 10025 10026// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10027func (satbi SelectAudioTrackByID) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 10028 return nil, false 10029} 10030 10031// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10032func (satbi SelectAudioTrackByID) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 10033 return &satbi, true 10034} 10035 10036// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10037func (satbi SelectAudioTrackByID) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 10038 return nil, false 10039} 10040 10041// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10042func (satbi SelectAudioTrackByID) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 10043 return &satbi, true 10044} 10045 10046// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10047func (satbi SelectAudioTrackByID) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 10048 return nil, false 10049} 10050 10051// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10052func (satbi SelectAudioTrackByID) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 10053 return nil, false 10054} 10055 10056// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10057func (satbi SelectAudioTrackByID) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 10058 return nil, false 10059} 10060 10061// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10062func (satbi SelectAudioTrackByID) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 10063 return nil, false 10064} 10065 10066// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10067func (satbi SelectAudioTrackByID) AsTrackDescriptor() (*TrackDescriptor, bool) { 10068 return nil, false 10069} 10070 10071// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 10072func (satbi SelectAudioTrackByID) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 10073 return &satbi, true 10074} 10075 10076// SelectVideoTrackByAttribute select video tracks from the input by specifying an attribute and an 10077// attribute filter. 10078type SelectVideoTrackByAttribute struct { 10079 // Attribute - The TrackAttribute to filter the tracks by. Possible values include: 'TrackAttributeBitrate', 'TrackAttributeLanguage' 10080 Attribute TrackAttribute `json:"attribute,omitempty"` 10081 // Filter - The type of AttributeFilter to apply to the TrackAttribute in order to select the tracks. Possible values include: 'AttributeFilterAll', 'AttributeFilterTop', 'AttributeFilterBottom', 'AttributeFilterValueEquals' 10082 Filter AttributeFilter `json:"filter,omitempty"` 10083 // FilterValue - The value to filter the tracks by. Only used when AttributeFilter.ValueEquals is specified for the Filter property. For TrackAttribute.Bitrate, this should be an integer value in bits per second (e.g: '1500000'). The TrackAttribute.Language is not supported for video tracks. 10084 FilterValue *string `json:"filterValue,omitempty"` 10085 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 10086 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 10087} 10088 10089// MarshalJSON is the custom marshaler for SelectVideoTrackByAttribute. 10090func (svtba SelectVideoTrackByAttribute) MarshalJSON() ([]byte, error) { 10091 svtba.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute 10092 objectMap := make(map[string]interface{}) 10093 if svtba.Attribute != "" { 10094 objectMap["attribute"] = svtba.Attribute 10095 } 10096 if svtba.Filter != "" { 10097 objectMap["filter"] = svtba.Filter 10098 } 10099 if svtba.FilterValue != nil { 10100 objectMap["filterValue"] = svtba.FilterValue 10101 } 10102 if svtba.OdataType != "" { 10103 objectMap["@odata.type"] = svtba.OdataType 10104 } 10105 return json.Marshal(objectMap) 10106} 10107 10108// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10109func (svtba SelectVideoTrackByAttribute) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 10110 return nil, false 10111} 10112 10113// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10114func (svtba SelectVideoTrackByAttribute) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 10115 return nil, false 10116} 10117 10118// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10119func (svtba SelectVideoTrackByAttribute) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 10120 return nil, false 10121} 10122 10123// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10124func (svtba SelectVideoTrackByAttribute) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 10125 return nil, false 10126} 10127 10128// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10129func (svtba SelectVideoTrackByAttribute) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 10130 return nil, false 10131} 10132 10133// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10134func (svtba SelectVideoTrackByAttribute) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 10135 return &svtba, true 10136} 10137 10138// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10139func (svtba SelectVideoTrackByAttribute) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 10140 return &svtba, true 10141} 10142 10143// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10144func (svtba SelectVideoTrackByAttribute) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 10145 return nil, false 10146} 10147 10148// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10149func (svtba SelectVideoTrackByAttribute) AsTrackDescriptor() (*TrackDescriptor, bool) { 10150 return nil, false 10151} 10152 10153// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10154func (svtba SelectVideoTrackByAttribute) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 10155 return &svtba, true 10156} 10157 10158// SelectVideoTrackByID select video tracks from the input by specifying a track identifier. 10159type SelectVideoTrackByID struct { 10160 // TrackID - Track identifier to select 10161 TrackID *int64 `json:"trackId,omitempty"` 10162 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 10163 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 10164} 10165 10166// MarshalJSON is the custom marshaler for SelectVideoTrackByID. 10167func (svtbi SelectVideoTrackByID) MarshalJSON() ([]byte, error) { 10168 svtbi.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID 10169 objectMap := make(map[string]interface{}) 10170 if svtbi.TrackID != nil { 10171 objectMap["trackId"] = svtbi.TrackID 10172 } 10173 if svtbi.OdataType != "" { 10174 objectMap["@odata.type"] = svtbi.OdataType 10175 } 10176 return json.Marshal(objectMap) 10177} 10178 10179// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10180func (svtbi SelectVideoTrackByID) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 10181 return nil, false 10182} 10183 10184// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10185func (svtbi SelectVideoTrackByID) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 10186 return nil, false 10187} 10188 10189// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10190func (svtbi SelectVideoTrackByID) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 10191 return nil, false 10192} 10193 10194// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10195func (svtbi SelectVideoTrackByID) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 10196 return nil, false 10197} 10198 10199// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10200func (svtbi SelectVideoTrackByID) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 10201 return nil, false 10202} 10203 10204// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10205func (svtbi SelectVideoTrackByID) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 10206 return &svtbi, true 10207} 10208 10209// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10210func (svtbi SelectVideoTrackByID) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 10211 return nil, false 10212} 10213 10214// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10215func (svtbi SelectVideoTrackByID) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 10216 return &svtbi, true 10217} 10218 10219// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10220func (svtbi SelectVideoTrackByID) AsTrackDescriptor() (*TrackDescriptor, bool) { 10221 return nil, false 10222} 10223 10224// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10225func (svtbi SelectVideoTrackByID) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 10226 return &svtbi, true 10227} 10228 10229// Service a Media Services account. 10230type Service struct { 10231 autorest.Response `json:"-"` 10232 // ServiceProperties - The resource properties. 10233 *ServiceProperties `json:"properties,omitempty"` 10234 // Identity - The Managed Identity for the Media Services account. 10235 Identity *ServiceIdentity `json:"identity,omitempty"` 10236 // SystemData - READ-ONLY; The system metadata relating to this resource. 10237 SystemData *SystemData `json:"systemData,omitempty"` 10238 // Tags - Resource tags. 10239 Tags map[string]*string `json:"tags"` 10240 // Location - The geo-location where the resource lives 10241 Location *string `json:"location,omitempty"` 10242 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 10243 ID *string `json:"id,omitempty"` 10244 // Name - READ-ONLY; The name of the resource 10245 Name *string `json:"name,omitempty"` 10246 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 10247 Type *string `json:"type,omitempty"` 10248} 10249 10250// MarshalJSON is the custom marshaler for Service. 10251func (s Service) MarshalJSON() ([]byte, error) { 10252 objectMap := make(map[string]interface{}) 10253 if s.ServiceProperties != nil { 10254 objectMap["properties"] = s.ServiceProperties 10255 } 10256 if s.Identity != nil { 10257 objectMap["identity"] = s.Identity 10258 } 10259 if s.Tags != nil { 10260 objectMap["tags"] = s.Tags 10261 } 10262 if s.Location != nil { 10263 objectMap["location"] = s.Location 10264 } 10265 return json.Marshal(objectMap) 10266} 10267 10268// UnmarshalJSON is the custom unmarshaler for Service struct. 10269func (s *Service) UnmarshalJSON(body []byte) error { 10270 var m map[string]*json.RawMessage 10271 err := json.Unmarshal(body, &m) 10272 if err != nil { 10273 return err 10274 } 10275 for k, v := range m { 10276 switch k { 10277 case "properties": 10278 if v != nil { 10279 var serviceProperties ServiceProperties 10280 err = json.Unmarshal(*v, &serviceProperties) 10281 if err != nil { 10282 return err 10283 } 10284 s.ServiceProperties = &serviceProperties 10285 } 10286 case "identity": 10287 if v != nil { 10288 var identity ServiceIdentity 10289 err = json.Unmarshal(*v, &identity) 10290 if err != nil { 10291 return err 10292 } 10293 s.Identity = &identity 10294 } 10295 case "systemData": 10296 if v != nil { 10297 var systemData SystemData 10298 err = json.Unmarshal(*v, &systemData) 10299 if err != nil { 10300 return err 10301 } 10302 s.SystemData = &systemData 10303 } 10304 case "tags": 10305 if v != nil { 10306 var tags map[string]*string 10307 err = json.Unmarshal(*v, &tags) 10308 if err != nil { 10309 return err 10310 } 10311 s.Tags = tags 10312 } 10313 case "location": 10314 if v != nil { 10315 var location string 10316 err = json.Unmarshal(*v, &location) 10317 if err != nil { 10318 return err 10319 } 10320 s.Location = &location 10321 } 10322 case "id": 10323 if v != nil { 10324 var ID string 10325 err = json.Unmarshal(*v, &ID) 10326 if err != nil { 10327 return err 10328 } 10329 s.ID = &ID 10330 } 10331 case "name": 10332 if v != nil { 10333 var name string 10334 err = json.Unmarshal(*v, &name) 10335 if err != nil { 10336 return err 10337 } 10338 s.Name = &name 10339 } 10340 case "type": 10341 if v != nil { 10342 var typeVar string 10343 err = json.Unmarshal(*v, &typeVar) 10344 if err != nil { 10345 return err 10346 } 10347 s.Type = &typeVar 10348 } 10349 } 10350 } 10351 10352 return nil 10353} 10354 10355// ServiceCollection a collection of MediaService items. 10356type ServiceCollection struct { 10357 autorest.Response `json:"-"` 10358 // Value - A collection of MediaService items. 10359 Value *[]Service `json:"value,omitempty"` 10360 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 10361 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 10362} 10363 10364// ServiceCollectionIterator provides access to a complete listing of Service values. 10365type ServiceCollectionIterator struct { 10366 i int 10367 page ServiceCollectionPage 10368} 10369 10370// NextWithContext advances to the next value. If there was an error making 10371// the request the iterator does not advance and the error is returned. 10372func (iter *ServiceCollectionIterator) NextWithContext(ctx context.Context) (err error) { 10373 if tracing.IsEnabled() { 10374 ctx = tracing.StartSpan(ctx, fqdn+"/ServiceCollectionIterator.NextWithContext") 10375 defer func() { 10376 sc := -1 10377 if iter.Response().Response.Response != nil { 10378 sc = iter.Response().Response.Response.StatusCode 10379 } 10380 tracing.EndSpan(ctx, sc, err) 10381 }() 10382 } 10383 iter.i++ 10384 if iter.i < len(iter.page.Values()) { 10385 return nil 10386 } 10387 err = iter.page.NextWithContext(ctx) 10388 if err != nil { 10389 iter.i-- 10390 return err 10391 } 10392 iter.i = 0 10393 return nil 10394} 10395 10396// Next advances to the next value. If there was an error making 10397// the request the iterator does not advance and the error is returned. 10398// Deprecated: Use NextWithContext() instead. 10399func (iter *ServiceCollectionIterator) Next() error { 10400 return iter.NextWithContext(context.Background()) 10401} 10402 10403// NotDone returns true if the enumeration should be started or is not yet complete. 10404func (iter ServiceCollectionIterator) NotDone() bool { 10405 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 10406} 10407 10408// Response returns the raw server response from the last page request. 10409func (iter ServiceCollectionIterator) Response() ServiceCollection { 10410 return iter.page.Response() 10411} 10412 10413// Value returns the current value or a zero-initialized value if the 10414// iterator has advanced beyond the end of the collection. 10415func (iter ServiceCollectionIterator) Value() Service { 10416 if !iter.page.NotDone() { 10417 return Service{} 10418 } 10419 return iter.page.Values()[iter.i] 10420} 10421 10422// Creates a new instance of the ServiceCollectionIterator type. 10423func NewServiceCollectionIterator(page ServiceCollectionPage) ServiceCollectionIterator { 10424 return ServiceCollectionIterator{page: page} 10425} 10426 10427// IsEmpty returns true if the ListResult contains no values. 10428func (sc ServiceCollection) IsEmpty() bool { 10429 return sc.Value == nil || len(*sc.Value) == 0 10430} 10431 10432// hasNextLink returns true if the NextLink is not empty. 10433func (sc ServiceCollection) hasNextLink() bool { 10434 return sc.OdataNextLink != nil && len(*sc.OdataNextLink) != 0 10435} 10436 10437// serviceCollectionPreparer prepares a request to retrieve the next set of results. 10438// It returns nil if no more results exist. 10439func (sc ServiceCollection) serviceCollectionPreparer(ctx context.Context) (*http.Request, error) { 10440 if !sc.hasNextLink() { 10441 return nil, nil 10442 } 10443 return autorest.Prepare((&http.Request{}).WithContext(ctx), 10444 autorest.AsJSON(), 10445 autorest.AsGet(), 10446 autorest.WithBaseURL(to.String(sc.OdataNextLink))) 10447} 10448 10449// ServiceCollectionPage contains a page of Service values. 10450type ServiceCollectionPage struct { 10451 fn func(context.Context, ServiceCollection) (ServiceCollection, error) 10452 sc ServiceCollection 10453} 10454 10455// NextWithContext advances to the next page of values. If there was an error making 10456// the request the page does not advance and the error is returned. 10457func (page *ServiceCollectionPage) NextWithContext(ctx context.Context) (err error) { 10458 if tracing.IsEnabled() { 10459 ctx = tracing.StartSpan(ctx, fqdn+"/ServiceCollectionPage.NextWithContext") 10460 defer func() { 10461 sc := -1 10462 if page.Response().Response.Response != nil { 10463 sc = page.Response().Response.Response.StatusCode 10464 } 10465 tracing.EndSpan(ctx, sc, err) 10466 }() 10467 } 10468 for { 10469 next, err := page.fn(ctx, page.sc) 10470 if err != nil { 10471 return err 10472 } 10473 page.sc = next 10474 if !next.hasNextLink() || !next.IsEmpty() { 10475 break 10476 } 10477 } 10478 return nil 10479} 10480 10481// Next advances to the next page of values. If there was an error making 10482// the request the page does not advance and the error is returned. 10483// Deprecated: Use NextWithContext() instead. 10484func (page *ServiceCollectionPage) Next() error { 10485 return page.NextWithContext(context.Background()) 10486} 10487 10488// NotDone returns true if the page enumeration should be started or is not yet complete. 10489func (page ServiceCollectionPage) NotDone() bool { 10490 return !page.sc.IsEmpty() 10491} 10492 10493// Response returns the raw server response from the last page request. 10494func (page ServiceCollectionPage) Response() ServiceCollection { 10495 return page.sc 10496} 10497 10498// Values returns the slice of values for the current page or nil if there are no values. 10499func (page ServiceCollectionPage) Values() []Service { 10500 if page.sc.IsEmpty() { 10501 return nil 10502 } 10503 return *page.sc.Value 10504} 10505 10506// Creates a new instance of the ServiceCollectionPage type. 10507func NewServiceCollectionPage(cur ServiceCollection, getNextPage func(context.Context, ServiceCollection) (ServiceCollection, error)) ServiceCollectionPage { 10508 return ServiceCollectionPage{ 10509 fn: getNextPage, 10510 sc: cur, 10511 } 10512} 10513 10514// ServiceIdentity ... 10515type ServiceIdentity struct { 10516 // Type - The identity type. 10517 Type *string `json:"type,omitempty"` 10518 // PrincipalID - READ-ONLY; The Principal ID of the identity. 10519 PrincipalID *uuid.UUID `json:"principalId,omitempty"` 10520 // TenantID - READ-ONLY; The Tenant ID of the identity. 10521 TenantID *uuid.UUID `json:"tenantId,omitempty"` 10522 // UserAssignedIdentities - The user assigned managed identities. 10523 UserAssignedIdentities map[string]*UserAssignedManagedIdentity `json:"userAssignedIdentities"` 10524} 10525 10526// MarshalJSON is the custom marshaler for ServiceIdentity. 10527func (si ServiceIdentity) MarshalJSON() ([]byte, error) { 10528 objectMap := make(map[string]interface{}) 10529 if si.Type != nil { 10530 objectMap["type"] = si.Type 10531 } 10532 if si.UserAssignedIdentities != nil { 10533 objectMap["userAssignedIdentities"] = si.UserAssignedIdentities 10534 } 10535 return json.Marshal(objectMap) 10536} 10537 10538// ServiceProperties properties of the Media Services account. 10539type ServiceProperties struct { 10540 // MediaServiceID - READ-ONLY; The Media Services account ID. 10541 MediaServiceID *uuid.UUID `json:"mediaServiceId,omitempty"` 10542 // StorageAccounts - The storage accounts for this resource. 10543 StorageAccounts *[]StorageAccount `json:"storageAccounts,omitempty"` 10544 // StorageAuthentication - Possible values include: 'StorageAuthenticationSystem', 'StorageAuthenticationManagedIdentity' 10545 StorageAuthentication StorageAuthentication `json:"storageAuthentication,omitempty"` 10546 // Encryption - The account encryption properties. 10547 Encryption *AccountEncryption `json:"encryption,omitempty"` 10548 // KeyDelivery - The Key Delivery properties for Media Services account. 10549 KeyDelivery *KeyDelivery `json:"keyDelivery,omitempty"` 10550 // PublicNetworkAccess - Whether or not public network access is allowed for resources under the Media Services account. Possible values include: 'PublicNetworkAccessEnabled', 'PublicNetworkAccessDisabled' 10551 PublicNetworkAccess PublicNetworkAccess `json:"publicNetworkAccess,omitempty"` 10552} 10553 10554// MarshalJSON is the custom marshaler for ServiceProperties. 10555func (sp ServiceProperties) MarshalJSON() ([]byte, error) { 10556 objectMap := make(map[string]interface{}) 10557 if sp.StorageAccounts != nil { 10558 objectMap["storageAccounts"] = sp.StorageAccounts 10559 } 10560 if sp.StorageAuthentication != "" { 10561 objectMap["storageAuthentication"] = sp.StorageAuthentication 10562 } 10563 if sp.Encryption != nil { 10564 objectMap["encryption"] = sp.Encryption 10565 } 10566 if sp.KeyDelivery != nil { 10567 objectMap["keyDelivery"] = sp.KeyDelivery 10568 } 10569 if sp.PublicNetworkAccess != "" { 10570 objectMap["publicNetworkAccess"] = sp.PublicNetworkAccess 10571 } 10572 return json.Marshal(objectMap) 10573} 10574 10575// ServiceSpecification the service metric specifications. 10576type ServiceSpecification struct { 10577 // LogSpecifications - READ-ONLY; List of log specifications. 10578 LogSpecifications *[]LogSpecification `json:"logSpecifications,omitempty"` 10579 // MetricSpecifications - READ-ONLY; List of metric specifications. 10580 MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"` 10581} 10582 10583// MarshalJSON is the custom marshaler for ServiceSpecification. 10584func (ss ServiceSpecification) MarshalJSON() ([]byte, error) { 10585 objectMap := make(map[string]interface{}) 10586 return json.Marshal(objectMap) 10587} 10588 10589// ServiceUpdate a Media Services account update. 10590type ServiceUpdate struct { 10591 // Tags - Resource tags. 10592 Tags map[string]*string `json:"tags"` 10593 // ServiceProperties - The resource properties. 10594 *ServiceProperties `json:"properties,omitempty"` 10595 // Identity - The Managed Identity for the Media Services account. 10596 Identity *ServiceIdentity `json:"identity,omitempty"` 10597} 10598 10599// MarshalJSON is the custom marshaler for ServiceUpdate. 10600func (su ServiceUpdate) MarshalJSON() ([]byte, error) { 10601 objectMap := make(map[string]interface{}) 10602 if su.Tags != nil { 10603 objectMap["tags"] = su.Tags 10604 } 10605 if su.ServiceProperties != nil { 10606 objectMap["properties"] = su.ServiceProperties 10607 } 10608 if su.Identity != nil { 10609 objectMap["identity"] = su.Identity 10610 } 10611 return json.Marshal(objectMap) 10612} 10613 10614// UnmarshalJSON is the custom unmarshaler for ServiceUpdate struct. 10615func (su *ServiceUpdate) UnmarshalJSON(body []byte) error { 10616 var m map[string]*json.RawMessage 10617 err := json.Unmarshal(body, &m) 10618 if err != nil { 10619 return err 10620 } 10621 for k, v := range m { 10622 switch k { 10623 case "tags": 10624 if v != nil { 10625 var tags map[string]*string 10626 err = json.Unmarshal(*v, &tags) 10627 if err != nil { 10628 return err 10629 } 10630 su.Tags = tags 10631 } 10632 case "properties": 10633 if v != nil { 10634 var serviceProperties ServiceProperties 10635 err = json.Unmarshal(*v, &serviceProperties) 10636 if err != nil { 10637 return err 10638 } 10639 su.ServiceProperties = &serviceProperties 10640 } 10641 case "identity": 10642 if v != nil { 10643 var identity ServiceIdentity 10644 err = json.Unmarshal(*v, &identity) 10645 if err != nil { 10646 return err 10647 } 10648 su.Identity = &identity 10649 } 10650 } 10651 } 10652 10653 return nil 10654} 10655 10656// StandardEncoderPreset describes all the settings to be used when encoding the input video with the 10657// Standard Encoder. 10658type StandardEncoderPreset struct { 10659 // Filters - One or more filtering operations that are applied to the input media before encoding. 10660 Filters *Filters `json:"filters,omitempty"` 10661 // Codecs - The list of codecs to be used when encoding the input video. 10662 Codecs *[]BasicCodec `json:"codecs,omitempty"` 10663 // Formats - The list of outputs to be produced by the encoder. 10664 Formats *[]BasicFormat `json:"formats,omitempty"` 10665 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 10666 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 10667} 10668 10669// MarshalJSON is the custom marshaler for StandardEncoderPreset. 10670func (sep StandardEncoderPreset) MarshalJSON() ([]byte, error) { 10671 sep.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset 10672 objectMap := make(map[string]interface{}) 10673 if sep.Filters != nil { 10674 objectMap["filters"] = sep.Filters 10675 } 10676 if sep.Codecs != nil { 10677 objectMap["codecs"] = sep.Codecs 10678 } 10679 if sep.Formats != nil { 10680 objectMap["formats"] = sep.Formats 10681 } 10682 if sep.OdataType != "" { 10683 objectMap["@odata.type"] = sep.OdataType 10684 } 10685 return json.Marshal(objectMap) 10686} 10687 10688// AsFaceDetectorPreset is the BasicPreset implementation for StandardEncoderPreset. 10689func (sep StandardEncoderPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 10690 return nil, false 10691} 10692 10693// AsAudioAnalyzerPreset is the BasicPreset implementation for StandardEncoderPreset. 10694func (sep StandardEncoderPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 10695 return nil, false 10696} 10697 10698// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for StandardEncoderPreset. 10699func (sep StandardEncoderPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 10700 return nil, false 10701} 10702 10703// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for StandardEncoderPreset. 10704func (sep StandardEncoderPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 10705 return nil, false 10706} 10707 10708// AsStandardEncoderPreset is the BasicPreset implementation for StandardEncoderPreset. 10709func (sep StandardEncoderPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 10710 return &sep, true 10711} 10712 10713// AsVideoAnalyzerPreset is the BasicPreset implementation for StandardEncoderPreset. 10714func (sep StandardEncoderPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 10715 return nil, false 10716} 10717 10718// AsPreset is the BasicPreset implementation for StandardEncoderPreset. 10719func (sep StandardEncoderPreset) AsPreset() (*Preset, bool) { 10720 return nil, false 10721} 10722 10723// AsBasicPreset is the BasicPreset implementation for StandardEncoderPreset. 10724func (sep StandardEncoderPreset) AsBasicPreset() (BasicPreset, bool) { 10725 return &sep, true 10726} 10727 10728// UnmarshalJSON is the custom unmarshaler for StandardEncoderPreset struct. 10729func (sep *StandardEncoderPreset) UnmarshalJSON(body []byte) error { 10730 var m map[string]*json.RawMessage 10731 err := json.Unmarshal(body, &m) 10732 if err != nil { 10733 return err 10734 } 10735 for k, v := range m { 10736 switch k { 10737 case "filters": 10738 if v != nil { 10739 var filters Filters 10740 err = json.Unmarshal(*v, &filters) 10741 if err != nil { 10742 return err 10743 } 10744 sep.Filters = &filters 10745 } 10746 case "codecs": 10747 if v != nil { 10748 codecs, err := unmarshalBasicCodecArray(*v) 10749 if err != nil { 10750 return err 10751 } 10752 sep.Codecs = &codecs 10753 } 10754 case "formats": 10755 if v != nil { 10756 formats, err := unmarshalBasicFormatArray(*v) 10757 if err != nil { 10758 return err 10759 } 10760 sep.Formats = &formats 10761 } 10762 case "@odata.type": 10763 if v != nil { 10764 var odataType OdataTypeBasicPreset 10765 err = json.Unmarshal(*v, &odataType) 10766 if err != nil { 10767 return err 10768 } 10769 sep.OdataType = odataType 10770 } 10771 } 10772 } 10773 10774 return nil 10775} 10776 10777// StorageAccount the storage account details. 10778type StorageAccount struct { 10779 // ID - The ID of the storage account resource. Media Services relies on tables and queues as well as blobs, so the primary storage account must be a Standard Storage account (either Microsoft.ClassicStorage or Microsoft.Storage). Blob only storage accounts can be added as secondary storage accounts. 10780 ID *string `json:"id,omitempty"` 10781 // Type - The type of the storage account. Possible values include: 'StorageAccountTypePrimary', 'StorageAccountTypeSecondary' 10782 Type StorageAccountType `json:"type,omitempty"` 10783 // Identity - The storage account identity. 10784 Identity *ResourceIdentity `json:"identity,omitempty"` 10785 // Status - READ-ONLY; The current status of the storage account mapping. 10786 Status *string `json:"status,omitempty"` 10787} 10788 10789// MarshalJSON is the custom marshaler for StorageAccount. 10790func (sa StorageAccount) MarshalJSON() ([]byte, error) { 10791 objectMap := make(map[string]interface{}) 10792 if sa.ID != nil { 10793 objectMap["id"] = sa.ID 10794 } 10795 if sa.Type != "" { 10796 objectMap["type"] = sa.Type 10797 } 10798 if sa.Identity != nil { 10799 objectMap["identity"] = sa.Identity 10800 } 10801 return json.Marshal(objectMap) 10802} 10803 10804// StorageEncryptedAssetDecryptionData data needed to decrypt asset files encrypted with legacy storage 10805// encryption. 10806type StorageEncryptedAssetDecryptionData struct { 10807 autorest.Response `json:"-"` 10808 // Key - The Asset File storage encryption key. 10809 Key *[]byte `json:"key,omitempty"` 10810 // AssetFileEncryptionMetadata - Asset File encryption metadata. 10811 AssetFileEncryptionMetadata *[]AssetFileEncryptionMetadata `json:"assetFileEncryptionMetadata,omitempty"` 10812} 10813 10814// StreamingEndpoint the streaming endpoint. 10815type StreamingEndpoint struct { 10816 autorest.Response `json:"-"` 10817 // StreamingEndpointProperties - The streaming endpoint properties. 10818 *StreamingEndpointProperties `json:"properties,omitempty"` 10819 // SystemData - READ-ONLY; The system metadata relating to this resource. 10820 SystemData *SystemData `json:"systemData,omitempty"` 10821 // Tags - Resource tags. 10822 Tags map[string]*string `json:"tags"` 10823 // Location - The geo-location where the resource lives 10824 Location *string `json:"location,omitempty"` 10825 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 10826 ID *string `json:"id,omitempty"` 10827 // Name - READ-ONLY; The name of the resource 10828 Name *string `json:"name,omitempty"` 10829 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 10830 Type *string `json:"type,omitempty"` 10831} 10832 10833// MarshalJSON is the custom marshaler for StreamingEndpoint. 10834func (se StreamingEndpoint) MarshalJSON() ([]byte, error) { 10835 objectMap := make(map[string]interface{}) 10836 if se.StreamingEndpointProperties != nil { 10837 objectMap["properties"] = se.StreamingEndpointProperties 10838 } 10839 if se.Tags != nil { 10840 objectMap["tags"] = se.Tags 10841 } 10842 if se.Location != nil { 10843 objectMap["location"] = se.Location 10844 } 10845 return json.Marshal(objectMap) 10846} 10847 10848// UnmarshalJSON is the custom unmarshaler for StreamingEndpoint struct. 10849func (se *StreamingEndpoint) UnmarshalJSON(body []byte) error { 10850 var m map[string]*json.RawMessage 10851 err := json.Unmarshal(body, &m) 10852 if err != nil { 10853 return err 10854 } 10855 for k, v := range m { 10856 switch k { 10857 case "properties": 10858 if v != nil { 10859 var streamingEndpointProperties StreamingEndpointProperties 10860 err = json.Unmarshal(*v, &streamingEndpointProperties) 10861 if err != nil { 10862 return err 10863 } 10864 se.StreamingEndpointProperties = &streamingEndpointProperties 10865 } 10866 case "systemData": 10867 if v != nil { 10868 var systemData SystemData 10869 err = json.Unmarshal(*v, &systemData) 10870 if err != nil { 10871 return err 10872 } 10873 se.SystemData = &systemData 10874 } 10875 case "tags": 10876 if v != nil { 10877 var tags map[string]*string 10878 err = json.Unmarshal(*v, &tags) 10879 if err != nil { 10880 return err 10881 } 10882 se.Tags = tags 10883 } 10884 case "location": 10885 if v != nil { 10886 var location string 10887 err = json.Unmarshal(*v, &location) 10888 if err != nil { 10889 return err 10890 } 10891 se.Location = &location 10892 } 10893 case "id": 10894 if v != nil { 10895 var ID string 10896 err = json.Unmarshal(*v, &ID) 10897 if err != nil { 10898 return err 10899 } 10900 se.ID = &ID 10901 } 10902 case "name": 10903 if v != nil { 10904 var name string 10905 err = json.Unmarshal(*v, &name) 10906 if err != nil { 10907 return err 10908 } 10909 se.Name = &name 10910 } 10911 case "type": 10912 if v != nil { 10913 var typeVar string 10914 err = json.Unmarshal(*v, &typeVar) 10915 if err != nil { 10916 return err 10917 } 10918 se.Type = &typeVar 10919 } 10920 } 10921 } 10922 10923 return nil 10924} 10925 10926// StreamingEndpointAccessControl streaming endpoint access control definition. 10927type StreamingEndpointAccessControl struct { 10928 // Akamai - The access control of Akamai 10929 Akamai *AkamaiAccessControl `json:"akamai,omitempty"` 10930 // IP - The IP access control of the streaming endpoint. 10931 IP *IPAccessControl `json:"ip,omitempty"` 10932} 10933 10934// StreamingEndpointListResult the streaming endpoint list result. 10935type StreamingEndpointListResult struct { 10936 autorest.Response `json:"-"` 10937 // Value - The result of the List StreamingEndpoint operation. 10938 Value *[]StreamingEndpoint `json:"value,omitempty"` 10939 // OdataCount - The number of result. 10940 OdataCount *int32 `json:"@odata.count,omitempty"` 10941 // OdataNextLink - The link to the next set of results. Not empty if value contains incomplete list of streaming endpoints. 10942 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 10943} 10944 10945// StreamingEndpointListResultIterator provides access to a complete listing of StreamingEndpoint values. 10946type StreamingEndpointListResultIterator struct { 10947 i int 10948 page StreamingEndpointListResultPage 10949} 10950 10951// NextWithContext advances to the next value. If there was an error making 10952// the request the iterator does not advance and the error is returned. 10953func (iter *StreamingEndpointListResultIterator) NextWithContext(ctx context.Context) (err error) { 10954 if tracing.IsEnabled() { 10955 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingEndpointListResultIterator.NextWithContext") 10956 defer func() { 10957 sc := -1 10958 if iter.Response().Response.Response != nil { 10959 sc = iter.Response().Response.Response.StatusCode 10960 } 10961 tracing.EndSpan(ctx, sc, err) 10962 }() 10963 } 10964 iter.i++ 10965 if iter.i < len(iter.page.Values()) { 10966 return nil 10967 } 10968 err = iter.page.NextWithContext(ctx) 10969 if err != nil { 10970 iter.i-- 10971 return err 10972 } 10973 iter.i = 0 10974 return nil 10975} 10976 10977// Next advances to the next value. If there was an error making 10978// the request the iterator does not advance and the error is returned. 10979// Deprecated: Use NextWithContext() instead. 10980func (iter *StreamingEndpointListResultIterator) Next() error { 10981 return iter.NextWithContext(context.Background()) 10982} 10983 10984// NotDone returns true if the enumeration should be started or is not yet complete. 10985func (iter StreamingEndpointListResultIterator) NotDone() bool { 10986 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 10987} 10988 10989// Response returns the raw server response from the last page request. 10990func (iter StreamingEndpointListResultIterator) Response() StreamingEndpointListResult { 10991 return iter.page.Response() 10992} 10993 10994// Value returns the current value or a zero-initialized value if the 10995// iterator has advanced beyond the end of the collection. 10996func (iter StreamingEndpointListResultIterator) Value() StreamingEndpoint { 10997 if !iter.page.NotDone() { 10998 return StreamingEndpoint{} 10999 } 11000 return iter.page.Values()[iter.i] 11001} 11002 11003// Creates a new instance of the StreamingEndpointListResultIterator type. 11004func NewStreamingEndpointListResultIterator(page StreamingEndpointListResultPage) StreamingEndpointListResultIterator { 11005 return StreamingEndpointListResultIterator{page: page} 11006} 11007 11008// IsEmpty returns true if the ListResult contains no values. 11009func (selr StreamingEndpointListResult) IsEmpty() bool { 11010 return selr.Value == nil || len(*selr.Value) == 0 11011} 11012 11013// hasNextLink returns true if the NextLink is not empty. 11014func (selr StreamingEndpointListResult) hasNextLink() bool { 11015 return selr.OdataNextLink != nil && len(*selr.OdataNextLink) != 0 11016} 11017 11018// streamingEndpointListResultPreparer prepares a request to retrieve the next set of results. 11019// It returns nil if no more results exist. 11020func (selr StreamingEndpointListResult) streamingEndpointListResultPreparer(ctx context.Context) (*http.Request, error) { 11021 if !selr.hasNextLink() { 11022 return nil, nil 11023 } 11024 return autorest.Prepare((&http.Request{}).WithContext(ctx), 11025 autorest.AsJSON(), 11026 autorest.AsGet(), 11027 autorest.WithBaseURL(to.String(selr.OdataNextLink))) 11028} 11029 11030// StreamingEndpointListResultPage contains a page of StreamingEndpoint values. 11031type StreamingEndpointListResultPage struct { 11032 fn func(context.Context, StreamingEndpointListResult) (StreamingEndpointListResult, error) 11033 selr StreamingEndpointListResult 11034} 11035 11036// NextWithContext advances to the next page of values. If there was an error making 11037// the request the page does not advance and the error is returned. 11038func (page *StreamingEndpointListResultPage) NextWithContext(ctx context.Context) (err error) { 11039 if tracing.IsEnabled() { 11040 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingEndpointListResultPage.NextWithContext") 11041 defer func() { 11042 sc := -1 11043 if page.Response().Response.Response != nil { 11044 sc = page.Response().Response.Response.StatusCode 11045 } 11046 tracing.EndSpan(ctx, sc, err) 11047 }() 11048 } 11049 for { 11050 next, err := page.fn(ctx, page.selr) 11051 if err != nil { 11052 return err 11053 } 11054 page.selr = next 11055 if !next.hasNextLink() || !next.IsEmpty() { 11056 break 11057 } 11058 } 11059 return nil 11060} 11061 11062// Next advances to the next page of values. If there was an error making 11063// the request the page does not advance and the error is returned. 11064// Deprecated: Use NextWithContext() instead. 11065func (page *StreamingEndpointListResultPage) Next() error { 11066 return page.NextWithContext(context.Background()) 11067} 11068 11069// NotDone returns true if the page enumeration should be started or is not yet complete. 11070func (page StreamingEndpointListResultPage) NotDone() bool { 11071 return !page.selr.IsEmpty() 11072} 11073 11074// Response returns the raw server response from the last page request. 11075func (page StreamingEndpointListResultPage) Response() StreamingEndpointListResult { 11076 return page.selr 11077} 11078 11079// Values returns the slice of values for the current page or nil if there are no values. 11080func (page StreamingEndpointListResultPage) Values() []StreamingEndpoint { 11081 if page.selr.IsEmpty() { 11082 return nil 11083 } 11084 return *page.selr.Value 11085} 11086 11087// Creates a new instance of the StreamingEndpointListResultPage type. 11088func NewStreamingEndpointListResultPage(cur StreamingEndpointListResult, getNextPage func(context.Context, StreamingEndpointListResult) (StreamingEndpointListResult, error)) StreamingEndpointListResultPage { 11089 return StreamingEndpointListResultPage{ 11090 fn: getNextPage, 11091 selr: cur, 11092 } 11093} 11094 11095// StreamingEndpointProperties the streaming endpoint properties. 11096type StreamingEndpointProperties struct { 11097 // Description - The streaming endpoint description. 11098 Description *string `json:"description,omitempty"` 11099 // ScaleUnits - The number of scale units. Use the Scale operation to adjust this value. 11100 ScaleUnits *int32 `json:"scaleUnits,omitempty"` 11101 // AvailabilitySetName - This feature is deprecated, do not set a value for this property. 11102 AvailabilitySetName *string `json:"availabilitySetName,omitempty"` 11103 // AccessControl - The access control definition of the streaming endpoint. 11104 AccessControl *StreamingEndpointAccessControl `json:"accessControl,omitempty"` 11105 // MaxCacheAge - Max cache age 11106 MaxCacheAge *int64 `json:"maxCacheAge,omitempty"` 11107 // CustomHostNames - The custom host names of the streaming endpoint 11108 CustomHostNames *[]string `json:"customHostNames,omitempty"` 11109 // HostName - READ-ONLY; The streaming endpoint host name. 11110 HostName *string `json:"hostName,omitempty"` 11111 // CdnEnabled - The CDN enabled flag. 11112 CdnEnabled *bool `json:"cdnEnabled,omitempty"` 11113 // CdnProvider - The CDN provider name. 11114 CdnProvider *string `json:"cdnProvider,omitempty"` 11115 // CdnProfile - The CDN profile name. 11116 CdnProfile *string `json:"cdnProfile,omitempty"` 11117 // ProvisioningState - READ-ONLY; The provisioning state of the streaming endpoint. 11118 ProvisioningState *string `json:"provisioningState,omitempty"` 11119 // ResourceState - READ-ONLY; The resource state of the streaming endpoint. Possible values include: 'StreamingEndpointResourceStateStopped', 'StreamingEndpointResourceStateStarting', 'StreamingEndpointResourceStateRunning', 'StreamingEndpointResourceStateStopping', 'StreamingEndpointResourceStateDeleting', 'StreamingEndpointResourceStateScaling' 11120 ResourceState StreamingEndpointResourceState `json:"resourceState,omitempty"` 11121 // CrossSiteAccessPolicies - The streaming endpoint access policies. 11122 CrossSiteAccessPolicies *CrossSiteAccessPolicies `json:"crossSiteAccessPolicies,omitempty"` 11123 // FreeTrialEndTime - READ-ONLY; The free trial expiration time. 11124 FreeTrialEndTime *date.Time `json:"freeTrialEndTime,omitempty"` 11125 // Created - READ-ONLY; The exact time the streaming endpoint was created. 11126 Created *date.Time `json:"created,omitempty"` 11127 // LastModified - READ-ONLY; The exact time the streaming endpoint was last modified. 11128 LastModified *date.Time `json:"lastModified,omitempty"` 11129} 11130 11131// MarshalJSON is the custom marshaler for StreamingEndpointProperties. 11132func (sep StreamingEndpointProperties) MarshalJSON() ([]byte, error) { 11133 objectMap := make(map[string]interface{}) 11134 if sep.Description != nil { 11135 objectMap["description"] = sep.Description 11136 } 11137 if sep.ScaleUnits != nil { 11138 objectMap["scaleUnits"] = sep.ScaleUnits 11139 } 11140 if sep.AvailabilitySetName != nil { 11141 objectMap["availabilitySetName"] = sep.AvailabilitySetName 11142 } 11143 if sep.AccessControl != nil { 11144 objectMap["accessControl"] = sep.AccessControl 11145 } 11146 if sep.MaxCacheAge != nil { 11147 objectMap["maxCacheAge"] = sep.MaxCacheAge 11148 } 11149 if sep.CustomHostNames != nil { 11150 objectMap["customHostNames"] = sep.CustomHostNames 11151 } 11152 if sep.CdnEnabled != nil { 11153 objectMap["cdnEnabled"] = sep.CdnEnabled 11154 } 11155 if sep.CdnProvider != nil { 11156 objectMap["cdnProvider"] = sep.CdnProvider 11157 } 11158 if sep.CdnProfile != nil { 11159 objectMap["cdnProfile"] = sep.CdnProfile 11160 } 11161 if sep.CrossSiteAccessPolicies != nil { 11162 objectMap["crossSiteAccessPolicies"] = sep.CrossSiteAccessPolicies 11163 } 11164 return json.Marshal(objectMap) 11165} 11166 11167// StreamingEndpointsCreateFuture an abstraction for monitoring and retrieving the results of a 11168// long-running operation. 11169type StreamingEndpointsCreateFuture struct { 11170 azure.FutureAPI 11171 // Result returns the result of the asynchronous operation. 11172 // If the operation has not completed it will return an error. 11173 Result func(StreamingEndpointsClient) (StreamingEndpoint, error) 11174} 11175 11176// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11177func (future *StreamingEndpointsCreateFuture) UnmarshalJSON(body []byte) error { 11178 var azFuture azure.Future 11179 if err := json.Unmarshal(body, &azFuture); err != nil { 11180 return err 11181 } 11182 future.FutureAPI = &azFuture 11183 future.Result = future.result 11184 return nil 11185} 11186 11187// result is the default implementation for StreamingEndpointsCreateFuture.Result. 11188func (future *StreamingEndpointsCreateFuture) result(client StreamingEndpointsClient) (se StreamingEndpoint, err error) { 11189 var done bool 11190 done, err = future.DoneWithContext(context.Background(), client) 11191 if err != nil { 11192 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsCreateFuture", "Result", future.Response(), "Polling failure") 11193 return 11194 } 11195 if !done { 11196 se.Response.Response = future.Response() 11197 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsCreateFuture") 11198 return 11199 } 11200 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 11201 if se.Response.Response, err = future.GetResult(sender); err == nil && se.Response.Response.StatusCode != http.StatusNoContent { 11202 se, err = client.CreateResponder(se.Response.Response) 11203 if err != nil { 11204 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsCreateFuture", "Result", se.Response.Response, "Failure responding to request") 11205 } 11206 } 11207 return 11208} 11209 11210// StreamingEndpointsDeleteFuture an abstraction for monitoring and retrieving the results of a 11211// long-running operation. 11212type StreamingEndpointsDeleteFuture struct { 11213 azure.FutureAPI 11214 // Result returns the result of the asynchronous operation. 11215 // If the operation has not completed it will return an error. 11216 Result func(StreamingEndpointsClient) (autorest.Response, error) 11217} 11218 11219// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11220func (future *StreamingEndpointsDeleteFuture) UnmarshalJSON(body []byte) error { 11221 var azFuture azure.Future 11222 if err := json.Unmarshal(body, &azFuture); err != nil { 11223 return err 11224 } 11225 future.FutureAPI = &azFuture 11226 future.Result = future.result 11227 return nil 11228} 11229 11230// result is the default implementation for StreamingEndpointsDeleteFuture.Result. 11231func (future *StreamingEndpointsDeleteFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11232 var done bool 11233 done, err = future.DoneWithContext(context.Background(), client) 11234 if err != nil { 11235 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsDeleteFuture", "Result", future.Response(), "Polling failure") 11236 return 11237 } 11238 if !done { 11239 ar.Response = future.Response() 11240 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsDeleteFuture") 11241 return 11242 } 11243 ar.Response = future.Response() 11244 return 11245} 11246 11247// StreamingEndpointsScaleFuture an abstraction for monitoring and retrieving the results of a long-running 11248// operation. 11249type StreamingEndpointsScaleFuture struct { 11250 azure.FutureAPI 11251 // Result returns the result of the asynchronous operation. 11252 // If the operation has not completed it will return an error. 11253 Result func(StreamingEndpointsClient) (autorest.Response, error) 11254} 11255 11256// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11257func (future *StreamingEndpointsScaleFuture) UnmarshalJSON(body []byte) error { 11258 var azFuture azure.Future 11259 if err := json.Unmarshal(body, &azFuture); err != nil { 11260 return err 11261 } 11262 future.FutureAPI = &azFuture 11263 future.Result = future.result 11264 return nil 11265} 11266 11267// result is the default implementation for StreamingEndpointsScaleFuture.Result. 11268func (future *StreamingEndpointsScaleFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11269 var done bool 11270 done, err = future.DoneWithContext(context.Background(), client) 11271 if err != nil { 11272 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsScaleFuture", "Result", future.Response(), "Polling failure") 11273 return 11274 } 11275 if !done { 11276 ar.Response = future.Response() 11277 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsScaleFuture") 11278 return 11279 } 11280 ar.Response = future.Response() 11281 return 11282} 11283 11284// StreamingEndpointsStartFuture an abstraction for monitoring and retrieving the results of a long-running 11285// operation. 11286type StreamingEndpointsStartFuture struct { 11287 azure.FutureAPI 11288 // Result returns the result of the asynchronous operation. 11289 // If the operation has not completed it will return an error. 11290 Result func(StreamingEndpointsClient) (autorest.Response, error) 11291} 11292 11293// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11294func (future *StreamingEndpointsStartFuture) UnmarshalJSON(body []byte) error { 11295 var azFuture azure.Future 11296 if err := json.Unmarshal(body, &azFuture); err != nil { 11297 return err 11298 } 11299 future.FutureAPI = &azFuture 11300 future.Result = future.result 11301 return nil 11302} 11303 11304// result is the default implementation for StreamingEndpointsStartFuture.Result. 11305func (future *StreamingEndpointsStartFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11306 var done bool 11307 done, err = future.DoneWithContext(context.Background(), client) 11308 if err != nil { 11309 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsStartFuture", "Result", future.Response(), "Polling failure") 11310 return 11311 } 11312 if !done { 11313 ar.Response = future.Response() 11314 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsStartFuture") 11315 return 11316 } 11317 ar.Response = future.Response() 11318 return 11319} 11320 11321// StreamingEndpointsStopFuture an abstraction for monitoring and retrieving the results of a long-running 11322// operation. 11323type StreamingEndpointsStopFuture struct { 11324 azure.FutureAPI 11325 // Result returns the result of the asynchronous operation. 11326 // If the operation has not completed it will return an error. 11327 Result func(StreamingEndpointsClient) (autorest.Response, error) 11328} 11329 11330// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11331func (future *StreamingEndpointsStopFuture) UnmarshalJSON(body []byte) error { 11332 var azFuture azure.Future 11333 if err := json.Unmarshal(body, &azFuture); err != nil { 11334 return err 11335 } 11336 future.FutureAPI = &azFuture 11337 future.Result = future.result 11338 return nil 11339} 11340 11341// result is the default implementation for StreamingEndpointsStopFuture.Result. 11342func (future *StreamingEndpointsStopFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11343 var done bool 11344 done, err = future.DoneWithContext(context.Background(), client) 11345 if err != nil { 11346 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsStopFuture", "Result", future.Response(), "Polling failure") 11347 return 11348 } 11349 if !done { 11350 ar.Response = future.Response() 11351 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsStopFuture") 11352 return 11353 } 11354 ar.Response = future.Response() 11355 return 11356} 11357 11358// StreamingEndpointsUpdateFuture an abstraction for monitoring and retrieving the results of a 11359// long-running operation. 11360type StreamingEndpointsUpdateFuture struct { 11361 azure.FutureAPI 11362 // Result returns the result of the asynchronous operation. 11363 // If the operation has not completed it will return an error. 11364 Result func(StreamingEndpointsClient) (StreamingEndpoint, error) 11365} 11366 11367// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11368func (future *StreamingEndpointsUpdateFuture) UnmarshalJSON(body []byte) error { 11369 var azFuture azure.Future 11370 if err := json.Unmarshal(body, &azFuture); err != nil { 11371 return err 11372 } 11373 future.FutureAPI = &azFuture 11374 future.Result = future.result 11375 return nil 11376} 11377 11378// result is the default implementation for StreamingEndpointsUpdateFuture.Result. 11379func (future *StreamingEndpointsUpdateFuture) result(client StreamingEndpointsClient) (se StreamingEndpoint, err error) { 11380 var done bool 11381 done, err = future.DoneWithContext(context.Background(), client) 11382 if err != nil { 11383 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsUpdateFuture", "Result", future.Response(), "Polling failure") 11384 return 11385 } 11386 if !done { 11387 se.Response.Response = future.Response() 11388 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsUpdateFuture") 11389 return 11390 } 11391 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 11392 if se.Response.Response, err = future.GetResult(sender); err == nil && se.Response.Response.StatusCode != http.StatusNoContent { 11393 se, err = client.UpdateResponder(se.Response.Response) 11394 if err != nil { 11395 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsUpdateFuture", "Result", se.Response.Response, "Failure responding to request") 11396 } 11397 } 11398 return 11399} 11400 11401// StreamingEntityScaleUnit scale units definition 11402type StreamingEntityScaleUnit struct { 11403 // ScaleUnit - The scale unit number of the streaming endpoint. 11404 ScaleUnit *int32 `json:"scaleUnit,omitempty"` 11405} 11406 11407// StreamingLocator a Streaming Locator resource 11408type StreamingLocator struct { 11409 autorest.Response `json:"-"` 11410 *StreamingLocatorProperties `json:"properties,omitempty"` 11411 // SystemData - READ-ONLY; The system metadata relating to this resource. 11412 SystemData *SystemData `json:"systemData,omitempty"` 11413 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 11414 ID *string `json:"id,omitempty"` 11415 // Name - READ-ONLY; The name of the resource 11416 Name *string `json:"name,omitempty"` 11417 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 11418 Type *string `json:"type,omitempty"` 11419} 11420 11421// MarshalJSON is the custom marshaler for StreamingLocator. 11422func (sl StreamingLocator) MarshalJSON() ([]byte, error) { 11423 objectMap := make(map[string]interface{}) 11424 if sl.StreamingLocatorProperties != nil { 11425 objectMap["properties"] = sl.StreamingLocatorProperties 11426 } 11427 return json.Marshal(objectMap) 11428} 11429 11430// UnmarshalJSON is the custom unmarshaler for StreamingLocator struct. 11431func (sl *StreamingLocator) UnmarshalJSON(body []byte) error { 11432 var m map[string]*json.RawMessage 11433 err := json.Unmarshal(body, &m) 11434 if err != nil { 11435 return err 11436 } 11437 for k, v := range m { 11438 switch k { 11439 case "properties": 11440 if v != nil { 11441 var streamingLocatorProperties StreamingLocatorProperties 11442 err = json.Unmarshal(*v, &streamingLocatorProperties) 11443 if err != nil { 11444 return err 11445 } 11446 sl.StreamingLocatorProperties = &streamingLocatorProperties 11447 } 11448 case "systemData": 11449 if v != nil { 11450 var systemData SystemData 11451 err = json.Unmarshal(*v, &systemData) 11452 if err != nil { 11453 return err 11454 } 11455 sl.SystemData = &systemData 11456 } 11457 case "id": 11458 if v != nil { 11459 var ID string 11460 err = json.Unmarshal(*v, &ID) 11461 if err != nil { 11462 return err 11463 } 11464 sl.ID = &ID 11465 } 11466 case "name": 11467 if v != nil { 11468 var name string 11469 err = json.Unmarshal(*v, &name) 11470 if err != nil { 11471 return err 11472 } 11473 sl.Name = &name 11474 } 11475 case "type": 11476 if v != nil { 11477 var typeVar string 11478 err = json.Unmarshal(*v, &typeVar) 11479 if err != nil { 11480 return err 11481 } 11482 sl.Type = &typeVar 11483 } 11484 } 11485 } 11486 11487 return nil 11488} 11489 11490// StreamingLocatorCollection a collection of StreamingLocator items. 11491type StreamingLocatorCollection struct { 11492 autorest.Response `json:"-"` 11493 // Value - A collection of StreamingLocator items. 11494 Value *[]StreamingLocator `json:"value,omitempty"` 11495 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 11496 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 11497} 11498 11499// StreamingLocatorCollectionIterator provides access to a complete listing of StreamingLocator values. 11500type StreamingLocatorCollectionIterator struct { 11501 i int 11502 page StreamingLocatorCollectionPage 11503} 11504 11505// NextWithContext advances to the next value. If there was an error making 11506// the request the iterator does not advance and the error is returned. 11507func (iter *StreamingLocatorCollectionIterator) NextWithContext(ctx context.Context) (err error) { 11508 if tracing.IsEnabled() { 11509 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingLocatorCollectionIterator.NextWithContext") 11510 defer func() { 11511 sc := -1 11512 if iter.Response().Response.Response != nil { 11513 sc = iter.Response().Response.Response.StatusCode 11514 } 11515 tracing.EndSpan(ctx, sc, err) 11516 }() 11517 } 11518 iter.i++ 11519 if iter.i < len(iter.page.Values()) { 11520 return nil 11521 } 11522 err = iter.page.NextWithContext(ctx) 11523 if err != nil { 11524 iter.i-- 11525 return err 11526 } 11527 iter.i = 0 11528 return nil 11529} 11530 11531// Next advances to the next value. If there was an error making 11532// the request the iterator does not advance and the error is returned. 11533// Deprecated: Use NextWithContext() instead. 11534func (iter *StreamingLocatorCollectionIterator) Next() error { 11535 return iter.NextWithContext(context.Background()) 11536} 11537 11538// NotDone returns true if the enumeration should be started or is not yet complete. 11539func (iter StreamingLocatorCollectionIterator) NotDone() bool { 11540 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 11541} 11542 11543// Response returns the raw server response from the last page request. 11544func (iter StreamingLocatorCollectionIterator) Response() StreamingLocatorCollection { 11545 return iter.page.Response() 11546} 11547 11548// Value returns the current value or a zero-initialized value if the 11549// iterator has advanced beyond the end of the collection. 11550func (iter StreamingLocatorCollectionIterator) Value() StreamingLocator { 11551 if !iter.page.NotDone() { 11552 return StreamingLocator{} 11553 } 11554 return iter.page.Values()[iter.i] 11555} 11556 11557// Creates a new instance of the StreamingLocatorCollectionIterator type. 11558func NewStreamingLocatorCollectionIterator(page StreamingLocatorCollectionPage) StreamingLocatorCollectionIterator { 11559 return StreamingLocatorCollectionIterator{page: page} 11560} 11561 11562// IsEmpty returns true if the ListResult contains no values. 11563func (slc StreamingLocatorCollection) IsEmpty() bool { 11564 return slc.Value == nil || len(*slc.Value) == 0 11565} 11566 11567// hasNextLink returns true if the NextLink is not empty. 11568func (slc StreamingLocatorCollection) hasNextLink() bool { 11569 return slc.OdataNextLink != nil && len(*slc.OdataNextLink) != 0 11570} 11571 11572// streamingLocatorCollectionPreparer prepares a request to retrieve the next set of results. 11573// It returns nil if no more results exist. 11574func (slc StreamingLocatorCollection) streamingLocatorCollectionPreparer(ctx context.Context) (*http.Request, error) { 11575 if !slc.hasNextLink() { 11576 return nil, nil 11577 } 11578 return autorest.Prepare((&http.Request{}).WithContext(ctx), 11579 autorest.AsJSON(), 11580 autorest.AsGet(), 11581 autorest.WithBaseURL(to.String(slc.OdataNextLink))) 11582} 11583 11584// StreamingLocatorCollectionPage contains a page of StreamingLocator values. 11585type StreamingLocatorCollectionPage struct { 11586 fn func(context.Context, StreamingLocatorCollection) (StreamingLocatorCollection, error) 11587 slc StreamingLocatorCollection 11588} 11589 11590// NextWithContext advances to the next page of values. If there was an error making 11591// the request the page does not advance and the error is returned. 11592func (page *StreamingLocatorCollectionPage) NextWithContext(ctx context.Context) (err error) { 11593 if tracing.IsEnabled() { 11594 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingLocatorCollectionPage.NextWithContext") 11595 defer func() { 11596 sc := -1 11597 if page.Response().Response.Response != nil { 11598 sc = page.Response().Response.Response.StatusCode 11599 } 11600 tracing.EndSpan(ctx, sc, err) 11601 }() 11602 } 11603 for { 11604 next, err := page.fn(ctx, page.slc) 11605 if err != nil { 11606 return err 11607 } 11608 page.slc = next 11609 if !next.hasNextLink() || !next.IsEmpty() { 11610 break 11611 } 11612 } 11613 return nil 11614} 11615 11616// Next advances to the next page of values. If there was an error making 11617// the request the page does not advance and the error is returned. 11618// Deprecated: Use NextWithContext() instead. 11619func (page *StreamingLocatorCollectionPage) Next() error { 11620 return page.NextWithContext(context.Background()) 11621} 11622 11623// NotDone returns true if the page enumeration should be started or is not yet complete. 11624func (page StreamingLocatorCollectionPage) NotDone() bool { 11625 return !page.slc.IsEmpty() 11626} 11627 11628// Response returns the raw server response from the last page request. 11629func (page StreamingLocatorCollectionPage) Response() StreamingLocatorCollection { 11630 return page.slc 11631} 11632 11633// Values returns the slice of values for the current page or nil if there are no values. 11634func (page StreamingLocatorCollectionPage) Values() []StreamingLocator { 11635 if page.slc.IsEmpty() { 11636 return nil 11637 } 11638 return *page.slc.Value 11639} 11640 11641// Creates a new instance of the StreamingLocatorCollectionPage type. 11642func NewStreamingLocatorCollectionPage(cur StreamingLocatorCollection, getNextPage func(context.Context, StreamingLocatorCollection) (StreamingLocatorCollection, error)) StreamingLocatorCollectionPage { 11643 return StreamingLocatorCollectionPage{ 11644 fn: getNextPage, 11645 slc: cur, 11646 } 11647} 11648 11649// StreamingLocatorContentKey class for content key in Streaming Locator 11650type StreamingLocatorContentKey struct { 11651 // ID - ID of Content Key 11652 ID *uuid.UUID `json:"id,omitempty"` 11653 // Type - READ-ONLY; Encryption type of Content Key. Possible values include: 'StreamingLocatorContentKeyTypeCommonEncryptionCenc', 'StreamingLocatorContentKeyTypeCommonEncryptionCbcs', 'StreamingLocatorContentKeyTypeEnvelopeEncryption' 11654 Type StreamingLocatorContentKeyType `json:"type,omitempty"` 11655 // LabelReferenceInStreamingPolicy - Label of Content Key as specified in the Streaming Policy 11656 LabelReferenceInStreamingPolicy *string `json:"labelReferenceInStreamingPolicy,omitempty"` 11657 // Value - Value of Content Key 11658 Value *string `json:"value,omitempty"` 11659 // PolicyName - READ-ONLY; ContentKeyPolicy used by Content Key 11660 PolicyName *string `json:"policyName,omitempty"` 11661 // Tracks - READ-ONLY; Tracks which use this Content Key 11662 Tracks *[]TrackSelection `json:"tracks,omitempty"` 11663} 11664 11665// MarshalJSON is the custom marshaler for StreamingLocatorContentKey. 11666func (slck StreamingLocatorContentKey) MarshalJSON() ([]byte, error) { 11667 objectMap := make(map[string]interface{}) 11668 if slck.ID != nil { 11669 objectMap["id"] = slck.ID 11670 } 11671 if slck.LabelReferenceInStreamingPolicy != nil { 11672 objectMap["labelReferenceInStreamingPolicy"] = slck.LabelReferenceInStreamingPolicy 11673 } 11674 if slck.Value != nil { 11675 objectMap["value"] = slck.Value 11676 } 11677 return json.Marshal(objectMap) 11678} 11679 11680// StreamingLocatorProperties properties of the Streaming Locator. 11681type StreamingLocatorProperties struct { 11682 // AssetName - Asset Name 11683 AssetName *string `json:"assetName,omitempty"` 11684 // Created - READ-ONLY; The creation time of the Streaming Locator. 11685 Created *date.Time `json:"created,omitempty"` 11686 // StartTime - The start time of the Streaming Locator. 11687 StartTime *date.Time `json:"startTime,omitempty"` 11688 // EndTime - The end time of the Streaming Locator. 11689 EndTime *date.Time `json:"endTime,omitempty"` 11690 // StreamingLocatorID - The StreamingLocatorId of the Streaming Locator. 11691 StreamingLocatorID *uuid.UUID `json:"streamingLocatorId,omitempty"` 11692 // StreamingPolicyName - Name of the Streaming Policy used by this Streaming Locator. Either specify the name of Streaming Policy you created or use one of the predefined Streaming Policies. The predefined Streaming Policies available are: 'Predefined_DownloadOnly', 'Predefined_ClearStreamingOnly', 'Predefined_DownloadAndClearStreaming', 'Predefined_ClearKey', 'Predefined_MultiDrmCencStreaming' and 'Predefined_MultiDrmStreaming' 11693 StreamingPolicyName *string `json:"streamingPolicyName,omitempty"` 11694 // DefaultContentKeyPolicyName - Name of the default ContentKeyPolicy used by this Streaming Locator. 11695 DefaultContentKeyPolicyName *string `json:"defaultContentKeyPolicyName,omitempty"` 11696 // ContentKeys - The ContentKeys used by this Streaming Locator. 11697 ContentKeys *[]StreamingLocatorContentKey `json:"contentKeys,omitempty"` 11698 // AlternativeMediaID - Alternative Media ID of this Streaming Locator 11699 AlternativeMediaID *string `json:"alternativeMediaId,omitempty"` 11700 // Filters - A list of asset or account filters which apply to this streaming locator 11701 Filters *[]string `json:"filters,omitempty"` 11702} 11703 11704// MarshalJSON is the custom marshaler for StreamingLocatorProperties. 11705func (slp StreamingLocatorProperties) MarshalJSON() ([]byte, error) { 11706 objectMap := make(map[string]interface{}) 11707 if slp.AssetName != nil { 11708 objectMap["assetName"] = slp.AssetName 11709 } 11710 if slp.StartTime != nil { 11711 objectMap["startTime"] = slp.StartTime 11712 } 11713 if slp.EndTime != nil { 11714 objectMap["endTime"] = slp.EndTime 11715 } 11716 if slp.StreamingLocatorID != nil { 11717 objectMap["streamingLocatorId"] = slp.StreamingLocatorID 11718 } 11719 if slp.StreamingPolicyName != nil { 11720 objectMap["streamingPolicyName"] = slp.StreamingPolicyName 11721 } 11722 if slp.DefaultContentKeyPolicyName != nil { 11723 objectMap["defaultContentKeyPolicyName"] = slp.DefaultContentKeyPolicyName 11724 } 11725 if slp.ContentKeys != nil { 11726 objectMap["contentKeys"] = slp.ContentKeys 11727 } 11728 if slp.AlternativeMediaID != nil { 11729 objectMap["alternativeMediaId"] = slp.AlternativeMediaID 11730 } 11731 if slp.Filters != nil { 11732 objectMap["filters"] = slp.Filters 11733 } 11734 return json.Marshal(objectMap) 11735} 11736 11737// StreamingPath class of paths for streaming 11738type StreamingPath struct { 11739 // StreamingProtocol - Streaming protocol. Possible values include: 'StreamingPolicyStreamingProtocolHls', 'StreamingPolicyStreamingProtocolDash', 'StreamingPolicyStreamingProtocolSmoothStreaming', 'StreamingPolicyStreamingProtocolDownload' 11740 StreamingProtocol StreamingPolicyStreamingProtocol `json:"streamingProtocol,omitempty"` 11741 // EncryptionScheme - Encryption scheme. Possible values include: 'EncryptionSchemeNoEncryption', 'EncryptionSchemeEnvelopeEncryption', 'EncryptionSchemeCommonEncryptionCenc', 'EncryptionSchemeCommonEncryptionCbcs' 11742 EncryptionScheme EncryptionScheme `json:"encryptionScheme,omitempty"` 11743 // Paths - Streaming paths for each protocol and encryptionScheme pair 11744 Paths *[]string `json:"paths,omitempty"` 11745} 11746 11747// StreamingPolicy a Streaming Policy resource 11748type StreamingPolicy struct { 11749 autorest.Response `json:"-"` 11750 *StreamingPolicyProperties `json:"properties,omitempty"` 11751 // SystemData - READ-ONLY; The system metadata relating to this resource. 11752 SystemData *SystemData `json:"systemData,omitempty"` 11753 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 11754 ID *string `json:"id,omitempty"` 11755 // Name - READ-ONLY; The name of the resource 11756 Name *string `json:"name,omitempty"` 11757 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 11758 Type *string `json:"type,omitempty"` 11759} 11760 11761// MarshalJSON is the custom marshaler for StreamingPolicy. 11762func (sp StreamingPolicy) MarshalJSON() ([]byte, error) { 11763 objectMap := make(map[string]interface{}) 11764 if sp.StreamingPolicyProperties != nil { 11765 objectMap["properties"] = sp.StreamingPolicyProperties 11766 } 11767 return json.Marshal(objectMap) 11768} 11769 11770// UnmarshalJSON is the custom unmarshaler for StreamingPolicy struct. 11771func (sp *StreamingPolicy) UnmarshalJSON(body []byte) error { 11772 var m map[string]*json.RawMessage 11773 err := json.Unmarshal(body, &m) 11774 if err != nil { 11775 return err 11776 } 11777 for k, v := range m { 11778 switch k { 11779 case "properties": 11780 if v != nil { 11781 var streamingPolicyProperties StreamingPolicyProperties 11782 err = json.Unmarshal(*v, &streamingPolicyProperties) 11783 if err != nil { 11784 return err 11785 } 11786 sp.StreamingPolicyProperties = &streamingPolicyProperties 11787 } 11788 case "systemData": 11789 if v != nil { 11790 var systemData SystemData 11791 err = json.Unmarshal(*v, &systemData) 11792 if err != nil { 11793 return err 11794 } 11795 sp.SystemData = &systemData 11796 } 11797 case "id": 11798 if v != nil { 11799 var ID string 11800 err = json.Unmarshal(*v, &ID) 11801 if err != nil { 11802 return err 11803 } 11804 sp.ID = &ID 11805 } 11806 case "name": 11807 if v != nil { 11808 var name string 11809 err = json.Unmarshal(*v, &name) 11810 if err != nil { 11811 return err 11812 } 11813 sp.Name = &name 11814 } 11815 case "type": 11816 if v != nil { 11817 var typeVar string 11818 err = json.Unmarshal(*v, &typeVar) 11819 if err != nil { 11820 return err 11821 } 11822 sp.Type = &typeVar 11823 } 11824 } 11825 } 11826 11827 return nil 11828} 11829 11830// StreamingPolicyCollection a collection of StreamingPolicy items. 11831type StreamingPolicyCollection struct { 11832 autorest.Response `json:"-"` 11833 // Value - A collection of StreamingPolicy items. 11834 Value *[]StreamingPolicy `json:"value,omitempty"` 11835 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 11836 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 11837} 11838 11839// StreamingPolicyCollectionIterator provides access to a complete listing of StreamingPolicy values. 11840type StreamingPolicyCollectionIterator struct { 11841 i int 11842 page StreamingPolicyCollectionPage 11843} 11844 11845// NextWithContext advances to the next value. If there was an error making 11846// the request the iterator does not advance and the error is returned. 11847func (iter *StreamingPolicyCollectionIterator) NextWithContext(ctx context.Context) (err error) { 11848 if tracing.IsEnabled() { 11849 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingPolicyCollectionIterator.NextWithContext") 11850 defer func() { 11851 sc := -1 11852 if iter.Response().Response.Response != nil { 11853 sc = iter.Response().Response.Response.StatusCode 11854 } 11855 tracing.EndSpan(ctx, sc, err) 11856 }() 11857 } 11858 iter.i++ 11859 if iter.i < len(iter.page.Values()) { 11860 return nil 11861 } 11862 err = iter.page.NextWithContext(ctx) 11863 if err != nil { 11864 iter.i-- 11865 return err 11866 } 11867 iter.i = 0 11868 return nil 11869} 11870 11871// Next advances to the next value. If there was an error making 11872// the request the iterator does not advance and the error is returned. 11873// Deprecated: Use NextWithContext() instead. 11874func (iter *StreamingPolicyCollectionIterator) Next() error { 11875 return iter.NextWithContext(context.Background()) 11876} 11877 11878// NotDone returns true if the enumeration should be started or is not yet complete. 11879func (iter StreamingPolicyCollectionIterator) NotDone() bool { 11880 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 11881} 11882 11883// Response returns the raw server response from the last page request. 11884func (iter StreamingPolicyCollectionIterator) Response() StreamingPolicyCollection { 11885 return iter.page.Response() 11886} 11887 11888// Value returns the current value or a zero-initialized value if the 11889// iterator has advanced beyond the end of the collection. 11890func (iter StreamingPolicyCollectionIterator) Value() StreamingPolicy { 11891 if !iter.page.NotDone() { 11892 return StreamingPolicy{} 11893 } 11894 return iter.page.Values()[iter.i] 11895} 11896 11897// Creates a new instance of the StreamingPolicyCollectionIterator type. 11898func NewStreamingPolicyCollectionIterator(page StreamingPolicyCollectionPage) StreamingPolicyCollectionIterator { 11899 return StreamingPolicyCollectionIterator{page: page} 11900} 11901 11902// IsEmpty returns true if the ListResult contains no values. 11903func (spc StreamingPolicyCollection) IsEmpty() bool { 11904 return spc.Value == nil || len(*spc.Value) == 0 11905} 11906 11907// hasNextLink returns true if the NextLink is not empty. 11908func (spc StreamingPolicyCollection) hasNextLink() bool { 11909 return spc.OdataNextLink != nil && len(*spc.OdataNextLink) != 0 11910} 11911 11912// streamingPolicyCollectionPreparer prepares a request to retrieve the next set of results. 11913// It returns nil if no more results exist. 11914func (spc StreamingPolicyCollection) streamingPolicyCollectionPreparer(ctx context.Context) (*http.Request, error) { 11915 if !spc.hasNextLink() { 11916 return nil, nil 11917 } 11918 return autorest.Prepare((&http.Request{}).WithContext(ctx), 11919 autorest.AsJSON(), 11920 autorest.AsGet(), 11921 autorest.WithBaseURL(to.String(spc.OdataNextLink))) 11922} 11923 11924// StreamingPolicyCollectionPage contains a page of StreamingPolicy values. 11925type StreamingPolicyCollectionPage struct { 11926 fn func(context.Context, StreamingPolicyCollection) (StreamingPolicyCollection, error) 11927 spc StreamingPolicyCollection 11928} 11929 11930// NextWithContext advances to the next page of values. If there was an error making 11931// the request the page does not advance and the error is returned. 11932func (page *StreamingPolicyCollectionPage) NextWithContext(ctx context.Context) (err error) { 11933 if tracing.IsEnabled() { 11934 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingPolicyCollectionPage.NextWithContext") 11935 defer func() { 11936 sc := -1 11937 if page.Response().Response.Response != nil { 11938 sc = page.Response().Response.Response.StatusCode 11939 } 11940 tracing.EndSpan(ctx, sc, err) 11941 }() 11942 } 11943 for { 11944 next, err := page.fn(ctx, page.spc) 11945 if err != nil { 11946 return err 11947 } 11948 page.spc = next 11949 if !next.hasNextLink() || !next.IsEmpty() { 11950 break 11951 } 11952 } 11953 return nil 11954} 11955 11956// Next advances to the next page of values. If there was an error making 11957// the request the page does not advance and the error is returned. 11958// Deprecated: Use NextWithContext() instead. 11959func (page *StreamingPolicyCollectionPage) Next() error { 11960 return page.NextWithContext(context.Background()) 11961} 11962 11963// NotDone returns true if the page enumeration should be started or is not yet complete. 11964func (page StreamingPolicyCollectionPage) NotDone() bool { 11965 return !page.spc.IsEmpty() 11966} 11967 11968// Response returns the raw server response from the last page request. 11969func (page StreamingPolicyCollectionPage) Response() StreamingPolicyCollection { 11970 return page.spc 11971} 11972 11973// Values returns the slice of values for the current page or nil if there are no values. 11974func (page StreamingPolicyCollectionPage) Values() []StreamingPolicy { 11975 if page.spc.IsEmpty() { 11976 return nil 11977 } 11978 return *page.spc.Value 11979} 11980 11981// Creates a new instance of the StreamingPolicyCollectionPage type. 11982func NewStreamingPolicyCollectionPage(cur StreamingPolicyCollection, getNextPage func(context.Context, StreamingPolicyCollection) (StreamingPolicyCollection, error)) StreamingPolicyCollectionPage { 11983 return StreamingPolicyCollectionPage{ 11984 fn: getNextPage, 11985 spc: cur, 11986 } 11987} 11988 11989// StreamingPolicyContentKey class to specify properties of content key 11990type StreamingPolicyContentKey struct { 11991 // Label - Label can be used to specify Content Key when creating a Streaming Locator 11992 Label *string `json:"label,omitempty"` 11993 // PolicyName - Policy used by Content Key 11994 PolicyName *string `json:"policyName,omitempty"` 11995 // Tracks - Tracks which use this content key 11996 Tracks *[]TrackSelection `json:"tracks,omitempty"` 11997} 11998 11999// StreamingPolicyContentKeys class to specify properties of all content keys in Streaming Policy 12000type StreamingPolicyContentKeys struct { 12001 // DefaultKey - Default content key for an encryption scheme 12002 DefaultKey *DefaultKey `json:"defaultKey,omitempty"` 12003 // KeyToTrackMappings - Representing tracks needs separate content key 12004 KeyToTrackMappings *[]StreamingPolicyContentKey `json:"keyToTrackMappings,omitempty"` 12005} 12006 12007// StreamingPolicyFairPlayConfiguration class to specify configurations of FairPlay in Streaming Policy 12008type StreamingPolicyFairPlayConfiguration struct { 12009 // CustomLicenseAcquisitionURLTemplate - Template for the URL of the custom service delivering licenses to end user players. Not required when using Azure Media Services for issuing licenses. The template supports replaceable tokens that the service will update at runtime with the value specific to the request. The currently supported token values are {AlternativeMediaId}, which is replaced with the value of StreamingLocatorId.AlternativeMediaId, and {ContentKeyId}, which is replaced with the value of identifier of the key being requested. 12010 CustomLicenseAcquisitionURLTemplate *string `json:"customLicenseAcquisitionUrlTemplate,omitempty"` 12011 // AllowPersistentLicense - All license to be persistent or not 12012 AllowPersistentLicense *bool `json:"allowPersistentLicense,omitempty"` 12013} 12014 12015// StreamingPolicyPlayReadyConfiguration class to specify configurations of PlayReady in Streaming Policy 12016type StreamingPolicyPlayReadyConfiguration struct { 12017 // CustomLicenseAcquisitionURLTemplate - Template for the URL of the custom service delivering licenses to end user players. Not required when using Azure Media Services for issuing licenses. The template supports replaceable tokens that the service will update at runtime with the value specific to the request. The currently supported token values are {AlternativeMediaId}, which is replaced with the value of StreamingLocatorId.AlternativeMediaId, and {ContentKeyId}, which is replaced with the value of identifier of the key being requested. 12018 CustomLicenseAcquisitionURLTemplate *string `json:"customLicenseAcquisitionUrlTemplate,omitempty"` 12019 // PlayReadyCustomAttributes - Custom attributes for PlayReady 12020 PlayReadyCustomAttributes *string `json:"playReadyCustomAttributes,omitempty"` 12021} 12022 12023// StreamingPolicyProperties class to specify properties of Streaming Policy 12024type StreamingPolicyProperties struct { 12025 // Created - READ-ONLY; Creation time of Streaming Policy 12026 Created *date.Time `json:"created,omitempty"` 12027 // DefaultContentKeyPolicyName - Default ContentKey used by current Streaming Policy 12028 DefaultContentKeyPolicyName *string `json:"defaultContentKeyPolicyName,omitempty"` 12029 // EnvelopeEncryption - Configuration of EnvelopeEncryption 12030 EnvelopeEncryption *EnvelopeEncryption `json:"envelopeEncryption,omitempty"` 12031 // CommonEncryptionCenc - Configuration of CommonEncryptionCenc 12032 CommonEncryptionCenc *CommonEncryptionCenc `json:"commonEncryptionCenc,omitempty"` 12033 // CommonEncryptionCbcs - Configuration of CommonEncryptionCbcs 12034 CommonEncryptionCbcs *CommonEncryptionCbcs `json:"commonEncryptionCbcs,omitempty"` 12035 // NoEncryption - Configurations of NoEncryption 12036 NoEncryption *NoEncryption `json:"noEncryption,omitempty"` 12037} 12038 12039// MarshalJSON is the custom marshaler for StreamingPolicyProperties. 12040func (spp StreamingPolicyProperties) MarshalJSON() ([]byte, error) { 12041 objectMap := make(map[string]interface{}) 12042 if spp.DefaultContentKeyPolicyName != nil { 12043 objectMap["defaultContentKeyPolicyName"] = spp.DefaultContentKeyPolicyName 12044 } 12045 if spp.EnvelopeEncryption != nil { 12046 objectMap["envelopeEncryption"] = spp.EnvelopeEncryption 12047 } 12048 if spp.CommonEncryptionCenc != nil { 12049 objectMap["commonEncryptionCenc"] = spp.CommonEncryptionCenc 12050 } 12051 if spp.CommonEncryptionCbcs != nil { 12052 objectMap["commonEncryptionCbcs"] = spp.CommonEncryptionCbcs 12053 } 12054 if spp.NoEncryption != nil { 12055 objectMap["noEncryption"] = spp.NoEncryption 12056 } 12057 return json.Marshal(objectMap) 12058} 12059 12060// StreamingPolicyWidevineConfiguration class to specify configurations of Widevine in Streaming Policy 12061type StreamingPolicyWidevineConfiguration struct { 12062 // CustomLicenseAcquisitionURLTemplate - Template for the URL of the custom service delivering licenses to end user players. Not required when using Azure Media Services for issuing licenses. The template supports replaceable tokens that the service will update at runtime with the value specific to the request. The currently supported token values are {AlternativeMediaId}, which is replaced with the value of StreamingLocatorId.AlternativeMediaId, and {ContentKeyId}, which is replaced with the value of identifier of the key being requested. 12063 CustomLicenseAcquisitionURLTemplate *string `json:"customLicenseAcquisitionUrlTemplate,omitempty"` 12064} 12065 12066// SyncStorageKeysInput the input to the sync storage keys request. 12067type SyncStorageKeysInput struct { 12068 // ID - The ID of the storage account resource. 12069 ID *string `json:"id,omitempty"` 12070} 12071 12072// SystemData metadata pertaining to creation and last modification of the resource. 12073type SystemData struct { 12074 // CreatedBy - The identity that created the resource. 12075 CreatedBy *string `json:"createdBy,omitempty"` 12076 // CreatedByType - The type of identity that created the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey' 12077 CreatedByType CreatedByType `json:"createdByType,omitempty"` 12078 // CreatedAt - The timestamp of resource creation (UTC). 12079 CreatedAt *date.Time `json:"createdAt,omitempty"` 12080 // LastModifiedBy - The identity that last modified the resource. 12081 LastModifiedBy *string `json:"lastModifiedBy,omitempty"` 12082 // LastModifiedByType - The type of identity that last modified the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey' 12083 LastModifiedByType CreatedByType `json:"lastModifiedByType,omitempty"` 12084 // LastModifiedAt - The timestamp of resource last modification (UTC) 12085 LastModifiedAt *date.Time `json:"lastModifiedAt,omitempty"` 12086} 12087 12088// BasicTrackDescriptor base type for all TrackDescriptor types, which define the metadata and selection for tracks 12089// that should be processed by a Job 12090type BasicTrackDescriptor interface { 12091 AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) 12092 AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) 12093 AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) 12094 AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) 12095 AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) 12096 AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) 12097 AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) 12098 AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) 12099 AsTrackDescriptor() (*TrackDescriptor, bool) 12100} 12101 12102// TrackDescriptor base type for all TrackDescriptor types, which define the metadata and selection for tracks 12103// that should be processed by a Job 12104type TrackDescriptor struct { 12105 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 12106 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 12107} 12108 12109func unmarshalBasicTrackDescriptor(body []byte) (BasicTrackDescriptor, error) { 12110 var m map[string]interface{} 12111 err := json.Unmarshal(body, &m) 12112 if err != nil { 12113 return nil, err 12114 } 12115 12116 switch m["@odata.type"] { 12117 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor): 12118 var atd AudioTrackDescriptor 12119 err := json.Unmarshal(body, &atd) 12120 return atd, err 12121 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute): 12122 var satba SelectAudioTrackByAttribute 12123 err := json.Unmarshal(body, &satba) 12124 return satba, err 12125 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID): 12126 var satbi SelectAudioTrackByID 12127 err := json.Unmarshal(body, &satbi) 12128 return satbi, err 12129 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor): 12130 var vtd VideoTrackDescriptor 12131 err := json.Unmarshal(body, &vtd) 12132 return vtd, err 12133 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute): 12134 var svtba SelectVideoTrackByAttribute 12135 err := json.Unmarshal(body, &svtba) 12136 return svtba, err 12137 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID): 12138 var svtbi SelectVideoTrackByID 12139 err := json.Unmarshal(body, &svtbi) 12140 return svtbi, err 12141 default: 12142 var td TrackDescriptor 12143 err := json.Unmarshal(body, &td) 12144 return td, err 12145 } 12146} 12147func unmarshalBasicTrackDescriptorArray(body []byte) ([]BasicTrackDescriptor, error) { 12148 var rawMessages []*json.RawMessage 12149 err := json.Unmarshal(body, &rawMessages) 12150 if err != nil { 12151 return nil, err 12152 } 12153 12154 tdArray := make([]BasicTrackDescriptor, len(rawMessages)) 12155 12156 for index, rawMessage := range rawMessages { 12157 td, err := unmarshalBasicTrackDescriptor(*rawMessage) 12158 if err != nil { 12159 return nil, err 12160 } 12161 tdArray[index] = td 12162 } 12163 return tdArray, nil 12164} 12165 12166// MarshalJSON is the custom marshaler for TrackDescriptor. 12167func (td TrackDescriptor) MarshalJSON() ([]byte, error) { 12168 td.OdataType = OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor 12169 objectMap := make(map[string]interface{}) 12170 if td.OdataType != "" { 12171 objectMap["@odata.type"] = td.OdataType 12172 } 12173 return json.Marshal(objectMap) 12174} 12175 12176// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12177func (td TrackDescriptor) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 12178 return nil, false 12179} 12180 12181// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12182func (td TrackDescriptor) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 12183 return nil, false 12184} 12185 12186// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for TrackDescriptor. 12187func (td TrackDescriptor) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 12188 return nil, false 12189} 12190 12191// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for TrackDescriptor. 12192func (td TrackDescriptor) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 12193 return nil, false 12194} 12195 12196// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12197func (td TrackDescriptor) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 12198 return nil, false 12199} 12200 12201// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12202func (td TrackDescriptor) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 12203 return nil, false 12204} 12205 12206// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for TrackDescriptor. 12207func (td TrackDescriptor) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 12208 return nil, false 12209} 12210 12211// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for TrackDescriptor. 12212func (td TrackDescriptor) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 12213 return nil, false 12214} 12215 12216// AsTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12217func (td TrackDescriptor) AsTrackDescriptor() (*TrackDescriptor, bool) { 12218 return &td, true 12219} 12220 12221// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12222func (td TrackDescriptor) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 12223 return &td, true 12224} 12225 12226// TrackedResource the resource model definition for an Azure Resource Manager tracked top level resource 12227// which has 'tags' and a 'location' 12228type TrackedResource struct { 12229 // Tags - Resource tags. 12230 Tags map[string]*string `json:"tags"` 12231 // Location - The geo-location where the resource lives 12232 Location *string `json:"location,omitempty"` 12233 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 12234 ID *string `json:"id,omitempty"` 12235 // Name - READ-ONLY; The name of the resource 12236 Name *string `json:"name,omitempty"` 12237 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 12238 Type *string `json:"type,omitempty"` 12239} 12240 12241// MarshalJSON is the custom marshaler for TrackedResource. 12242func (tr TrackedResource) MarshalJSON() ([]byte, error) { 12243 objectMap := make(map[string]interface{}) 12244 if tr.Tags != nil { 12245 objectMap["tags"] = tr.Tags 12246 } 12247 if tr.Location != nil { 12248 objectMap["location"] = tr.Location 12249 } 12250 return json.Marshal(objectMap) 12251} 12252 12253// TrackPropertyCondition class to specify one track property condition 12254type TrackPropertyCondition struct { 12255 // Property - Track property type. Possible values include: 'TrackPropertyTypeUnknown', 'TrackPropertyTypeFourCC' 12256 Property TrackPropertyType `json:"property,omitempty"` 12257 // Operation - Track property condition operation. Possible values include: 'TrackPropertyCompareOperationUnknown', 'TrackPropertyCompareOperationEqual' 12258 Operation TrackPropertyCompareOperation `json:"operation,omitempty"` 12259 // Value - Track property value 12260 Value *string `json:"value,omitempty"` 12261} 12262 12263// TrackSelection class to select a track 12264type TrackSelection struct { 12265 // TrackSelections - TrackSelections is a track property condition list which can specify track(s) 12266 TrackSelections *[]TrackPropertyCondition `json:"trackSelections,omitempty"` 12267} 12268 12269// Transform a Transform encapsulates the rules or instructions for generating desired outputs from input 12270// media, such as by transcoding or by extracting insights. After the Transform is created, it can be 12271// applied to input media by creating Jobs. 12272type Transform struct { 12273 autorest.Response `json:"-"` 12274 // TransformProperties - The resource properties. 12275 *TransformProperties `json:"properties,omitempty"` 12276 // SystemData - READ-ONLY; The system metadata relating to this resource. 12277 SystemData *SystemData `json:"systemData,omitempty"` 12278 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 12279 ID *string `json:"id,omitempty"` 12280 // Name - READ-ONLY; The name of the resource 12281 Name *string `json:"name,omitempty"` 12282 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 12283 Type *string `json:"type,omitempty"` 12284} 12285 12286// MarshalJSON is the custom marshaler for Transform. 12287func (t Transform) MarshalJSON() ([]byte, error) { 12288 objectMap := make(map[string]interface{}) 12289 if t.TransformProperties != nil { 12290 objectMap["properties"] = t.TransformProperties 12291 } 12292 return json.Marshal(objectMap) 12293} 12294 12295// UnmarshalJSON is the custom unmarshaler for Transform struct. 12296func (t *Transform) UnmarshalJSON(body []byte) error { 12297 var m map[string]*json.RawMessage 12298 err := json.Unmarshal(body, &m) 12299 if err != nil { 12300 return err 12301 } 12302 for k, v := range m { 12303 switch k { 12304 case "properties": 12305 if v != nil { 12306 var transformProperties TransformProperties 12307 err = json.Unmarshal(*v, &transformProperties) 12308 if err != nil { 12309 return err 12310 } 12311 t.TransformProperties = &transformProperties 12312 } 12313 case "systemData": 12314 if v != nil { 12315 var systemData SystemData 12316 err = json.Unmarshal(*v, &systemData) 12317 if err != nil { 12318 return err 12319 } 12320 t.SystemData = &systemData 12321 } 12322 case "id": 12323 if v != nil { 12324 var ID string 12325 err = json.Unmarshal(*v, &ID) 12326 if err != nil { 12327 return err 12328 } 12329 t.ID = &ID 12330 } 12331 case "name": 12332 if v != nil { 12333 var name string 12334 err = json.Unmarshal(*v, &name) 12335 if err != nil { 12336 return err 12337 } 12338 t.Name = &name 12339 } 12340 case "type": 12341 if v != nil { 12342 var typeVar string 12343 err = json.Unmarshal(*v, &typeVar) 12344 if err != nil { 12345 return err 12346 } 12347 t.Type = &typeVar 12348 } 12349 } 12350 } 12351 12352 return nil 12353} 12354 12355// TransformCollection a collection of Transform items. 12356type TransformCollection struct { 12357 autorest.Response `json:"-"` 12358 // Value - A collection of Transform items. 12359 Value *[]Transform `json:"value,omitempty"` 12360 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 12361 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 12362} 12363 12364// TransformCollectionIterator provides access to a complete listing of Transform values. 12365type TransformCollectionIterator struct { 12366 i int 12367 page TransformCollectionPage 12368} 12369 12370// NextWithContext advances to the next value. If there was an error making 12371// the request the iterator does not advance and the error is returned. 12372func (iter *TransformCollectionIterator) NextWithContext(ctx context.Context) (err error) { 12373 if tracing.IsEnabled() { 12374 ctx = tracing.StartSpan(ctx, fqdn+"/TransformCollectionIterator.NextWithContext") 12375 defer func() { 12376 sc := -1 12377 if iter.Response().Response.Response != nil { 12378 sc = iter.Response().Response.Response.StatusCode 12379 } 12380 tracing.EndSpan(ctx, sc, err) 12381 }() 12382 } 12383 iter.i++ 12384 if iter.i < len(iter.page.Values()) { 12385 return nil 12386 } 12387 err = iter.page.NextWithContext(ctx) 12388 if err != nil { 12389 iter.i-- 12390 return err 12391 } 12392 iter.i = 0 12393 return nil 12394} 12395 12396// Next advances to the next value. If there was an error making 12397// the request the iterator does not advance and the error is returned. 12398// Deprecated: Use NextWithContext() instead. 12399func (iter *TransformCollectionIterator) Next() error { 12400 return iter.NextWithContext(context.Background()) 12401} 12402 12403// NotDone returns true if the enumeration should be started or is not yet complete. 12404func (iter TransformCollectionIterator) NotDone() bool { 12405 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 12406} 12407 12408// Response returns the raw server response from the last page request. 12409func (iter TransformCollectionIterator) Response() TransformCollection { 12410 return iter.page.Response() 12411} 12412 12413// Value returns the current value or a zero-initialized value if the 12414// iterator has advanced beyond the end of the collection. 12415func (iter TransformCollectionIterator) Value() Transform { 12416 if !iter.page.NotDone() { 12417 return Transform{} 12418 } 12419 return iter.page.Values()[iter.i] 12420} 12421 12422// Creates a new instance of the TransformCollectionIterator type. 12423func NewTransformCollectionIterator(page TransformCollectionPage) TransformCollectionIterator { 12424 return TransformCollectionIterator{page: page} 12425} 12426 12427// IsEmpty returns true if the ListResult contains no values. 12428func (tc TransformCollection) IsEmpty() bool { 12429 return tc.Value == nil || len(*tc.Value) == 0 12430} 12431 12432// hasNextLink returns true if the NextLink is not empty. 12433func (tc TransformCollection) hasNextLink() bool { 12434 return tc.OdataNextLink != nil && len(*tc.OdataNextLink) != 0 12435} 12436 12437// transformCollectionPreparer prepares a request to retrieve the next set of results. 12438// It returns nil if no more results exist. 12439func (tc TransformCollection) transformCollectionPreparer(ctx context.Context) (*http.Request, error) { 12440 if !tc.hasNextLink() { 12441 return nil, nil 12442 } 12443 return autorest.Prepare((&http.Request{}).WithContext(ctx), 12444 autorest.AsJSON(), 12445 autorest.AsGet(), 12446 autorest.WithBaseURL(to.String(tc.OdataNextLink))) 12447} 12448 12449// TransformCollectionPage contains a page of Transform values. 12450type TransformCollectionPage struct { 12451 fn func(context.Context, TransformCollection) (TransformCollection, error) 12452 tc TransformCollection 12453} 12454 12455// NextWithContext advances to the next page of values. If there was an error making 12456// the request the page does not advance and the error is returned. 12457func (page *TransformCollectionPage) NextWithContext(ctx context.Context) (err error) { 12458 if tracing.IsEnabled() { 12459 ctx = tracing.StartSpan(ctx, fqdn+"/TransformCollectionPage.NextWithContext") 12460 defer func() { 12461 sc := -1 12462 if page.Response().Response.Response != nil { 12463 sc = page.Response().Response.Response.StatusCode 12464 } 12465 tracing.EndSpan(ctx, sc, err) 12466 }() 12467 } 12468 for { 12469 next, err := page.fn(ctx, page.tc) 12470 if err != nil { 12471 return err 12472 } 12473 page.tc = next 12474 if !next.hasNextLink() || !next.IsEmpty() { 12475 break 12476 } 12477 } 12478 return nil 12479} 12480 12481// Next advances to the next page of values. If there was an error making 12482// the request the page does not advance and the error is returned. 12483// Deprecated: Use NextWithContext() instead. 12484func (page *TransformCollectionPage) Next() error { 12485 return page.NextWithContext(context.Background()) 12486} 12487 12488// NotDone returns true if the page enumeration should be started or is not yet complete. 12489func (page TransformCollectionPage) NotDone() bool { 12490 return !page.tc.IsEmpty() 12491} 12492 12493// Response returns the raw server response from the last page request. 12494func (page TransformCollectionPage) Response() TransformCollection { 12495 return page.tc 12496} 12497 12498// Values returns the slice of values for the current page or nil if there are no values. 12499func (page TransformCollectionPage) Values() []Transform { 12500 if page.tc.IsEmpty() { 12501 return nil 12502 } 12503 return *page.tc.Value 12504} 12505 12506// Creates a new instance of the TransformCollectionPage type. 12507func NewTransformCollectionPage(cur TransformCollection, getNextPage func(context.Context, TransformCollection) (TransformCollection, error)) TransformCollectionPage { 12508 return TransformCollectionPage{ 12509 fn: getNextPage, 12510 tc: cur, 12511 } 12512} 12513 12514// TransformOutput describes the properties of a TransformOutput, which are the rules to be applied while 12515// generating the desired output. 12516type TransformOutput struct { 12517 // OnError - A Transform can define more than one outputs. This property defines what the service should do when one output fails - either continue to produce other outputs, or, stop the other outputs. The overall Job state will not reflect failures of outputs that are specified with 'ContinueJob'. The default is 'StopProcessingJob'. Possible values include: 'OnErrorTypeStopProcessingJob', 'OnErrorTypeContinueJob' 12518 OnError OnErrorType `json:"onError,omitempty"` 12519 // RelativePriority - Sets the relative priority of the TransformOutputs within a Transform. This sets the priority that the service uses for processing TransformOutputs. The default priority is Normal. Possible values include: 'PriorityLow', 'PriorityNormal', 'PriorityHigh' 12520 RelativePriority Priority `json:"relativePriority,omitempty"` 12521 // Preset - Preset that describes the operations that will be used to modify, transcode, or extract insights from the source file to generate the output. 12522 Preset BasicPreset `json:"preset,omitempty"` 12523} 12524 12525// UnmarshalJSON is the custom unmarshaler for TransformOutput struct. 12526func (toVar *TransformOutput) UnmarshalJSON(body []byte) error { 12527 var m map[string]*json.RawMessage 12528 err := json.Unmarshal(body, &m) 12529 if err != nil { 12530 return err 12531 } 12532 for k, v := range m { 12533 switch k { 12534 case "onError": 12535 if v != nil { 12536 var onError OnErrorType 12537 err = json.Unmarshal(*v, &onError) 12538 if err != nil { 12539 return err 12540 } 12541 toVar.OnError = onError 12542 } 12543 case "relativePriority": 12544 if v != nil { 12545 var relativePriority Priority 12546 err = json.Unmarshal(*v, &relativePriority) 12547 if err != nil { 12548 return err 12549 } 12550 toVar.RelativePriority = relativePriority 12551 } 12552 case "preset": 12553 if v != nil { 12554 preset, err := unmarshalBasicPreset(*v) 12555 if err != nil { 12556 return err 12557 } 12558 toVar.Preset = preset 12559 } 12560 } 12561 } 12562 12563 return nil 12564} 12565 12566// TransformProperties a Transform. 12567type TransformProperties struct { 12568 // Created - READ-ONLY; The UTC date and time when the Transform was created, in 'YYYY-MM-DDThh:mm:ssZ' format. 12569 Created *date.Time `json:"created,omitempty"` 12570 // Description - An optional verbose description of the Transform. 12571 Description *string `json:"description,omitempty"` 12572 // LastModified - READ-ONLY; The UTC date and time when the Transform was last updated, in 'YYYY-MM-DDThh:mm:ssZ' format. 12573 LastModified *date.Time `json:"lastModified,omitempty"` 12574 // Outputs - An array of one or more TransformOutputs that the Transform should generate. 12575 Outputs *[]TransformOutput `json:"outputs,omitempty"` 12576} 12577 12578// MarshalJSON is the custom marshaler for TransformProperties. 12579func (tp TransformProperties) MarshalJSON() ([]byte, error) { 12580 objectMap := make(map[string]interface{}) 12581 if tp.Description != nil { 12582 objectMap["description"] = tp.Description 12583 } 12584 if tp.Outputs != nil { 12585 objectMap["outputs"] = tp.Outputs 12586 } 12587 return json.Marshal(objectMap) 12588} 12589 12590// TransportStreamFormat describes the properties for generating an MPEG-2 Transport Stream (ISO/IEC 12591// 13818-1) output video file(s). 12592type TransportStreamFormat struct { 12593 // OutputFiles - The list of output files to produce. Each entry in the list is a set of audio and video layer labels to be muxed together . 12594 OutputFiles *[]OutputFile `json:"outputFiles,omitempty"` 12595 // FilenamePattern - The pattern of the file names for the generated output files. The following macros are supported in the file name: {Basename} - An expansion macro that will use the name of the input video file. If the base name(the file suffix is not included) of the input video file is less than 32 characters long, the base name of input video files will be used. If the length of base name of the input video file exceeds 32 characters, the base name is truncated to the first 32 characters in total length. {Extension} - The appropriate extension for this format. {Label} - The label assigned to the codec/layer. {Index} - A unique index for thumbnails. Only applicable to thumbnails. {Bitrate} - The audio/video bitrate. Not applicable to thumbnails. {Codec} - The type of the audio/video codec. {Resolution} - The video resolution. Any unsubstituted macros will be collapsed and removed from the filename. 12596 FilenamePattern *string `json:"filenamePattern,omitempty"` 12597 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 12598 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 12599} 12600 12601// MarshalJSON is the custom marshaler for TransportStreamFormat. 12602func (tsf TransportStreamFormat) MarshalJSON() ([]byte, error) { 12603 tsf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat 12604 objectMap := make(map[string]interface{}) 12605 if tsf.OutputFiles != nil { 12606 objectMap["outputFiles"] = tsf.OutputFiles 12607 } 12608 if tsf.FilenamePattern != nil { 12609 objectMap["filenamePattern"] = tsf.FilenamePattern 12610 } 12611 if tsf.OdataType != "" { 12612 objectMap["@odata.type"] = tsf.OdataType 12613 } 12614 return json.Marshal(objectMap) 12615} 12616 12617// AsImageFormat is the BasicFormat implementation for TransportStreamFormat. 12618func (tsf TransportStreamFormat) AsImageFormat() (*ImageFormat, bool) { 12619 return nil, false 12620} 12621 12622// AsBasicImageFormat is the BasicFormat implementation for TransportStreamFormat. 12623func (tsf TransportStreamFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 12624 return nil, false 12625} 12626 12627// AsJpgFormat is the BasicFormat implementation for TransportStreamFormat. 12628func (tsf TransportStreamFormat) AsJpgFormat() (*JpgFormat, bool) { 12629 return nil, false 12630} 12631 12632// AsPngFormat is the BasicFormat implementation for TransportStreamFormat. 12633func (tsf TransportStreamFormat) AsPngFormat() (*PngFormat, bool) { 12634 return nil, false 12635} 12636 12637// AsMultiBitrateFormat is the BasicFormat implementation for TransportStreamFormat. 12638func (tsf TransportStreamFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 12639 return nil, false 12640} 12641 12642// AsBasicMultiBitrateFormat is the BasicFormat implementation for TransportStreamFormat. 12643func (tsf TransportStreamFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 12644 return &tsf, true 12645} 12646 12647// AsMp4Format is the BasicFormat implementation for TransportStreamFormat. 12648func (tsf TransportStreamFormat) AsMp4Format() (*Mp4Format, bool) { 12649 return nil, false 12650} 12651 12652// AsTransportStreamFormat is the BasicFormat implementation for TransportStreamFormat. 12653func (tsf TransportStreamFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 12654 return &tsf, true 12655} 12656 12657// AsFormat is the BasicFormat implementation for TransportStreamFormat. 12658func (tsf TransportStreamFormat) AsFormat() (*Format, bool) { 12659 return nil, false 12660} 12661 12662// AsBasicFormat is the BasicFormat implementation for TransportStreamFormat. 12663func (tsf TransportStreamFormat) AsBasicFormat() (BasicFormat, bool) { 12664 return &tsf, true 12665} 12666 12667// UserAssignedManagedIdentity ... 12668type UserAssignedManagedIdentity struct { 12669 // ClientID - READ-ONLY; The client ID. 12670 ClientID *uuid.UUID `json:"clientId,omitempty"` 12671 // PrincipalID - READ-ONLY; The principal ID. 12672 PrincipalID *uuid.UUID `json:"principalId,omitempty"` 12673} 12674 12675// MarshalJSON is the custom marshaler for UserAssignedManagedIdentity. 12676func (uami UserAssignedManagedIdentity) MarshalJSON() ([]byte, error) { 12677 objectMap := make(map[string]interface{}) 12678 return json.Marshal(objectMap) 12679} 12680 12681// UtcClipTime specifies the clip time as a Utc time position in the media file. The Utc time can point to 12682// a different position depending on whether the media file starts from a timestamp of zero or not. 12683type UtcClipTime struct { 12684 // Time - The time position on the timeline of the input media based on Utc time. 12685 Time *date.Time `json:"time,omitempty"` 12686 // OdataType - Possible values include: 'OdataTypeBasicClipTimeOdataTypeClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime' 12687 OdataType OdataTypeBasicClipTime `json:"@odata.type,omitempty"` 12688} 12689 12690// MarshalJSON is the custom marshaler for UtcClipTime. 12691func (uct UtcClipTime) MarshalJSON() ([]byte, error) { 12692 uct.OdataType = OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime 12693 objectMap := make(map[string]interface{}) 12694 if uct.Time != nil { 12695 objectMap["time"] = uct.Time 12696 } 12697 if uct.OdataType != "" { 12698 objectMap["@odata.type"] = uct.OdataType 12699 } 12700 return json.Marshal(objectMap) 12701} 12702 12703// AsAbsoluteClipTime is the BasicClipTime implementation for UtcClipTime. 12704func (uct UtcClipTime) AsAbsoluteClipTime() (*AbsoluteClipTime, bool) { 12705 return nil, false 12706} 12707 12708// AsUtcClipTime is the BasicClipTime implementation for UtcClipTime. 12709func (uct UtcClipTime) AsUtcClipTime() (*UtcClipTime, bool) { 12710 return &uct, true 12711} 12712 12713// AsClipTime is the BasicClipTime implementation for UtcClipTime. 12714func (uct UtcClipTime) AsClipTime() (*ClipTime, bool) { 12715 return nil, false 12716} 12717 12718// AsBasicClipTime is the BasicClipTime implementation for UtcClipTime. 12719func (uct UtcClipTime) AsBasicClipTime() (BasicClipTime, bool) { 12720 return &uct, true 12721} 12722 12723// BasicVideo describes the basic properties for encoding the input video. 12724type BasicVideo interface { 12725 AsH265Video() (*H265Video, bool) 12726 AsImage() (*Image, bool) 12727 AsBasicImage() (BasicImage, bool) 12728 AsH264Video() (*H264Video, bool) 12729 AsJpgImage() (*JpgImage, bool) 12730 AsPngImage() (*PngImage, bool) 12731 AsVideo() (*Video, bool) 12732} 12733 12734// Video describes the basic properties for encoding the input video. 12735type Video struct { 12736 // KeyFrameInterval - The distance between two key frames. The value should be non-zero in the range [0.5, 20] seconds, specified in ISO 8601 format. The default is 2 seconds(PT2S). Note that this setting is ignored if VideoSyncMode.Passthrough is set, where the KeyFrameInterval value will follow the input source setting. 12737 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 12738 // StretchMode - The resizing mode - how the input video will be resized to fit the desired output resolution(s). Default is AutoSize. Possible values include: 'StretchModeNone', 'StretchModeAutoSize', 'StretchModeAutoFit' 12739 StretchMode StretchMode `json:"stretchMode,omitempty"` 12740 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 12741 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 12742 // Label - An optional label for the codec. The label can be used to control muxing behavior. 12743 Label *string `json:"label,omitempty"` 12744 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 12745 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 12746} 12747 12748func unmarshalBasicVideo(body []byte) (BasicVideo, error) { 12749 var m map[string]interface{} 12750 err := json.Unmarshal(body, &m) 12751 if err != nil { 12752 return nil, err 12753 } 12754 12755 switch m["@odata.type"] { 12756 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video): 12757 var hv H265Video 12758 err := json.Unmarshal(body, &hv) 12759 return hv, err 12760 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaImage): 12761 var i Image 12762 err := json.Unmarshal(body, &i) 12763 return i, err 12764 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video): 12765 var hv H264Video 12766 err := json.Unmarshal(body, &hv) 12767 return hv, err 12768 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage): 12769 var ji JpgImage 12770 err := json.Unmarshal(body, &ji) 12771 return ji, err 12772 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage): 12773 var pi PngImage 12774 err := json.Unmarshal(body, &pi) 12775 return pi, err 12776 default: 12777 var vVar Video 12778 err := json.Unmarshal(body, &vVar) 12779 return vVar, err 12780 } 12781} 12782func unmarshalBasicVideoArray(body []byte) ([]BasicVideo, error) { 12783 var rawMessages []*json.RawMessage 12784 err := json.Unmarshal(body, &rawMessages) 12785 if err != nil { 12786 return nil, err 12787 } 12788 12789 vVarArray := make([]BasicVideo, len(rawMessages)) 12790 12791 for index, rawMessage := range rawMessages { 12792 vVar, err := unmarshalBasicVideo(*rawMessage) 12793 if err != nil { 12794 return nil, err 12795 } 12796 vVarArray[index] = vVar 12797 } 12798 return vVarArray, nil 12799} 12800 12801// MarshalJSON is the custom marshaler for Video. 12802func (vVar Video) MarshalJSON() ([]byte, error) { 12803 vVar.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo 12804 objectMap := make(map[string]interface{}) 12805 if vVar.KeyFrameInterval != nil { 12806 objectMap["keyFrameInterval"] = vVar.KeyFrameInterval 12807 } 12808 if vVar.StretchMode != "" { 12809 objectMap["stretchMode"] = vVar.StretchMode 12810 } 12811 if vVar.SyncMode != "" { 12812 objectMap["syncMode"] = vVar.SyncMode 12813 } 12814 if vVar.Label != nil { 12815 objectMap["label"] = vVar.Label 12816 } 12817 if vVar.OdataType != "" { 12818 objectMap["@odata.type"] = vVar.OdataType 12819 } 12820 return json.Marshal(objectMap) 12821} 12822 12823// AsAudio is the BasicCodec implementation for Video. 12824func (vVar Video) AsAudio() (*Audio, bool) { 12825 return nil, false 12826} 12827 12828// AsBasicAudio is the BasicCodec implementation for Video. 12829func (vVar Video) AsBasicAudio() (BasicAudio, bool) { 12830 return nil, false 12831} 12832 12833// AsAacAudio is the BasicCodec implementation for Video. 12834func (vVar Video) AsAacAudio() (*AacAudio, bool) { 12835 return nil, false 12836} 12837 12838// AsVideo is the BasicCodec implementation for Video. 12839func (vVar Video) AsVideo() (*Video, bool) { 12840 return &vVar, true 12841} 12842 12843// AsBasicVideo is the BasicCodec implementation for Video. 12844func (vVar Video) AsBasicVideo() (BasicVideo, bool) { 12845 return &vVar, true 12846} 12847 12848// AsH265Video is the BasicCodec implementation for Video. 12849func (vVar Video) AsH265Video() (*H265Video, bool) { 12850 return nil, false 12851} 12852 12853// AsCopyVideo is the BasicCodec implementation for Video. 12854func (vVar Video) AsCopyVideo() (*CopyVideo, bool) { 12855 return nil, false 12856} 12857 12858// AsImage is the BasicCodec implementation for Video. 12859func (vVar Video) AsImage() (*Image, bool) { 12860 return nil, false 12861} 12862 12863// AsBasicImage is the BasicCodec implementation for Video. 12864func (vVar Video) AsBasicImage() (BasicImage, bool) { 12865 return nil, false 12866} 12867 12868// AsCopyAudio is the BasicCodec implementation for Video. 12869func (vVar Video) AsCopyAudio() (*CopyAudio, bool) { 12870 return nil, false 12871} 12872 12873// AsH264Video is the BasicCodec implementation for Video. 12874func (vVar Video) AsH264Video() (*H264Video, bool) { 12875 return nil, false 12876} 12877 12878// AsJpgImage is the BasicCodec implementation for Video. 12879func (vVar Video) AsJpgImage() (*JpgImage, bool) { 12880 return nil, false 12881} 12882 12883// AsPngImage is the BasicCodec implementation for Video. 12884func (vVar Video) AsPngImage() (*PngImage, bool) { 12885 return nil, false 12886} 12887 12888// AsCodec is the BasicCodec implementation for Video. 12889func (vVar Video) AsCodec() (*Codec, bool) { 12890 return nil, false 12891} 12892 12893// AsBasicCodec is the BasicCodec implementation for Video. 12894func (vVar Video) AsBasicCodec() (BasicCodec, bool) { 12895 return &vVar, true 12896} 12897 12898// VideoAnalyzerPreset a video analyzer preset that extracts insights (rich metadata) from both audio and 12899// video, and outputs a JSON format file. 12900type VideoAnalyzerPreset struct { 12901 // InsightsToExtract - Defines the type of insights that you want the service to generate. The allowed values are 'AudioInsightsOnly', 'VideoInsightsOnly', and 'AllInsights'. The default is AllInsights. If you set this to AllInsights and the input is audio only, then only audio insights are generated. Similarly if the input is video only, then only video insights are generated. It is recommended that you not use AudioInsightsOnly if you expect some of your inputs to be video only; or use VideoInsightsOnly if you expect some of your inputs to be audio only. Your Jobs in such conditions would error out. Possible values include: 'InsightsTypeAudioInsightsOnly', 'InsightsTypeVideoInsightsOnly', 'InsightsTypeAllInsights' 12902 InsightsToExtract InsightsType `json:"insightsToExtract,omitempty"` 12903 // AudioLanguage - The language for the audio payload in the input using the BCP-47 format of 'language tag-region' (e.g: 'en-US'). If you know the language of your content, it is recommended that you specify it. The language must be specified explicitly for AudioAnalysisMode::Basic, since automatic language detection is not included in basic mode. If the language isn't specified or set to null, automatic language detection will choose the first language detected and process with the selected language for the duration of the file. It does not currently support dynamically switching between languages after the first language is detected. The automatic detection works best with audio recordings with clearly discernable speech. If automatic detection fails to find the language, transcription would fallback to 'en-US'." The list of supported languages is available here: https://go.microsoft.com/fwlink/?linkid=2109463 12904 AudioLanguage *string `json:"audioLanguage,omitempty"` 12905 // Mode - Determines the set of audio analysis operations to be performed. If unspecified, the Standard AudioAnalysisMode would be chosen. Possible values include: 'AudioAnalysisModeStandard', 'AudioAnalysisModeBasic' 12906 Mode AudioAnalysisMode `json:"mode,omitempty"` 12907 // ExperimentalOptions - Dictionary containing key value pairs for parameters not exposed in the preset itself 12908 ExperimentalOptions map[string]*string `json:"experimentalOptions"` 12909 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 12910 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 12911} 12912 12913// MarshalJSON is the custom marshaler for VideoAnalyzerPreset. 12914func (vap VideoAnalyzerPreset) MarshalJSON() ([]byte, error) { 12915 vap.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset 12916 objectMap := make(map[string]interface{}) 12917 if vap.InsightsToExtract != "" { 12918 objectMap["insightsToExtract"] = vap.InsightsToExtract 12919 } 12920 if vap.AudioLanguage != nil { 12921 objectMap["audioLanguage"] = vap.AudioLanguage 12922 } 12923 if vap.Mode != "" { 12924 objectMap["mode"] = vap.Mode 12925 } 12926 if vap.ExperimentalOptions != nil { 12927 objectMap["experimentalOptions"] = vap.ExperimentalOptions 12928 } 12929 if vap.OdataType != "" { 12930 objectMap["@odata.type"] = vap.OdataType 12931 } 12932 return json.Marshal(objectMap) 12933} 12934 12935// AsFaceDetectorPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12936func (vap VideoAnalyzerPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 12937 return nil, false 12938} 12939 12940// AsAudioAnalyzerPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12941func (vap VideoAnalyzerPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 12942 return nil, false 12943} 12944 12945// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12946func (vap VideoAnalyzerPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 12947 return &vap, true 12948} 12949 12950// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12951func (vap VideoAnalyzerPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 12952 return nil, false 12953} 12954 12955// AsStandardEncoderPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12956func (vap VideoAnalyzerPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 12957 return nil, false 12958} 12959 12960// AsVideoAnalyzerPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12961func (vap VideoAnalyzerPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 12962 return &vap, true 12963} 12964 12965// AsPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12966func (vap VideoAnalyzerPreset) AsPreset() (*Preset, bool) { 12967 return nil, false 12968} 12969 12970// AsBasicPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12971func (vap VideoAnalyzerPreset) AsBasicPreset() (BasicPreset, bool) { 12972 return &vap, true 12973} 12974 12975// BasicVideoLayer describes the settings to be used when encoding the input video into a desired output bitrate layer. 12976type BasicVideoLayer interface { 12977 AsH264Layer() (*H264Layer, bool) 12978 AsVideoLayer() (*VideoLayer, bool) 12979} 12980 12981// VideoLayer describes the settings to be used when encoding the input video into a desired output bitrate 12982// layer. 12983type VideoLayer struct { 12984 // Bitrate - The average bitrate in bits per second at which to encode the input video when generating this layer. This is a required field. 12985 Bitrate *int32 `json:"bitrate,omitempty"` 12986 // MaxBitrate - The maximum bitrate (in bits per second), at which the VBV buffer should be assumed to refill. If not specified, defaults to the same value as bitrate. 12987 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 12988 // BFrames - The number of B-frames to be used when encoding this layer. If not specified, the encoder chooses an appropriate number based on the video profile and level. 12989 BFrames *int32 `json:"bFrames,omitempty"` 12990 // FrameRate - The frame rate (in frames per second) at which to encode this layer. The value can be in the form of M/N where M and N are integers (For example, 30000/1001), or in the form of a number (For example, 30, or 29.97). The encoder enforces constraints on allowed frame rates based on the profile and level. If it is not specified, the encoder will use the same frame rate as the input video. 12991 FrameRate *string `json:"frameRate,omitempty"` 12992 // Slices - The number of slices to be used when encoding this layer. If not specified, default is zero, which means that encoder will use a single slice for each frame. 12993 Slices *int32 `json:"slices,omitempty"` 12994 // AdaptiveBFrame - Whether or not adaptive B-frames are to be used when encoding this layer. If not specified, the encoder will turn it on whenever the video profile permits its use. 12995 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 12996 // Width - The width of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in width as the input. 12997 Width *string `json:"width,omitempty"` 12998 // Height - The height of the output video for this layer. The value can be absolute (in pixels) or relative (in percentage). For example 50% means the output video has half as many pixels in height as the input. 12999 Height *string `json:"height,omitempty"` 13000 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 13001 Label *string `json:"label,omitempty"` 13002 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 13003 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 13004} 13005 13006func unmarshalBasicVideoLayer(body []byte) (BasicVideoLayer, error) { 13007 var m map[string]interface{} 13008 err := json.Unmarshal(body, &m) 13009 if err != nil { 13010 return nil, err 13011 } 13012 13013 switch m["@odata.type"] { 13014 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer): 13015 var hl H264Layer 13016 err := json.Unmarshal(body, &hl) 13017 return hl, err 13018 default: 13019 var vl VideoLayer 13020 err := json.Unmarshal(body, &vl) 13021 return vl, err 13022 } 13023} 13024func unmarshalBasicVideoLayerArray(body []byte) ([]BasicVideoLayer, error) { 13025 var rawMessages []*json.RawMessage 13026 err := json.Unmarshal(body, &rawMessages) 13027 if err != nil { 13028 return nil, err 13029 } 13030 13031 vlArray := make([]BasicVideoLayer, len(rawMessages)) 13032 13033 for index, rawMessage := range rawMessages { 13034 vl, err := unmarshalBasicVideoLayer(*rawMessage) 13035 if err != nil { 13036 return nil, err 13037 } 13038 vlArray[index] = vl 13039 } 13040 return vlArray, nil 13041} 13042 13043// MarshalJSON is the custom marshaler for VideoLayer. 13044func (vl VideoLayer) MarshalJSON() ([]byte, error) { 13045 vl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer 13046 objectMap := make(map[string]interface{}) 13047 if vl.Bitrate != nil { 13048 objectMap["bitrate"] = vl.Bitrate 13049 } 13050 if vl.MaxBitrate != nil { 13051 objectMap["maxBitrate"] = vl.MaxBitrate 13052 } 13053 if vl.BFrames != nil { 13054 objectMap["bFrames"] = vl.BFrames 13055 } 13056 if vl.FrameRate != nil { 13057 objectMap["frameRate"] = vl.FrameRate 13058 } 13059 if vl.Slices != nil { 13060 objectMap["slices"] = vl.Slices 13061 } 13062 if vl.AdaptiveBFrame != nil { 13063 objectMap["adaptiveBFrame"] = vl.AdaptiveBFrame 13064 } 13065 if vl.Width != nil { 13066 objectMap["width"] = vl.Width 13067 } 13068 if vl.Height != nil { 13069 objectMap["height"] = vl.Height 13070 } 13071 if vl.Label != nil { 13072 objectMap["label"] = vl.Label 13073 } 13074 if vl.OdataType != "" { 13075 objectMap["@odata.type"] = vl.OdataType 13076 } 13077 return json.Marshal(objectMap) 13078} 13079 13080// AsH265VideoLayer is the BasicLayer implementation for VideoLayer. 13081func (vl VideoLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 13082 return nil, false 13083} 13084 13085// AsBasicH265VideoLayer is the BasicLayer implementation for VideoLayer. 13086func (vl VideoLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 13087 return nil, false 13088} 13089 13090// AsH265Layer is the BasicLayer implementation for VideoLayer. 13091func (vl VideoLayer) AsH265Layer() (*H265Layer, bool) { 13092 return nil, false 13093} 13094 13095// AsVideoLayer is the BasicLayer implementation for VideoLayer. 13096func (vl VideoLayer) AsVideoLayer() (*VideoLayer, bool) { 13097 return &vl, true 13098} 13099 13100// AsBasicVideoLayer is the BasicLayer implementation for VideoLayer. 13101func (vl VideoLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 13102 return &vl, true 13103} 13104 13105// AsH264Layer is the BasicLayer implementation for VideoLayer. 13106func (vl VideoLayer) AsH264Layer() (*H264Layer, bool) { 13107 return nil, false 13108} 13109 13110// AsJpgLayer is the BasicLayer implementation for VideoLayer. 13111func (vl VideoLayer) AsJpgLayer() (*JpgLayer, bool) { 13112 return nil, false 13113} 13114 13115// AsPngLayer is the BasicLayer implementation for VideoLayer. 13116func (vl VideoLayer) AsPngLayer() (*PngLayer, bool) { 13117 return nil, false 13118} 13119 13120// AsLayer is the BasicLayer implementation for VideoLayer. 13121func (vl VideoLayer) AsLayer() (*Layer, bool) { 13122 return nil, false 13123} 13124 13125// AsBasicLayer is the BasicLayer implementation for VideoLayer. 13126func (vl VideoLayer) AsBasicLayer() (BasicLayer, bool) { 13127 return &vl, true 13128} 13129 13130// VideoOverlay describes the properties of a video overlay. 13131type VideoOverlay struct { 13132 // Position - The location in the input video where the overlay is applied. 13133 Position *Rectangle `json:"position,omitempty"` 13134 // Opacity - The opacity of the overlay. This is a value in the range [0 - 1.0]. Default is 1.0 which mean the overlay is opaque. 13135 Opacity *float64 `json:"opacity,omitempty"` 13136 // CropRectangle - An optional rectangular window used to crop the overlay image or video. 13137 CropRectangle *Rectangle `json:"cropRectangle,omitempty"` 13138 // InputLabel - The label of the job input which is to be used as an overlay. The Input must specify exactly one file. You can specify an image file in JPG, PNG, GIF or BMP format, or an audio file (such as a WAV, MP3, WMA or M4A file), or a video file. See https://aka.ms/mesformats for the complete list of supported audio and video file formats. 13139 InputLabel *string `json:"inputLabel,omitempty"` 13140 // Start - The start position, with reference to the input video, at which the overlay starts. The value should be in ISO 8601 format. For example, PT05S to start the overlay at 5 seconds into the input video. If not specified the overlay starts from the beginning of the input video. 13141 Start *string `json:"start,omitempty"` 13142 // End - The end position, with reference to the input video, at which the overlay ends. The value should be in ISO 8601 format. For example, PT30S to end the overlay at 30 seconds into the input video. If not specified or the value is greater than the input video duration, the overlay will be applied until the end of the input video if the overlay media duration is greater than the input video duration, else the overlay will last as long as the overlay media duration. 13143 End *string `json:"end,omitempty"` 13144 // FadeInDuration - The duration over which the overlay fades in onto the input video. The value should be in ISO 8601 duration format. If not specified the default behavior is to have no fade in (same as PT0S). 13145 FadeInDuration *string `json:"fadeInDuration,omitempty"` 13146 // FadeOutDuration - The duration over which the overlay fades out of the input video. The value should be in ISO 8601 duration format. If not specified the default behavior is to have no fade out (same as PT0S). 13147 FadeOutDuration *string `json:"fadeOutDuration,omitempty"` 13148 // AudioGainLevel - The gain level of audio in the overlay. The value should be in the range [0, 1.0]. The default is 1.0. 13149 AudioGainLevel *float64 `json:"audioGainLevel,omitempty"` 13150 // OdataType - Possible values include: 'OdataTypeBasicOverlayOdataTypeOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay' 13151 OdataType OdataTypeBasicOverlay `json:"@odata.type,omitempty"` 13152} 13153 13154// MarshalJSON is the custom marshaler for VideoOverlay. 13155func (vo VideoOverlay) MarshalJSON() ([]byte, error) { 13156 vo.OdataType = OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay 13157 objectMap := make(map[string]interface{}) 13158 if vo.Position != nil { 13159 objectMap["position"] = vo.Position 13160 } 13161 if vo.Opacity != nil { 13162 objectMap["opacity"] = vo.Opacity 13163 } 13164 if vo.CropRectangle != nil { 13165 objectMap["cropRectangle"] = vo.CropRectangle 13166 } 13167 if vo.InputLabel != nil { 13168 objectMap["inputLabel"] = vo.InputLabel 13169 } 13170 if vo.Start != nil { 13171 objectMap["start"] = vo.Start 13172 } 13173 if vo.End != nil { 13174 objectMap["end"] = vo.End 13175 } 13176 if vo.FadeInDuration != nil { 13177 objectMap["fadeInDuration"] = vo.FadeInDuration 13178 } 13179 if vo.FadeOutDuration != nil { 13180 objectMap["fadeOutDuration"] = vo.FadeOutDuration 13181 } 13182 if vo.AudioGainLevel != nil { 13183 objectMap["audioGainLevel"] = vo.AudioGainLevel 13184 } 13185 if vo.OdataType != "" { 13186 objectMap["@odata.type"] = vo.OdataType 13187 } 13188 return json.Marshal(objectMap) 13189} 13190 13191// AsAudioOverlay is the BasicOverlay implementation for VideoOverlay. 13192func (vo VideoOverlay) AsAudioOverlay() (*AudioOverlay, bool) { 13193 return nil, false 13194} 13195 13196// AsVideoOverlay is the BasicOverlay implementation for VideoOverlay. 13197func (vo VideoOverlay) AsVideoOverlay() (*VideoOverlay, bool) { 13198 return &vo, true 13199} 13200 13201// AsOverlay is the BasicOverlay implementation for VideoOverlay. 13202func (vo VideoOverlay) AsOverlay() (*Overlay, bool) { 13203 return nil, false 13204} 13205 13206// AsBasicOverlay is the BasicOverlay implementation for VideoOverlay. 13207func (vo VideoOverlay) AsBasicOverlay() (BasicOverlay, bool) { 13208 return &vo, true 13209} 13210 13211// BasicVideoTrackDescriptor a TrackSelection to select video tracks. 13212type BasicVideoTrackDescriptor interface { 13213 AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) 13214 AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) 13215 AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) 13216} 13217 13218// VideoTrackDescriptor a TrackSelection to select video tracks. 13219type VideoTrackDescriptor struct { 13220 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 13221 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 13222} 13223 13224func unmarshalBasicVideoTrackDescriptor(body []byte) (BasicVideoTrackDescriptor, error) { 13225 var m map[string]interface{} 13226 err := json.Unmarshal(body, &m) 13227 if err != nil { 13228 return nil, err 13229 } 13230 13231 switch m["@odata.type"] { 13232 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute): 13233 var svtba SelectVideoTrackByAttribute 13234 err := json.Unmarshal(body, &svtba) 13235 return svtba, err 13236 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID): 13237 var svtbi SelectVideoTrackByID 13238 err := json.Unmarshal(body, &svtbi) 13239 return svtbi, err 13240 default: 13241 var vtd VideoTrackDescriptor 13242 err := json.Unmarshal(body, &vtd) 13243 return vtd, err 13244 } 13245} 13246func unmarshalBasicVideoTrackDescriptorArray(body []byte) ([]BasicVideoTrackDescriptor, error) { 13247 var rawMessages []*json.RawMessage 13248 err := json.Unmarshal(body, &rawMessages) 13249 if err != nil { 13250 return nil, err 13251 } 13252 13253 vtdArray := make([]BasicVideoTrackDescriptor, len(rawMessages)) 13254 13255 for index, rawMessage := range rawMessages { 13256 vtd, err := unmarshalBasicVideoTrackDescriptor(*rawMessage) 13257 if err != nil { 13258 return nil, err 13259 } 13260 vtdArray[index] = vtd 13261 } 13262 return vtdArray, nil 13263} 13264 13265// MarshalJSON is the custom marshaler for VideoTrackDescriptor. 13266func (vtd VideoTrackDescriptor) MarshalJSON() ([]byte, error) { 13267 vtd.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor 13268 objectMap := make(map[string]interface{}) 13269 if vtd.OdataType != "" { 13270 objectMap["@odata.type"] = vtd.OdataType 13271 } 13272 return json.Marshal(objectMap) 13273} 13274 13275// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13276func (vtd VideoTrackDescriptor) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 13277 return nil, false 13278} 13279 13280// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13281func (vtd VideoTrackDescriptor) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 13282 return nil, false 13283} 13284 13285// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13286func (vtd VideoTrackDescriptor) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 13287 return nil, false 13288} 13289 13290// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13291func (vtd VideoTrackDescriptor) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 13292 return nil, false 13293} 13294 13295// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13296func (vtd VideoTrackDescriptor) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 13297 return &vtd, true 13298} 13299 13300// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13301func (vtd VideoTrackDescriptor) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 13302 return &vtd, true 13303} 13304 13305// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13306func (vtd VideoTrackDescriptor) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 13307 return nil, false 13308} 13309 13310// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13311func (vtd VideoTrackDescriptor) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 13312 return nil, false 13313} 13314 13315// AsTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13316func (vtd VideoTrackDescriptor) AsTrackDescriptor() (*TrackDescriptor, bool) { 13317 return nil, false 13318} 13319 13320// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13321func (vtd VideoTrackDescriptor) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 13322 return &vtd, true 13323} 13324