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-05-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} 198 199// AccountFilter an Account Filter. 200type AccountFilter struct { 201 autorest.Response `json:"-"` 202 *FilterProperties `json:"properties,omitempty"` 203 // SystemData - READ-ONLY; The system metadata relating to this resource. 204 SystemData *SystemData `json:"systemData,omitempty"` 205 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 206 ID *string `json:"id,omitempty"` 207 // Name - READ-ONLY; The name of the resource 208 Name *string `json:"name,omitempty"` 209 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 210 Type *string `json:"type,omitempty"` 211} 212 213// MarshalJSON is the custom marshaler for AccountFilter. 214func (af AccountFilter) MarshalJSON() ([]byte, error) { 215 objectMap := make(map[string]interface{}) 216 if af.FilterProperties != nil { 217 objectMap["properties"] = af.FilterProperties 218 } 219 return json.Marshal(objectMap) 220} 221 222// UnmarshalJSON is the custom unmarshaler for AccountFilter struct. 223func (af *AccountFilter) UnmarshalJSON(body []byte) error { 224 var m map[string]*json.RawMessage 225 err := json.Unmarshal(body, &m) 226 if err != nil { 227 return err 228 } 229 for k, v := range m { 230 switch k { 231 case "properties": 232 if v != nil { 233 var filterProperties FilterProperties 234 err = json.Unmarshal(*v, &filterProperties) 235 if err != nil { 236 return err 237 } 238 af.FilterProperties = &filterProperties 239 } 240 case "systemData": 241 if v != nil { 242 var systemData SystemData 243 err = json.Unmarshal(*v, &systemData) 244 if err != nil { 245 return err 246 } 247 af.SystemData = &systemData 248 } 249 case "id": 250 if v != nil { 251 var ID string 252 err = json.Unmarshal(*v, &ID) 253 if err != nil { 254 return err 255 } 256 af.ID = &ID 257 } 258 case "name": 259 if v != nil { 260 var name string 261 err = json.Unmarshal(*v, &name) 262 if err != nil { 263 return err 264 } 265 af.Name = &name 266 } 267 case "type": 268 if v != nil { 269 var typeVar string 270 err = json.Unmarshal(*v, &typeVar) 271 if err != nil { 272 return err 273 } 274 af.Type = &typeVar 275 } 276 } 277 } 278 279 return nil 280} 281 282// AccountFilterCollection a collection of AccountFilter items. 283type AccountFilterCollection struct { 284 autorest.Response `json:"-"` 285 // Value - A collection of AccountFilter items. 286 Value *[]AccountFilter `json:"value,omitempty"` 287 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 288 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 289} 290 291// AccountFilterCollectionIterator provides access to a complete listing of AccountFilter values. 292type AccountFilterCollectionIterator struct { 293 i int 294 page AccountFilterCollectionPage 295} 296 297// NextWithContext advances to the next value. If there was an error making 298// the request the iterator does not advance and the error is returned. 299func (iter *AccountFilterCollectionIterator) NextWithContext(ctx context.Context) (err error) { 300 if tracing.IsEnabled() { 301 ctx = tracing.StartSpan(ctx, fqdn+"/AccountFilterCollectionIterator.NextWithContext") 302 defer func() { 303 sc := -1 304 if iter.Response().Response.Response != nil { 305 sc = iter.Response().Response.Response.StatusCode 306 } 307 tracing.EndSpan(ctx, sc, err) 308 }() 309 } 310 iter.i++ 311 if iter.i < len(iter.page.Values()) { 312 return nil 313 } 314 err = iter.page.NextWithContext(ctx) 315 if err != nil { 316 iter.i-- 317 return err 318 } 319 iter.i = 0 320 return nil 321} 322 323// Next advances to the next value. If there was an error making 324// the request the iterator does not advance and the error is returned. 325// Deprecated: Use NextWithContext() instead. 326func (iter *AccountFilterCollectionIterator) Next() error { 327 return iter.NextWithContext(context.Background()) 328} 329 330// NotDone returns true if the enumeration should be started or is not yet complete. 331func (iter AccountFilterCollectionIterator) NotDone() bool { 332 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 333} 334 335// Response returns the raw server response from the last page request. 336func (iter AccountFilterCollectionIterator) Response() AccountFilterCollection { 337 return iter.page.Response() 338} 339 340// Value returns the current value or a zero-initialized value if the 341// iterator has advanced beyond the end of the collection. 342func (iter AccountFilterCollectionIterator) Value() AccountFilter { 343 if !iter.page.NotDone() { 344 return AccountFilter{} 345 } 346 return iter.page.Values()[iter.i] 347} 348 349// Creates a new instance of the AccountFilterCollectionIterator type. 350func NewAccountFilterCollectionIterator(page AccountFilterCollectionPage) AccountFilterCollectionIterator { 351 return AccountFilterCollectionIterator{page: page} 352} 353 354// IsEmpty returns true if the ListResult contains no values. 355func (afc AccountFilterCollection) IsEmpty() bool { 356 return afc.Value == nil || len(*afc.Value) == 0 357} 358 359// hasNextLink returns true if the NextLink is not empty. 360func (afc AccountFilterCollection) hasNextLink() bool { 361 return afc.OdataNextLink != nil && len(*afc.OdataNextLink) != 0 362} 363 364// accountFilterCollectionPreparer prepares a request to retrieve the next set of results. 365// It returns nil if no more results exist. 366func (afc AccountFilterCollection) accountFilterCollectionPreparer(ctx context.Context) (*http.Request, error) { 367 if !afc.hasNextLink() { 368 return nil, nil 369 } 370 return autorest.Prepare((&http.Request{}).WithContext(ctx), 371 autorest.AsJSON(), 372 autorest.AsGet(), 373 autorest.WithBaseURL(to.String(afc.OdataNextLink))) 374} 375 376// AccountFilterCollectionPage contains a page of AccountFilter values. 377type AccountFilterCollectionPage struct { 378 fn func(context.Context, AccountFilterCollection) (AccountFilterCollection, error) 379 afc AccountFilterCollection 380} 381 382// NextWithContext advances to the next page of values. If there was an error making 383// the request the page does not advance and the error is returned. 384func (page *AccountFilterCollectionPage) NextWithContext(ctx context.Context) (err error) { 385 if tracing.IsEnabled() { 386 ctx = tracing.StartSpan(ctx, fqdn+"/AccountFilterCollectionPage.NextWithContext") 387 defer func() { 388 sc := -1 389 if page.Response().Response.Response != nil { 390 sc = page.Response().Response.Response.StatusCode 391 } 392 tracing.EndSpan(ctx, sc, err) 393 }() 394 } 395 for { 396 next, err := page.fn(ctx, page.afc) 397 if err != nil { 398 return err 399 } 400 page.afc = next 401 if !next.hasNextLink() || !next.IsEmpty() { 402 break 403 } 404 } 405 return nil 406} 407 408// Next advances to the next page of values. If there was an error making 409// the request the page does not advance and the error is returned. 410// Deprecated: Use NextWithContext() instead. 411func (page *AccountFilterCollectionPage) Next() error { 412 return page.NextWithContext(context.Background()) 413} 414 415// NotDone returns true if the page enumeration should be started or is not yet complete. 416func (page AccountFilterCollectionPage) NotDone() bool { 417 return !page.afc.IsEmpty() 418} 419 420// Response returns the raw server response from the last page request. 421func (page AccountFilterCollectionPage) Response() AccountFilterCollection { 422 return page.afc 423} 424 425// Values returns the slice of values for the current page or nil if there are no values. 426func (page AccountFilterCollectionPage) Values() []AccountFilter { 427 if page.afc.IsEmpty() { 428 return nil 429 } 430 return *page.afc.Value 431} 432 433// Creates a new instance of the AccountFilterCollectionPage type. 434func NewAccountFilterCollectionPage(cur AccountFilterCollection, getNextPage func(context.Context, AccountFilterCollection) (AccountFilterCollection, error)) AccountFilterCollectionPage { 435 return AccountFilterCollectionPage{ 436 fn: getNextPage, 437 afc: cur, 438 } 439} 440 441// AkamaiAccessControl akamai access control 442type AkamaiAccessControl struct { 443 // AkamaiSignatureHeaderAuthenticationKeyList - authentication key list 444 AkamaiSignatureHeaderAuthenticationKeyList *[]AkamaiSignatureHeaderAuthenticationKey `json:"akamaiSignatureHeaderAuthenticationKeyList,omitempty"` 445} 446 447// AkamaiSignatureHeaderAuthenticationKey akamai Signature Header authentication key. 448type AkamaiSignatureHeaderAuthenticationKey struct { 449 // Identifier - identifier of the key 450 Identifier *string `json:"identifier,omitempty"` 451 // Base64Key - authentication key 452 Base64Key *string `json:"base64Key,omitempty"` 453 // Expiration - The expiration time of the authentication key. 454 Expiration *date.Time `json:"expiration,omitempty"` 455} 456 457// APIError the API error. 458type APIError struct { 459 // Error - The error properties. 460 Error *ODataError `json:"error,omitempty"` 461} 462 463// Asset an Asset. 464type Asset struct { 465 autorest.Response `json:"-"` 466 // AssetProperties - The resource properties. 467 *AssetProperties `json:"properties,omitempty"` 468 // SystemData - READ-ONLY; The system metadata relating to this resource. 469 SystemData *SystemData `json:"systemData,omitempty"` 470 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 471 ID *string `json:"id,omitempty"` 472 // Name - READ-ONLY; The name of the resource 473 Name *string `json:"name,omitempty"` 474 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 475 Type *string `json:"type,omitempty"` 476} 477 478// MarshalJSON is the custom marshaler for Asset. 479func (a Asset) MarshalJSON() ([]byte, error) { 480 objectMap := make(map[string]interface{}) 481 if a.AssetProperties != nil { 482 objectMap["properties"] = a.AssetProperties 483 } 484 return json.Marshal(objectMap) 485} 486 487// UnmarshalJSON is the custom unmarshaler for Asset struct. 488func (a *Asset) UnmarshalJSON(body []byte) error { 489 var m map[string]*json.RawMessage 490 err := json.Unmarshal(body, &m) 491 if err != nil { 492 return err 493 } 494 for k, v := range m { 495 switch k { 496 case "properties": 497 if v != nil { 498 var assetProperties AssetProperties 499 err = json.Unmarshal(*v, &assetProperties) 500 if err != nil { 501 return err 502 } 503 a.AssetProperties = &assetProperties 504 } 505 case "systemData": 506 if v != nil { 507 var systemData SystemData 508 err = json.Unmarshal(*v, &systemData) 509 if err != nil { 510 return err 511 } 512 a.SystemData = &systemData 513 } 514 case "id": 515 if v != nil { 516 var ID string 517 err = json.Unmarshal(*v, &ID) 518 if err != nil { 519 return err 520 } 521 a.ID = &ID 522 } 523 case "name": 524 if v != nil { 525 var name string 526 err = json.Unmarshal(*v, &name) 527 if err != nil { 528 return err 529 } 530 a.Name = &name 531 } 532 case "type": 533 if v != nil { 534 var typeVar string 535 err = json.Unmarshal(*v, &typeVar) 536 if err != nil { 537 return err 538 } 539 a.Type = &typeVar 540 } 541 } 542 } 543 544 return nil 545} 546 547// AssetCollection a collection of Asset items. 548type AssetCollection struct { 549 autorest.Response `json:"-"` 550 // Value - A collection of Asset items. 551 Value *[]Asset `json:"value,omitempty"` 552 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 553 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 554} 555 556// AssetCollectionIterator provides access to a complete listing of Asset values. 557type AssetCollectionIterator struct { 558 i int 559 page AssetCollectionPage 560} 561 562// NextWithContext advances to the next value. If there was an error making 563// the request the iterator does not advance and the error is returned. 564func (iter *AssetCollectionIterator) NextWithContext(ctx context.Context) (err error) { 565 if tracing.IsEnabled() { 566 ctx = tracing.StartSpan(ctx, fqdn+"/AssetCollectionIterator.NextWithContext") 567 defer func() { 568 sc := -1 569 if iter.Response().Response.Response != nil { 570 sc = iter.Response().Response.Response.StatusCode 571 } 572 tracing.EndSpan(ctx, sc, err) 573 }() 574 } 575 iter.i++ 576 if iter.i < len(iter.page.Values()) { 577 return nil 578 } 579 err = iter.page.NextWithContext(ctx) 580 if err != nil { 581 iter.i-- 582 return err 583 } 584 iter.i = 0 585 return nil 586} 587 588// Next advances to the next value. If there was an error making 589// the request the iterator does not advance and the error is returned. 590// Deprecated: Use NextWithContext() instead. 591func (iter *AssetCollectionIterator) Next() error { 592 return iter.NextWithContext(context.Background()) 593} 594 595// NotDone returns true if the enumeration should be started or is not yet complete. 596func (iter AssetCollectionIterator) NotDone() bool { 597 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 598} 599 600// Response returns the raw server response from the last page request. 601func (iter AssetCollectionIterator) Response() AssetCollection { 602 return iter.page.Response() 603} 604 605// Value returns the current value or a zero-initialized value if the 606// iterator has advanced beyond the end of the collection. 607func (iter AssetCollectionIterator) Value() Asset { 608 if !iter.page.NotDone() { 609 return Asset{} 610 } 611 return iter.page.Values()[iter.i] 612} 613 614// Creates a new instance of the AssetCollectionIterator type. 615func NewAssetCollectionIterator(page AssetCollectionPage) AssetCollectionIterator { 616 return AssetCollectionIterator{page: page} 617} 618 619// IsEmpty returns true if the ListResult contains no values. 620func (ac AssetCollection) IsEmpty() bool { 621 return ac.Value == nil || len(*ac.Value) == 0 622} 623 624// hasNextLink returns true if the NextLink is not empty. 625func (ac AssetCollection) hasNextLink() bool { 626 return ac.OdataNextLink != nil && len(*ac.OdataNextLink) != 0 627} 628 629// assetCollectionPreparer prepares a request to retrieve the next set of results. 630// It returns nil if no more results exist. 631func (ac AssetCollection) assetCollectionPreparer(ctx context.Context) (*http.Request, error) { 632 if !ac.hasNextLink() { 633 return nil, nil 634 } 635 return autorest.Prepare((&http.Request{}).WithContext(ctx), 636 autorest.AsJSON(), 637 autorest.AsGet(), 638 autorest.WithBaseURL(to.String(ac.OdataNextLink))) 639} 640 641// AssetCollectionPage contains a page of Asset values. 642type AssetCollectionPage struct { 643 fn func(context.Context, AssetCollection) (AssetCollection, error) 644 ac AssetCollection 645} 646 647// NextWithContext advances to the next page of values. If there was an error making 648// the request the page does not advance and the error is returned. 649func (page *AssetCollectionPage) NextWithContext(ctx context.Context) (err error) { 650 if tracing.IsEnabled() { 651 ctx = tracing.StartSpan(ctx, fqdn+"/AssetCollectionPage.NextWithContext") 652 defer func() { 653 sc := -1 654 if page.Response().Response.Response != nil { 655 sc = page.Response().Response.Response.StatusCode 656 } 657 tracing.EndSpan(ctx, sc, err) 658 }() 659 } 660 for { 661 next, err := page.fn(ctx, page.ac) 662 if err != nil { 663 return err 664 } 665 page.ac = next 666 if !next.hasNextLink() || !next.IsEmpty() { 667 break 668 } 669 } 670 return nil 671} 672 673// Next advances to the next page of values. If there was an error making 674// the request the page does not advance and the error is returned. 675// Deprecated: Use NextWithContext() instead. 676func (page *AssetCollectionPage) Next() error { 677 return page.NextWithContext(context.Background()) 678} 679 680// NotDone returns true if the page enumeration should be started or is not yet complete. 681func (page AssetCollectionPage) NotDone() bool { 682 return !page.ac.IsEmpty() 683} 684 685// Response returns the raw server response from the last page request. 686func (page AssetCollectionPage) Response() AssetCollection { 687 return page.ac 688} 689 690// Values returns the slice of values for the current page or nil if there are no values. 691func (page AssetCollectionPage) Values() []Asset { 692 if page.ac.IsEmpty() { 693 return nil 694 } 695 return *page.ac.Value 696} 697 698// Creates a new instance of the AssetCollectionPage type. 699func NewAssetCollectionPage(cur AssetCollection, getNextPage func(context.Context, AssetCollection) (AssetCollection, error)) AssetCollectionPage { 700 return AssetCollectionPage{ 701 fn: getNextPage, 702 ac: cur, 703 } 704} 705 706// AssetContainerSas the Asset Storage container SAS URLs. 707type AssetContainerSas struct { 708 autorest.Response `json:"-"` 709 // AssetContainerSasUrls - The list of Asset container SAS URLs. 710 AssetContainerSasUrls *[]string `json:"assetContainerSasUrls,omitempty"` 711} 712 713// AssetFileEncryptionMetadata the Asset File Storage encryption metadata. 714type AssetFileEncryptionMetadata struct { 715 // InitializationVector - The Asset File initialization vector. 716 InitializationVector *string `json:"initializationVector,omitempty"` 717 // AssetFileName - The Asset File name. 718 AssetFileName *string `json:"assetFileName,omitempty"` 719 // AssetFileID - The Asset File Id. 720 AssetFileID *uuid.UUID `json:"assetFileId,omitempty"` 721} 722 723// AssetFilter an Asset Filter. 724type AssetFilter struct { 725 autorest.Response `json:"-"` 726 *FilterProperties `json:"properties,omitempty"` 727 // SystemData - READ-ONLY; The system metadata relating to this resource. 728 SystemData *SystemData `json:"systemData,omitempty"` 729 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 730 ID *string `json:"id,omitempty"` 731 // Name - READ-ONLY; The name of the resource 732 Name *string `json:"name,omitempty"` 733 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 734 Type *string `json:"type,omitempty"` 735} 736 737// MarshalJSON is the custom marshaler for AssetFilter. 738func (af AssetFilter) MarshalJSON() ([]byte, error) { 739 objectMap := make(map[string]interface{}) 740 if af.FilterProperties != nil { 741 objectMap["properties"] = af.FilterProperties 742 } 743 return json.Marshal(objectMap) 744} 745 746// UnmarshalJSON is the custom unmarshaler for AssetFilter struct. 747func (af *AssetFilter) UnmarshalJSON(body []byte) error { 748 var m map[string]*json.RawMessage 749 err := json.Unmarshal(body, &m) 750 if err != nil { 751 return err 752 } 753 for k, v := range m { 754 switch k { 755 case "properties": 756 if v != nil { 757 var filterProperties FilterProperties 758 err = json.Unmarshal(*v, &filterProperties) 759 if err != nil { 760 return err 761 } 762 af.FilterProperties = &filterProperties 763 } 764 case "systemData": 765 if v != nil { 766 var systemData SystemData 767 err = json.Unmarshal(*v, &systemData) 768 if err != nil { 769 return err 770 } 771 af.SystemData = &systemData 772 } 773 case "id": 774 if v != nil { 775 var ID string 776 err = json.Unmarshal(*v, &ID) 777 if err != nil { 778 return err 779 } 780 af.ID = &ID 781 } 782 case "name": 783 if v != nil { 784 var name string 785 err = json.Unmarshal(*v, &name) 786 if err != nil { 787 return err 788 } 789 af.Name = &name 790 } 791 case "type": 792 if v != nil { 793 var typeVar string 794 err = json.Unmarshal(*v, &typeVar) 795 if err != nil { 796 return err 797 } 798 af.Type = &typeVar 799 } 800 } 801 } 802 803 return nil 804} 805 806// AssetFilterCollection a collection of AssetFilter items. 807type AssetFilterCollection struct { 808 autorest.Response `json:"-"` 809 // Value - A collection of AssetFilter items. 810 Value *[]AssetFilter `json:"value,omitempty"` 811 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 812 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 813} 814 815// AssetFilterCollectionIterator provides access to a complete listing of AssetFilter values. 816type AssetFilterCollectionIterator struct { 817 i int 818 page AssetFilterCollectionPage 819} 820 821// NextWithContext advances to the next value. If there was an error making 822// the request the iterator does not advance and the error is returned. 823func (iter *AssetFilterCollectionIterator) NextWithContext(ctx context.Context) (err error) { 824 if tracing.IsEnabled() { 825 ctx = tracing.StartSpan(ctx, fqdn+"/AssetFilterCollectionIterator.NextWithContext") 826 defer func() { 827 sc := -1 828 if iter.Response().Response.Response != nil { 829 sc = iter.Response().Response.Response.StatusCode 830 } 831 tracing.EndSpan(ctx, sc, err) 832 }() 833 } 834 iter.i++ 835 if iter.i < len(iter.page.Values()) { 836 return nil 837 } 838 err = iter.page.NextWithContext(ctx) 839 if err != nil { 840 iter.i-- 841 return err 842 } 843 iter.i = 0 844 return nil 845} 846 847// Next advances to the next value. If there was an error making 848// the request the iterator does not advance and the error is returned. 849// Deprecated: Use NextWithContext() instead. 850func (iter *AssetFilterCollectionIterator) Next() error { 851 return iter.NextWithContext(context.Background()) 852} 853 854// NotDone returns true if the enumeration should be started or is not yet complete. 855func (iter AssetFilterCollectionIterator) NotDone() bool { 856 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 857} 858 859// Response returns the raw server response from the last page request. 860func (iter AssetFilterCollectionIterator) Response() AssetFilterCollection { 861 return iter.page.Response() 862} 863 864// Value returns the current value or a zero-initialized value if the 865// iterator has advanced beyond the end of the collection. 866func (iter AssetFilterCollectionIterator) Value() AssetFilter { 867 if !iter.page.NotDone() { 868 return AssetFilter{} 869 } 870 return iter.page.Values()[iter.i] 871} 872 873// Creates a new instance of the AssetFilterCollectionIterator type. 874func NewAssetFilterCollectionIterator(page AssetFilterCollectionPage) AssetFilterCollectionIterator { 875 return AssetFilterCollectionIterator{page: page} 876} 877 878// IsEmpty returns true if the ListResult contains no values. 879func (afc AssetFilterCollection) IsEmpty() bool { 880 return afc.Value == nil || len(*afc.Value) == 0 881} 882 883// hasNextLink returns true if the NextLink is not empty. 884func (afc AssetFilterCollection) hasNextLink() bool { 885 return afc.OdataNextLink != nil && len(*afc.OdataNextLink) != 0 886} 887 888// assetFilterCollectionPreparer prepares a request to retrieve the next set of results. 889// It returns nil if no more results exist. 890func (afc AssetFilterCollection) assetFilterCollectionPreparer(ctx context.Context) (*http.Request, error) { 891 if !afc.hasNextLink() { 892 return nil, nil 893 } 894 return autorest.Prepare((&http.Request{}).WithContext(ctx), 895 autorest.AsJSON(), 896 autorest.AsGet(), 897 autorest.WithBaseURL(to.String(afc.OdataNextLink))) 898} 899 900// AssetFilterCollectionPage contains a page of AssetFilter values. 901type AssetFilterCollectionPage struct { 902 fn func(context.Context, AssetFilterCollection) (AssetFilterCollection, error) 903 afc AssetFilterCollection 904} 905 906// NextWithContext advances to the next page of values. If there was an error making 907// the request the page does not advance and the error is returned. 908func (page *AssetFilterCollectionPage) NextWithContext(ctx context.Context) (err error) { 909 if tracing.IsEnabled() { 910 ctx = tracing.StartSpan(ctx, fqdn+"/AssetFilterCollectionPage.NextWithContext") 911 defer func() { 912 sc := -1 913 if page.Response().Response.Response != nil { 914 sc = page.Response().Response.Response.StatusCode 915 } 916 tracing.EndSpan(ctx, sc, err) 917 }() 918 } 919 for { 920 next, err := page.fn(ctx, page.afc) 921 if err != nil { 922 return err 923 } 924 page.afc = next 925 if !next.hasNextLink() || !next.IsEmpty() { 926 break 927 } 928 } 929 return nil 930} 931 932// Next advances to the next page of values. If there was an error making 933// the request the page does not advance and the error is returned. 934// Deprecated: Use NextWithContext() instead. 935func (page *AssetFilterCollectionPage) Next() error { 936 return page.NextWithContext(context.Background()) 937} 938 939// NotDone returns true if the page enumeration should be started or is not yet complete. 940func (page AssetFilterCollectionPage) NotDone() bool { 941 return !page.afc.IsEmpty() 942} 943 944// Response returns the raw server response from the last page request. 945func (page AssetFilterCollectionPage) Response() AssetFilterCollection { 946 return page.afc 947} 948 949// Values returns the slice of values for the current page or nil if there are no values. 950func (page AssetFilterCollectionPage) Values() []AssetFilter { 951 if page.afc.IsEmpty() { 952 return nil 953 } 954 return *page.afc.Value 955} 956 957// Creates a new instance of the AssetFilterCollectionPage type. 958func NewAssetFilterCollectionPage(cur AssetFilterCollection, getNextPage func(context.Context, AssetFilterCollection) (AssetFilterCollection, error)) AssetFilterCollectionPage { 959 return AssetFilterCollectionPage{ 960 fn: getNextPage, 961 afc: cur, 962 } 963} 964 965// AssetProperties the Asset properties. 966type AssetProperties struct { 967 // AssetID - READ-ONLY; The Asset ID. 968 AssetID *uuid.UUID `json:"assetId,omitempty"` 969 // Created - READ-ONLY; The creation date of the Asset. 970 Created *date.Time `json:"created,omitempty"` 971 // LastModified - READ-ONLY; The last modified date of the Asset. 972 LastModified *date.Time `json:"lastModified,omitempty"` 973 // AlternateID - The alternate ID of the Asset. 974 AlternateID *string `json:"alternateId,omitempty"` 975 // Description - The Asset description. 976 Description *string `json:"description,omitempty"` 977 // Container - The name of the asset blob container. 978 Container *string `json:"container,omitempty"` 979 // StorageAccountName - The name of the storage account. 980 StorageAccountName *string `json:"storageAccountName,omitempty"` 981 // StorageEncryptionFormat - READ-ONLY; The Asset encryption format. One of None or MediaStorageEncryption. Possible values include: 'AssetStorageEncryptionFormatNone', 'AssetStorageEncryptionFormatMediaStorageClientEncryption' 982 StorageEncryptionFormat AssetStorageEncryptionFormat `json:"storageEncryptionFormat,omitempty"` 983} 984 985// MarshalJSON is the custom marshaler for AssetProperties. 986func (ap AssetProperties) MarshalJSON() ([]byte, error) { 987 objectMap := make(map[string]interface{}) 988 if ap.AlternateID != nil { 989 objectMap["alternateId"] = ap.AlternateID 990 } 991 if ap.Description != nil { 992 objectMap["description"] = ap.Description 993 } 994 if ap.Container != nil { 995 objectMap["container"] = ap.Container 996 } 997 if ap.StorageAccountName != nil { 998 objectMap["storageAccountName"] = ap.StorageAccountName 999 } 1000 return json.Marshal(objectMap) 1001} 1002 1003// AssetStreamingLocator properties of the Streaming Locator. 1004type AssetStreamingLocator struct { 1005 // Name - READ-ONLY; Streaming Locator name. 1006 Name *string `json:"name,omitempty"` 1007 // AssetName - READ-ONLY; Asset Name. 1008 AssetName *string `json:"assetName,omitempty"` 1009 // Created - READ-ONLY; The creation time of the Streaming Locator. 1010 Created *date.Time `json:"created,omitempty"` 1011 // StartTime - READ-ONLY; The start time of the Streaming Locator. 1012 StartTime *date.Time `json:"startTime,omitempty"` 1013 // EndTime - READ-ONLY; The end time of the Streaming Locator. 1014 EndTime *date.Time `json:"endTime,omitempty"` 1015 // StreamingLocatorID - READ-ONLY; StreamingLocatorId of the Streaming Locator. 1016 StreamingLocatorID *uuid.UUID `json:"streamingLocatorId,omitempty"` 1017 // StreamingPolicyName - READ-ONLY; Name of the Streaming Policy used by this Streaming Locator. 1018 StreamingPolicyName *string `json:"streamingPolicyName,omitempty"` 1019 // DefaultContentKeyPolicyName - READ-ONLY; Name of the default ContentKeyPolicy used by this Streaming Locator. 1020 DefaultContentKeyPolicyName *string `json:"defaultContentKeyPolicyName,omitempty"` 1021} 1022 1023// MarshalJSON is the custom marshaler for AssetStreamingLocator. 1024func (asl AssetStreamingLocator) MarshalJSON() ([]byte, error) { 1025 objectMap := make(map[string]interface{}) 1026 return json.Marshal(objectMap) 1027} 1028 1029// BasicAudio defines the common properties for all audio codecs. 1030type BasicAudio interface { 1031 AsAacAudio() (*AacAudio, bool) 1032 AsAudio() (*Audio, bool) 1033} 1034 1035// Audio defines the common properties for all audio codecs. 1036type Audio struct { 1037 // Channels - The number of channels in the audio. 1038 Channels *int32 `json:"channels,omitempty"` 1039 // SamplingRate - The sampling rate to use for encoding in hertz. 1040 SamplingRate *int32 `json:"samplingRate,omitempty"` 1041 // Bitrate - The bitrate, in bits per second, of the output encoded audio. 1042 Bitrate *int32 `json:"bitrate,omitempty"` 1043 // Label - An optional label for the codec. The label can be used to control muxing behavior. 1044 Label *string `json:"label,omitempty"` 1045 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 1046 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 1047} 1048 1049func unmarshalBasicAudio(body []byte) (BasicAudio, error) { 1050 var m map[string]interface{} 1051 err := json.Unmarshal(body, &m) 1052 if err != nil { 1053 return nil, err 1054 } 1055 1056 switch m["@odata.type"] { 1057 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio): 1058 var aa AacAudio 1059 err := json.Unmarshal(body, &aa) 1060 return aa, err 1061 default: 1062 var a Audio 1063 err := json.Unmarshal(body, &a) 1064 return a, err 1065 } 1066} 1067func unmarshalBasicAudioArray(body []byte) ([]BasicAudio, error) { 1068 var rawMessages []*json.RawMessage 1069 err := json.Unmarshal(body, &rawMessages) 1070 if err != nil { 1071 return nil, err 1072 } 1073 1074 aArray := make([]BasicAudio, len(rawMessages)) 1075 1076 for index, rawMessage := range rawMessages { 1077 a, err := unmarshalBasicAudio(*rawMessage) 1078 if err != nil { 1079 return nil, err 1080 } 1081 aArray[index] = a 1082 } 1083 return aArray, nil 1084} 1085 1086// MarshalJSON is the custom marshaler for Audio. 1087func (a Audio) MarshalJSON() ([]byte, error) { 1088 a.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio 1089 objectMap := make(map[string]interface{}) 1090 if a.Channels != nil { 1091 objectMap["channels"] = a.Channels 1092 } 1093 if a.SamplingRate != nil { 1094 objectMap["samplingRate"] = a.SamplingRate 1095 } 1096 if a.Bitrate != nil { 1097 objectMap["bitrate"] = a.Bitrate 1098 } 1099 if a.Label != nil { 1100 objectMap["label"] = a.Label 1101 } 1102 if a.OdataType != "" { 1103 objectMap["@odata.type"] = a.OdataType 1104 } 1105 return json.Marshal(objectMap) 1106} 1107 1108// AsAudio is the BasicCodec implementation for Audio. 1109func (a Audio) AsAudio() (*Audio, bool) { 1110 return &a, true 1111} 1112 1113// AsBasicAudio is the BasicCodec implementation for Audio. 1114func (a Audio) AsBasicAudio() (BasicAudio, bool) { 1115 return &a, true 1116} 1117 1118// AsAacAudio is the BasicCodec implementation for Audio. 1119func (a Audio) AsAacAudio() (*AacAudio, bool) { 1120 return nil, false 1121} 1122 1123// AsVideo is the BasicCodec implementation for Audio. 1124func (a Audio) AsVideo() (*Video, bool) { 1125 return nil, false 1126} 1127 1128// AsBasicVideo is the BasicCodec implementation for Audio. 1129func (a Audio) AsBasicVideo() (BasicVideo, bool) { 1130 return nil, false 1131} 1132 1133// AsH265Video is the BasicCodec implementation for Audio. 1134func (a Audio) AsH265Video() (*H265Video, bool) { 1135 return nil, false 1136} 1137 1138// AsCopyVideo is the BasicCodec implementation for Audio. 1139func (a Audio) AsCopyVideo() (*CopyVideo, bool) { 1140 return nil, false 1141} 1142 1143// AsImage is the BasicCodec implementation for Audio. 1144func (a Audio) AsImage() (*Image, bool) { 1145 return nil, false 1146} 1147 1148// AsBasicImage is the BasicCodec implementation for Audio. 1149func (a Audio) AsBasicImage() (BasicImage, bool) { 1150 return nil, false 1151} 1152 1153// AsCopyAudio is the BasicCodec implementation for Audio. 1154func (a Audio) AsCopyAudio() (*CopyAudio, bool) { 1155 return nil, false 1156} 1157 1158// AsH264Video is the BasicCodec implementation for Audio. 1159func (a Audio) AsH264Video() (*H264Video, bool) { 1160 return nil, false 1161} 1162 1163// AsJpgImage is the BasicCodec implementation for Audio. 1164func (a Audio) AsJpgImage() (*JpgImage, bool) { 1165 return nil, false 1166} 1167 1168// AsPngImage is the BasicCodec implementation for Audio. 1169func (a Audio) AsPngImage() (*PngImage, bool) { 1170 return nil, false 1171} 1172 1173// AsCodec is the BasicCodec implementation for Audio. 1174func (a Audio) AsCodec() (*Codec, bool) { 1175 return nil, false 1176} 1177 1178// AsBasicCodec is the BasicCodec implementation for Audio. 1179func (a Audio) AsBasicCodec() (BasicCodec, bool) { 1180 return &a, true 1181} 1182 1183// BasicAudioAnalyzerPreset the Audio Analyzer preset applies a pre-defined set of AI-based analysis operations, 1184// including speech transcription. Currently, the preset supports processing of content with a single audio track. 1185type BasicAudioAnalyzerPreset interface { 1186 AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) 1187 AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) 1188} 1189 1190// AudioAnalyzerPreset the Audio Analyzer preset applies a pre-defined set of AI-based analysis operations, 1191// including speech transcription. Currently, the preset supports processing of content with a single audio 1192// track. 1193type AudioAnalyzerPreset struct { 1194 // 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 1195 AudioLanguage *string `json:"audioLanguage,omitempty"` 1196 // Mode - Determines the set of audio analysis operations to be performed. If unspecified, the Standard AudioAnalysisMode would be chosen. Possible values include: 'AudioAnalysisModeStandard', 'AudioAnalysisModeBasic' 1197 Mode AudioAnalysisMode `json:"mode,omitempty"` 1198 // ExperimentalOptions - Dictionary containing key value pairs for parameters not exposed in the preset itself 1199 ExperimentalOptions map[string]*string `json:"experimentalOptions"` 1200 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 1201 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 1202} 1203 1204func unmarshalBasicAudioAnalyzerPreset(body []byte) (BasicAudioAnalyzerPreset, error) { 1205 var m map[string]interface{} 1206 err := json.Unmarshal(body, &m) 1207 if err != nil { 1208 return nil, err 1209 } 1210 1211 switch m["@odata.type"] { 1212 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset): 1213 var vap VideoAnalyzerPreset 1214 err := json.Unmarshal(body, &vap) 1215 return vap, err 1216 default: 1217 var aap AudioAnalyzerPreset 1218 err := json.Unmarshal(body, &aap) 1219 return aap, err 1220 } 1221} 1222func unmarshalBasicAudioAnalyzerPresetArray(body []byte) ([]BasicAudioAnalyzerPreset, error) { 1223 var rawMessages []*json.RawMessage 1224 err := json.Unmarshal(body, &rawMessages) 1225 if err != nil { 1226 return nil, err 1227 } 1228 1229 aapArray := make([]BasicAudioAnalyzerPreset, len(rawMessages)) 1230 1231 for index, rawMessage := range rawMessages { 1232 aap, err := unmarshalBasicAudioAnalyzerPreset(*rawMessage) 1233 if err != nil { 1234 return nil, err 1235 } 1236 aapArray[index] = aap 1237 } 1238 return aapArray, nil 1239} 1240 1241// MarshalJSON is the custom marshaler for AudioAnalyzerPreset. 1242func (aap AudioAnalyzerPreset) MarshalJSON() ([]byte, error) { 1243 aap.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset 1244 objectMap := make(map[string]interface{}) 1245 if aap.AudioLanguage != nil { 1246 objectMap["audioLanguage"] = aap.AudioLanguage 1247 } 1248 if aap.Mode != "" { 1249 objectMap["mode"] = aap.Mode 1250 } 1251 if aap.ExperimentalOptions != nil { 1252 objectMap["experimentalOptions"] = aap.ExperimentalOptions 1253 } 1254 if aap.OdataType != "" { 1255 objectMap["@odata.type"] = aap.OdataType 1256 } 1257 return json.Marshal(objectMap) 1258} 1259 1260// AsFaceDetectorPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1261func (aap AudioAnalyzerPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 1262 return nil, false 1263} 1264 1265// AsAudioAnalyzerPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1266func (aap AudioAnalyzerPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 1267 return &aap, true 1268} 1269 1270// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1271func (aap AudioAnalyzerPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 1272 return &aap, true 1273} 1274 1275// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1276func (aap AudioAnalyzerPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 1277 return nil, false 1278} 1279 1280// AsStandardEncoderPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1281func (aap AudioAnalyzerPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 1282 return nil, false 1283} 1284 1285// AsVideoAnalyzerPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1286func (aap AudioAnalyzerPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 1287 return nil, false 1288} 1289 1290// AsPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1291func (aap AudioAnalyzerPreset) AsPreset() (*Preset, bool) { 1292 return nil, false 1293} 1294 1295// AsBasicPreset is the BasicPreset implementation for AudioAnalyzerPreset. 1296func (aap AudioAnalyzerPreset) AsBasicPreset() (BasicPreset, bool) { 1297 return &aap, true 1298} 1299 1300// AudioOverlay describes the properties of an audio overlay. 1301type AudioOverlay struct { 1302 // 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. 1303 InputLabel *string `json:"inputLabel,omitempty"` 1304 // 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. 1305 Start *string `json:"start,omitempty"` 1306 // 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. 1307 End *string `json:"end,omitempty"` 1308 // 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). 1309 FadeInDuration *string `json:"fadeInDuration,omitempty"` 1310 // 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). 1311 FadeOutDuration *string `json:"fadeOutDuration,omitempty"` 1312 // AudioGainLevel - The gain level of audio in the overlay. The value should be in the range [0, 1.0]. The default is 1.0. 1313 AudioGainLevel *float64 `json:"audioGainLevel,omitempty"` 1314 // OdataType - Possible values include: 'OdataTypeBasicOverlayOdataTypeOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay' 1315 OdataType OdataTypeBasicOverlay `json:"@odata.type,omitempty"` 1316} 1317 1318// MarshalJSON is the custom marshaler for AudioOverlay. 1319func (ao AudioOverlay) MarshalJSON() ([]byte, error) { 1320 ao.OdataType = OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay 1321 objectMap := make(map[string]interface{}) 1322 if ao.InputLabel != nil { 1323 objectMap["inputLabel"] = ao.InputLabel 1324 } 1325 if ao.Start != nil { 1326 objectMap["start"] = ao.Start 1327 } 1328 if ao.End != nil { 1329 objectMap["end"] = ao.End 1330 } 1331 if ao.FadeInDuration != nil { 1332 objectMap["fadeInDuration"] = ao.FadeInDuration 1333 } 1334 if ao.FadeOutDuration != nil { 1335 objectMap["fadeOutDuration"] = ao.FadeOutDuration 1336 } 1337 if ao.AudioGainLevel != nil { 1338 objectMap["audioGainLevel"] = ao.AudioGainLevel 1339 } 1340 if ao.OdataType != "" { 1341 objectMap["@odata.type"] = ao.OdataType 1342 } 1343 return json.Marshal(objectMap) 1344} 1345 1346// AsAudioOverlay is the BasicOverlay implementation for AudioOverlay. 1347func (ao AudioOverlay) AsAudioOverlay() (*AudioOverlay, bool) { 1348 return &ao, true 1349} 1350 1351// AsVideoOverlay is the BasicOverlay implementation for AudioOverlay. 1352func (ao AudioOverlay) AsVideoOverlay() (*VideoOverlay, bool) { 1353 return nil, false 1354} 1355 1356// AsOverlay is the BasicOverlay implementation for AudioOverlay. 1357func (ao AudioOverlay) AsOverlay() (*Overlay, bool) { 1358 return nil, false 1359} 1360 1361// AsBasicOverlay is the BasicOverlay implementation for AudioOverlay. 1362func (ao AudioOverlay) AsBasicOverlay() (BasicOverlay, bool) { 1363 return &ao, true 1364} 1365 1366// BasicAudioTrackDescriptor a TrackSelection to select audio tracks. 1367type BasicAudioTrackDescriptor interface { 1368 AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) 1369 AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) 1370 AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) 1371} 1372 1373// AudioTrackDescriptor a TrackSelection to select audio tracks. 1374type AudioTrackDescriptor struct { 1375 // 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' 1376 ChannelMapping ChannelMapping `json:"channelMapping,omitempty"` 1377 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 1378 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 1379} 1380 1381func unmarshalBasicAudioTrackDescriptor(body []byte) (BasicAudioTrackDescriptor, error) { 1382 var m map[string]interface{} 1383 err := json.Unmarshal(body, &m) 1384 if err != nil { 1385 return nil, err 1386 } 1387 1388 switch m["@odata.type"] { 1389 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute): 1390 var satba SelectAudioTrackByAttribute 1391 err := json.Unmarshal(body, &satba) 1392 return satba, err 1393 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID): 1394 var satbi SelectAudioTrackByID 1395 err := json.Unmarshal(body, &satbi) 1396 return satbi, err 1397 default: 1398 var atd AudioTrackDescriptor 1399 err := json.Unmarshal(body, &atd) 1400 return atd, err 1401 } 1402} 1403func unmarshalBasicAudioTrackDescriptorArray(body []byte) ([]BasicAudioTrackDescriptor, error) { 1404 var rawMessages []*json.RawMessage 1405 err := json.Unmarshal(body, &rawMessages) 1406 if err != nil { 1407 return nil, err 1408 } 1409 1410 atdArray := make([]BasicAudioTrackDescriptor, len(rawMessages)) 1411 1412 for index, rawMessage := range rawMessages { 1413 atd, err := unmarshalBasicAudioTrackDescriptor(*rawMessage) 1414 if err != nil { 1415 return nil, err 1416 } 1417 atdArray[index] = atd 1418 } 1419 return atdArray, nil 1420} 1421 1422// MarshalJSON is the custom marshaler for AudioTrackDescriptor. 1423func (atd AudioTrackDescriptor) MarshalJSON() ([]byte, error) { 1424 atd.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor 1425 objectMap := make(map[string]interface{}) 1426 if atd.ChannelMapping != "" { 1427 objectMap["channelMapping"] = atd.ChannelMapping 1428 } 1429 if atd.OdataType != "" { 1430 objectMap["@odata.type"] = atd.OdataType 1431 } 1432 return json.Marshal(objectMap) 1433} 1434 1435// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1436func (atd AudioTrackDescriptor) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 1437 return &atd, true 1438} 1439 1440// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1441func (atd AudioTrackDescriptor) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 1442 return &atd, true 1443} 1444 1445// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1446func (atd AudioTrackDescriptor) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 1447 return nil, false 1448} 1449 1450// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1451func (atd AudioTrackDescriptor) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 1452 return nil, false 1453} 1454 1455// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1456func (atd AudioTrackDescriptor) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 1457 return nil, false 1458} 1459 1460// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1461func (atd AudioTrackDescriptor) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 1462 return nil, false 1463} 1464 1465// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1466func (atd AudioTrackDescriptor) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 1467 return nil, false 1468} 1469 1470// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1471func (atd AudioTrackDescriptor) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 1472 return nil, false 1473} 1474 1475// AsTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1476func (atd AudioTrackDescriptor) AsTrackDescriptor() (*TrackDescriptor, bool) { 1477 return nil, false 1478} 1479 1480// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for AudioTrackDescriptor. 1481func (atd AudioTrackDescriptor) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 1482 return &atd, true 1483} 1484 1485// AzureEntityResource the resource model definition for an Azure Resource Manager resource with an etag. 1486type AzureEntityResource struct { 1487 // Etag - READ-ONLY; Resource Etag. 1488 Etag *string `json:"etag,omitempty"` 1489 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 1490 ID *string `json:"id,omitempty"` 1491 // Name - READ-ONLY; The name of the resource 1492 Name *string `json:"name,omitempty"` 1493 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 1494 Type *string `json:"type,omitempty"` 1495} 1496 1497// MarshalJSON is the custom marshaler for AzureEntityResource. 1498func (aer AzureEntityResource) MarshalJSON() ([]byte, error) { 1499 objectMap := make(map[string]interface{}) 1500 return json.Marshal(objectMap) 1501} 1502 1503// BuiltInStandardEncoderPreset describes a built-in preset for encoding the input video with the Standard 1504// Encoder. 1505type BuiltInStandardEncoderPreset struct { 1506 // 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' 1507 PresetName EncoderNamedPreset `json:"presetName,omitempty"` 1508 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 1509 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 1510} 1511 1512// MarshalJSON is the custom marshaler for BuiltInStandardEncoderPreset. 1513func (bisep BuiltInStandardEncoderPreset) MarshalJSON() ([]byte, error) { 1514 bisep.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset 1515 objectMap := make(map[string]interface{}) 1516 if bisep.PresetName != "" { 1517 objectMap["presetName"] = bisep.PresetName 1518 } 1519 if bisep.OdataType != "" { 1520 objectMap["@odata.type"] = bisep.OdataType 1521 } 1522 return json.Marshal(objectMap) 1523} 1524 1525// AsFaceDetectorPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1526func (bisep BuiltInStandardEncoderPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 1527 return nil, false 1528} 1529 1530// AsAudioAnalyzerPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1531func (bisep BuiltInStandardEncoderPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 1532 return nil, false 1533} 1534 1535// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1536func (bisep BuiltInStandardEncoderPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 1537 return nil, false 1538} 1539 1540// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1541func (bisep BuiltInStandardEncoderPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 1542 return &bisep, true 1543} 1544 1545// AsStandardEncoderPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1546func (bisep BuiltInStandardEncoderPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 1547 return nil, false 1548} 1549 1550// AsVideoAnalyzerPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1551func (bisep BuiltInStandardEncoderPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 1552 return nil, false 1553} 1554 1555// AsPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1556func (bisep BuiltInStandardEncoderPreset) AsPreset() (*Preset, bool) { 1557 return nil, false 1558} 1559 1560// AsBasicPreset is the BasicPreset implementation for BuiltInStandardEncoderPreset. 1561func (bisep BuiltInStandardEncoderPreset) AsBasicPreset() (BasicPreset, bool) { 1562 return &bisep, true 1563} 1564 1565// CbcsDrmConfiguration class to specify DRM configurations of CommonEncryptionCbcs scheme in Streaming 1566// Policy 1567type CbcsDrmConfiguration struct { 1568 // FairPlay - FairPlay configurations 1569 FairPlay *StreamingPolicyFairPlayConfiguration `json:"fairPlay,omitempty"` 1570 // PlayReady - PlayReady configurations 1571 PlayReady *StreamingPolicyPlayReadyConfiguration `json:"playReady,omitempty"` 1572 // Widevine - Widevine configurations 1573 Widevine *StreamingPolicyWidevineConfiguration `json:"widevine,omitempty"` 1574} 1575 1576// CencDrmConfiguration class to specify DRM configurations of CommonEncryptionCenc scheme in Streaming 1577// Policy 1578type CencDrmConfiguration struct { 1579 // PlayReady - PlayReady configurations 1580 PlayReady *StreamingPolicyPlayReadyConfiguration `json:"playReady,omitempty"` 1581 // Widevine - Widevine configurations 1582 Widevine *StreamingPolicyWidevineConfiguration `json:"widevine,omitempty"` 1583} 1584 1585// CheckNameAvailabilityInput the input to the check name availability request. 1586type CheckNameAvailabilityInput struct { 1587 // Name - The account name. 1588 Name *string `json:"name,omitempty"` 1589 // Type - The account type. For a Media Services account, this should be 'MediaServices'. 1590 Type *string `json:"type,omitempty"` 1591} 1592 1593// BasicClipTime base class for specifying a clip time. Use sub classes of this class to specify the time position in 1594// the media. 1595type BasicClipTime interface { 1596 AsAbsoluteClipTime() (*AbsoluteClipTime, bool) 1597 AsUtcClipTime() (*UtcClipTime, bool) 1598 AsClipTime() (*ClipTime, bool) 1599} 1600 1601// ClipTime base class for specifying a clip time. Use sub classes of this class to specify the time position 1602// in the media. 1603type ClipTime struct { 1604 // OdataType - Possible values include: 'OdataTypeBasicClipTimeOdataTypeClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime' 1605 OdataType OdataTypeBasicClipTime `json:"@odata.type,omitempty"` 1606} 1607 1608func unmarshalBasicClipTime(body []byte) (BasicClipTime, error) { 1609 var m map[string]interface{} 1610 err := json.Unmarshal(body, &m) 1611 if err != nil { 1612 return nil, err 1613 } 1614 1615 switch m["@odata.type"] { 1616 case string(OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime): 1617 var act AbsoluteClipTime 1618 err := json.Unmarshal(body, &act) 1619 return act, err 1620 case string(OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime): 1621 var uct UtcClipTime 1622 err := json.Unmarshal(body, &uct) 1623 return uct, err 1624 default: 1625 var ct ClipTime 1626 err := json.Unmarshal(body, &ct) 1627 return ct, err 1628 } 1629} 1630func unmarshalBasicClipTimeArray(body []byte) ([]BasicClipTime, error) { 1631 var rawMessages []*json.RawMessage 1632 err := json.Unmarshal(body, &rawMessages) 1633 if err != nil { 1634 return nil, err 1635 } 1636 1637 ctArray := make([]BasicClipTime, len(rawMessages)) 1638 1639 for index, rawMessage := range rawMessages { 1640 ct, err := unmarshalBasicClipTime(*rawMessage) 1641 if err != nil { 1642 return nil, err 1643 } 1644 ctArray[index] = ct 1645 } 1646 return ctArray, nil 1647} 1648 1649// MarshalJSON is the custom marshaler for ClipTime. 1650func (ct ClipTime) MarshalJSON() ([]byte, error) { 1651 ct.OdataType = OdataTypeBasicClipTimeOdataTypeClipTime 1652 objectMap := make(map[string]interface{}) 1653 if ct.OdataType != "" { 1654 objectMap["@odata.type"] = ct.OdataType 1655 } 1656 return json.Marshal(objectMap) 1657} 1658 1659// AsAbsoluteClipTime is the BasicClipTime implementation for ClipTime. 1660func (ct ClipTime) AsAbsoluteClipTime() (*AbsoluteClipTime, bool) { 1661 return nil, false 1662} 1663 1664// AsUtcClipTime is the BasicClipTime implementation for ClipTime. 1665func (ct ClipTime) AsUtcClipTime() (*UtcClipTime, bool) { 1666 return nil, false 1667} 1668 1669// AsClipTime is the BasicClipTime implementation for ClipTime. 1670func (ct ClipTime) AsClipTime() (*ClipTime, bool) { 1671 return &ct, true 1672} 1673 1674// AsBasicClipTime is the BasicClipTime implementation for ClipTime. 1675func (ct ClipTime) AsBasicClipTime() (BasicClipTime, bool) { 1676 return &ct, true 1677} 1678 1679// BasicCodec describes the basic properties of all codecs. 1680type BasicCodec interface { 1681 AsAudio() (*Audio, bool) 1682 AsBasicAudio() (BasicAudio, bool) 1683 AsAacAudio() (*AacAudio, bool) 1684 AsVideo() (*Video, bool) 1685 AsBasicVideo() (BasicVideo, bool) 1686 AsH265Video() (*H265Video, bool) 1687 AsCopyVideo() (*CopyVideo, bool) 1688 AsImage() (*Image, bool) 1689 AsBasicImage() (BasicImage, bool) 1690 AsCopyAudio() (*CopyAudio, bool) 1691 AsH264Video() (*H264Video, bool) 1692 AsJpgImage() (*JpgImage, bool) 1693 AsPngImage() (*PngImage, bool) 1694 AsCodec() (*Codec, bool) 1695} 1696 1697// Codec describes the basic properties of all codecs. 1698type Codec struct { 1699 // Label - An optional label for the codec. The label can be used to control muxing behavior. 1700 Label *string `json:"label,omitempty"` 1701 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 1702 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 1703} 1704 1705func unmarshalBasicCodec(body []byte) (BasicCodec, error) { 1706 var m map[string]interface{} 1707 err := json.Unmarshal(body, &m) 1708 if err != nil { 1709 return nil, err 1710 } 1711 1712 switch m["@odata.type"] { 1713 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio): 1714 var a Audio 1715 err := json.Unmarshal(body, &a) 1716 return a, err 1717 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio): 1718 var aa AacAudio 1719 err := json.Unmarshal(body, &aa) 1720 return aa, err 1721 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo): 1722 var vVar Video 1723 err := json.Unmarshal(body, &vVar) 1724 return vVar, err 1725 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video): 1726 var hv H265Video 1727 err := json.Unmarshal(body, &hv) 1728 return hv, err 1729 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo): 1730 var cv CopyVideo 1731 err := json.Unmarshal(body, &cv) 1732 return cv, err 1733 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaImage): 1734 var i Image 1735 err := json.Unmarshal(body, &i) 1736 return i, err 1737 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio): 1738 var ca CopyAudio 1739 err := json.Unmarshal(body, &ca) 1740 return ca, err 1741 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video): 1742 var hv H264Video 1743 err := json.Unmarshal(body, &hv) 1744 return hv, err 1745 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage): 1746 var ji JpgImage 1747 err := json.Unmarshal(body, &ji) 1748 return ji, err 1749 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage): 1750 var pi PngImage 1751 err := json.Unmarshal(body, &pi) 1752 return pi, err 1753 default: 1754 var c Codec 1755 err := json.Unmarshal(body, &c) 1756 return c, err 1757 } 1758} 1759func unmarshalBasicCodecArray(body []byte) ([]BasicCodec, error) { 1760 var rawMessages []*json.RawMessage 1761 err := json.Unmarshal(body, &rawMessages) 1762 if err != nil { 1763 return nil, err 1764 } 1765 1766 cArray := make([]BasicCodec, len(rawMessages)) 1767 1768 for index, rawMessage := range rawMessages { 1769 c, err := unmarshalBasicCodec(*rawMessage) 1770 if err != nil { 1771 return nil, err 1772 } 1773 cArray[index] = c 1774 } 1775 return cArray, nil 1776} 1777 1778// MarshalJSON is the custom marshaler for Codec. 1779func (c Codec) MarshalJSON() ([]byte, error) { 1780 c.OdataType = OdataTypeBasicCodecOdataTypeCodec 1781 objectMap := make(map[string]interface{}) 1782 if c.Label != nil { 1783 objectMap["label"] = c.Label 1784 } 1785 if c.OdataType != "" { 1786 objectMap["@odata.type"] = c.OdataType 1787 } 1788 return json.Marshal(objectMap) 1789} 1790 1791// AsAudio is the BasicCodec implementation for Codec. 1792func (c Codec) AsAudio() (*Audio, bool) { 1793 return nil, false 1794} 1795 1796// AsBasicAudio is the BasicCodec implementation for Codec. 1797func (c Codec) AsBasicAudio() (BasicAudio, bool) { 1798 return nil, false 1799} 1800 1801// AsAacAudio is the BasicCodec implementation for Codec. 1802func (c Codec) AsAacAudio() (*AacAudio, bool) { 1803 return nil, false 1804} 1805 1806// AsVideo is the BasicCodec implementation for Codec. 1807func (c Codec) AsVideo() (*Video, bool) { 1808 return nil, false 1809} 1810 1811// AsBasicVideo is the BasicCodec implementation for Codec. 1812func (c Codec) AsBasicVideo() (BasicVideo, bool) { 1813 return nil, false 1814} 1815 1816// AsH265Video is the BasicCodec implementation for Codec. 1817func (c Codec) AsH265Video() (*H265Video, bool) { 1818 return nil, false 1819} 1820 1821// AsCopyVideo is the BasicCodec implementation for Codec. 1822func (c Codec) AsCopyVideo() (*CopyVideo, bool) { 1823 return nil, false 1824} 1825 1826// AsImage is the BasicCodec implementation for Codec. 1827func (c Codec) AsImage() (*Image, bool) { 1828 return nil, false 1829} 1830 1831// AsBasicImage is the BasicCodec implementation for Codec. 1832func (c Codec) AsBasicImage() (BasicImage, bool) { 1833 return nil, false 1834} 1835 1836// AsCopyAudio is the BasicCodec implementation for Codec. 1837func (c Codec) AsCopyAudio() (*CopyAudio, bool) { 1838 return nil, false 1839} 1840 1841// AsH264Video is the BasicCodec implementation for Codec. 1842func (c Codec) AsH264Video() (*H264Video, bool) { 1843 return nil, false 1844} 1845 1846// AsJpgImage is the BasicCodec implementation for Codec. 1847func (c Codec) AsJpgImage() (*JpgImage, bool) { 1848 return nil, false 1849} 1850 1851// AsPngImage is the BasicCodec implementation for Codec. 1852func (c Codec) AsPngImage() (*PngImage, bool) { 1853 return nil, false 1854} 1855 1856// AsCodec is the BasicCodec implementation for Codec. 1857func (c Codec) AsCodec() (*Codec, bool) { 1858 return &c, true 1859} 1860 1861// AsBasicCodec is the BasicCodec implementation for Codec. 1862func (c Codec) AsBasicCodec() (BasicCodec, bool) { 1863 return &c, true 1864} 1865 1866// CommonEncryptionCbcs class for CommonEncryptionCbcs encryption scheme 1867type CommonEncryptionCbcs struct { 1868 // EnabledProtocols - Representing supported protocols 1869 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 1870 // ClearTracks - Representing which tracks should not be encrypted 1871 ClearTracks *[]TrackSelection `json:"clearTracks,omitempty"` 1872 // ContentKeys - Representing default content key for each encryption scheme and separate content keys for specific tracks 1873 ContentKeys *StreamingPolicyContentKeys `json:"contentKeys,omitempty"` 1874 // Drm - Configuration of DRMs for current encryption scheme 1875 Drm *CbcsDrmConfiguration `json:"drm,omitempty"` 1876} 1877 1878// CommonEncryptionCenc class for envelope encryption scheme 1879type CommonEncryptionCenc struct { 1880 // EnabledProtocols - Representing supported protocols 1881 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 1882 // ClearTracks - Representing which tracks should not be encrypted 1883 ClearTracks *[]TrackSelection `json:"clearTracks,omitempty"` 1884 // ContentKeys - Representing default content key for each encryption scheme and separate content keys for specific tracks 1885 ContentKeys *StreamingPolicyContentKeys `json:"contentKeys,omitempty"` 1886 // Drm - Configuration of DRMs for CommonEncryptionCenc encryption scheme 1887 Drm *CencDrmConfiguration `json:"drm,omitempty"` 1888} 1889 1890// ContentKeyPolicy a Content Key Policy resource. 1891type ContentKeyPolicy struct { 1892 autorest.Response `json:"-"` 1893 *ContentKeyPolicyProperties `json:"properties,omitempty"` 1894 // SystemData - READ-ONLY; The system metadata relating to this resource. 1895 SystemData *SystemData `json:"systemData,omitempty"` 1896 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 1897 ID *string `json:"id,omitempty"` 1898 // Name - READ-ONLY; The name of the resource 1899 Name *string `json:"name,omitempty"` 1900 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 1901 Type *string `json:"type,omitempty"` 1902} 1903 1904// MarshalJSON is the custom marshaler for ContentKeyPolicy. 1905func (ckp ContentKeyPolicy) MarshalJSON() ([]byte, error) { 1906 objectMap := make(map[string]interface{}) 1907 if ckp.ContentKeyPolicyProperties != nil { 1908 objectMap["properties"] = ckp.ContentKeyPolicyProperties 1909 } 1910 return json.Marshal(objectMap) 1911} 1912 1913// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicy struct. 1914func (ckp *ContentKeyPolicy) UnmarshalJSON(body []byte) error { 1915 var m map[string]*json.RawMessage 1916 err := json.Unmarshal(body, &m) 1917 if err != nil { 1918 return err 1919 } 1920 for k, v := range m { 1921 switch k { 1922 case "properties": 1923 if v != nil { 1924 var contentKeyPolicyProperties ContentKeyPolicyProperties 1925 err = json.Unmarshal(*v, &contentKeyPolicyProperties) 1926 if err != nil { 1927 return err 1928 } 1929 ckp.ContentKeyPolicyProperties = &contentKeyPolicyProperties 1930 } 1931 case "systemData": 1932 if v != nil { 1933 var systemData SystemData 1934 err = json.Unmarshal(*v, &systemData) 1935 if err != nil { 1936 return err 1937 } 1938 ckp.SystemData = &systemData 1939 } 1940 case "id": 1941 if v != nil { 1942 var ID string 1943 err = json.Unmarshal(*v, &ID) 1944 if err != nil { 1945 return err 1946 } 1947 ckp.ID = &ID 1948 } 1949 case "name": 1950 if v != nil { 1951 var name string 1952 err = json.Unmarshal(*v, &name) 1953 if err != nil { 1954 return err 1955 } 1956 ckp.Name = &name 1957 } 1958 case "type": 1959 if v != nil { 1960 var typeVar string 1961 err = json.Unmarshal(*v, &typeVar) 1962 if err != nil { 1963 return err 1964 } 1965 ckp.Type = &typeVar 1966 } 1967 } 1968 } 1969 1970 return nil 1971} 1972 1973// ContentKeyPolicyClearKeyConfiguration represents a configuration for non-DRM keys. 1974type ContentKeyPolicyClearKeyConfiguration struct { 1975 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 1976 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 1977} 1978 1979// MarshalJSON is the custom marshaler for ContentKeyPolicyClearKeyConfiguration. 1980func (ckpckc ContentKeyPolicyClearKeyConfiguration) MarshalJSON() ([]byte, error) { 1981 ckpckc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration 1982 objectMap := make(map[string]interface{}) 1983 if ckpckc.OdataType != "" { 1984 objectMap["@odata.type"] = ckpckc.OdataType 1985 } 1986 return json.Marshal(objectMap) 1987} 1988 1989// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 1990func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 1991 return &ckpckc, true 1992} 1993 1994// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 1995func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 1996 return nil, false 1997} 1998 1999// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2000func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2001 return nil, false 2002} 2003 2004// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2005func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2006 return nil, false 2007} 2008 2009// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2010func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2011 return nil, false 2012} 2013 2014// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2015func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2016 return nil, false 2017} 2018 2019// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyClearKeyConfiguration. 2020func (ckpckc ContentKeyPolicyClearKeyConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2021 return &ckpckc, true 2022} 2023 2024// ContentKeyPolicyCollection a collection of ContentKeyPolicy items. 2025type ContentKeyPolicyCollection struct { 2026 autorest.Response `json:"-"` 2027 // Value - A collection of ContentKeyPolicy items. 2028 Value *[]ContentKeyPolicy `json:"value,omitempty"` 2029 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 2030 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 2031} 2032 2033// ContentKeyPolicyCollectionIterator provides access to a complete listing of ContentKeyPolicy values. 2034type ContentKeyPolicyCollectionIterator struct { 2035 i int 2036 page ContentKeyPolicyCollectionPage 2037} 2038 2039// NextWithContext advances to the next value. If there was an error making 2040// the request the iterator does not advance and the error is returned. 2041func (iter *ContentKeyPolicyCollectionIterator) NextWithContext(ctx context.Context) (err error) { 2042 if tracing.IsEnabled() { 2043 ctx = tracing.StartSpan(ctx, fqdn+"/ContentKeyPolicyCollectionIterator.NextWithContext") 2044 defer func() { 2045 sc := -1 2046 if iter.Response().Response.Response != nil { 2047 sc = iter.Response().Response.Response.StatusCode 2048 } 2049 tracing.EndSpan(ctx, sc, err) 2050 }() 2051 } 2052 iter.i++ 2053 if iter.i < len(iter.page.Values()) { 2054 return nil 2055 } 2056 err = iter.page.NextWithContext(ctx) 2057 if err != nil { 2058 iter.i-- 2059 return err 2060 } 2061 iter.i = 0 2062 return nil 2063} 2064 2065// Next advances to the next value. If there was an error making 2066// the request the iterator does not advance and the error is returned. 2067// Deprecated: Use NextWithContext() instead. 2068func (iter *ContentKeyPolicyCollectionIterator) Next() error { 2069 return iter.NextWithContext(context.Background()) 2070} 2071 2072// NotDone returns true if the enumeration should be started or is not yet complete. 2073func (iter ContentKeyPolicyCollectionIterator) NotDone() bool { 2074 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 2075} 2076 2077// Response returns the raw server response from the last page request. 2078func (iter ContentKeyPolicyCollectionIterator) Response() ContentKeyPolicyCollection { 2079 return iter.page.Response() 2080} 2081 2082// Value returns the current value or a zero-initialized value if the 2083// iterator has advanced beyond the end of the collection. 2084func (iter ContentKeyPolicyCollectionIterator) Value() ContentKeyPolicy { 2085 if !iter.page.NotDone() { 2086 return ContentKeyPolicy{} 2087 } 2088 return iter.page.Values()[iter.i] 2089} 2090 2091// Creates a new instance of the ContentKeyPolicyCollectionIterator type. 2092func NewContentKeyPolicyCollectionIterator(page ContentKeyPolicyCollectionPage) ContentKeyPolicyCollectionIterator { 2093 return ContentKeyPolicyCollectionIterator{page: page} 2094} 2095 2096// IsEmpty returns true if the ListResult contains no values. 2097func (ckpc ContentKeyPolicyCollection) IsEmpty() bool { 2098 return ckpc.Value == nil || len(*ckpc.Value) == 0 2099} 2100 2101// hasNextLink returns true if the NextLink is not empty. 2102func (ckpc ContentKeyPolicyCollection) hasNextLink() bool { 2103 return ckpc.OdataNextLink != nil && len(*ckpc.OdataNextLink) != 0 2104} 2105 2106// contentKeyPolicyCollectionPreparer prepares a request to retrieve the next set of results. 2107// It returns nil if no more results exist. 2108func (ckpc ContentKeyPolicyCollection) contentKeyPolicyCollectionPreparer(ctx context.Context) (*http.Request, error) { 2109 if !ckpc.hasNextLink() { 2110 return nil, nil 2111 } 2112 return autorest.Prepare((&http.Request{}).WithContext(ctx), 2113 autorest.AsJSON(), 2114 autorest.AsGet(), 2115 autorest.WithBaseURL(to.String(ckpc.OdataNextLink))) 2116} 2117 2118// ContentKeyPolicyCollectionPage contains a page of ContentKeyPolicy values. 2119type ContentKeyPolicyCollectionPage struct { 2120 fn func(context.Context, ContentKeyPolicyCollection) (ContentKeyPolicyCollection, error) 2121 ckpc ContentKeyPolicyCollection 2122} 2123 2124// NextWithContext advances to the next page of values. If there was an error making 2125// the request the page does not advance and the error is returned. 2126func (page *ContentKeyPolicyCollectionPage) NextWithContext(ctx context.Context) (err error) { 2127 if tracing.IsEnabled() { 2128 ctx = tracing.StartSpan(ctx, fqdn+"/ContentKeyPolicyCollectionPage.NextWithContext") 2129 defer func() { 2130 sc := -1 2131 if page.Response().Response.Response != nil { 2132 sc = page.Response().Response.Response.StatusCode 2133 } 2134 tracing.EndSpan(ctx, sc, err) 2135 }() 2136 } 2137 for { 2138 next, err := page.fn(ctx, page.ckpc) 2139 if err != nil { 2140 return err 2141 } 2142 page.ckpc = next 2143 if !next.hasNextLink() || !next.IsEmpty() { 2144 break 2145 } 2146 } 2147 return nil 2148} 2149 2150// Next advances to the next page of values. If there was an error making 2151// the request the page does not advance and the error is returned. 2152// Deprecated: Use NextWithContext() instead. 2153func (page *ContentKeyPolicyCollectionPage) Next() error { 2154 return page.NextWithContext(context.Background()) 2155} 2156 2157// NotDone returns true if the page enumeration should be started or is not yet complete. 2158func (page ContentKeyPolicyCollectionPage) NotDone() bool { 2159 return !page.ckpc.IsEmpty() 2160} 2161 2162// Response returns the raw server response from the last page request. 2163func (page ContentKeyPolicyCollectionPage) Response() ContentKeyPolicyCollection { 2164 return page.ckpc 2165} 2166 2167// Values returns the slice of values for the current page or nil if there are no values. 2168func (page ContentKeyPolicyCollectionPage) Values() []ContentKeyPolicy { 2169 if page.ckpc.IsEmpty() { 2170 return nil 2171 } 2172 return *page.ckpc.Value 2173} 2174 2175// Creates a new instance of the ContentKeyPolicyCollectionPage type. 2176func NewContentKeyPolicyCollectionPage(cur ContentKeyPolicyCollection, getNextPage func(context.Context, ContentKeyPolicyCollection) (ContentKeyPolicyCollection, error)) ContentKeyPolicyCollectionPage { 2177 return ContentKeyPolicyCollectionPage{ 2178 fn: getNextPage, 2179 ckpc: cur, 2180 } 2181} 2182 2183// BasicContentKeyPolicyConfiguration base class for Content Key Policy configuration. A derived class must be used to 2184// create a configuration. 2185type BasicContentKeyPolicyConfiguration interface { 2186 AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) 2187 AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) 2188 AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) 2189 AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) 2190 AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) 2191 AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) 2192} 2193 2194// ContentKeyPolicyConfiguration base class for Content Key Policy configuration. A derived class must be used 2195// to create a configuration. 2196type ContentKeyPolicyConfiguration struct { 2197 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 2198 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 2199} 2200 2201func unmarshalBasicContentKeyPolicyConfiguration(body []byte) (BasicContentKeyPolicyConfiguration, error) { 2202 var m map[string]interface{} 2203 err := json.Unmarshal(body, &m) 2204 if err != nil { 2205 return nil, err 2206 } 2207 2208 switch m["@odata.type"] { 2209 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration): 2210 var ckpckc ContentKeyPolicyClearKeyConfiguration 2211 err := json.Unmarshal(body, &ckpckc) 2212 return ckpckc, err 2213 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration): 2214 var ckpuc ContentKeyPolicyUnknownConfiguration 2215 err := json.Unmarshal(body, &ckpuc) 2216 return ckpuc, err 2217 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration): 2218 var ckpwc ContentKeyPolicyWidevineConfiguration 2219 err := json.Unmarshal(body, &ckpwc) 2220 return ckpwc, err 2221 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration): 2222 var ckpprc ContentKeyPolicyPlayReadyConfiguration 2223 err := json.Unmarshal(body, &ckpprc) 2224 return ckpprc, err 2225 case string(OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration): 2226 var ckpfpc ContentKeyPolicyFairPlayConfiguration 2227 err := json.Unmarshal(body, &ckpfpc) 2228 return ckpfpc, err 2229 default: 2230 var ckpc ContentKeyPolicyConfiguration 2231 err := json.Unmarshal(body, &ckpc) 2232 return ckpc, err 2233 } 2234} 2235func unmarshalBasicContentKeyPolicyConfigurationArray(body []byte) ([]BasicContentKeyPolicyConfiguration, error) { 2236 var rawMessages []*json.RawMessage 2237 err := json.Unmarshal(body, &rawMessages) 2238 if err != nil { 2239 return nil, err 2240 } 2241 2242 ckpcArray := make([]BasicContentKeyPolicyConfiguration, len(rawMessages)) 2243 2244 for index, rawMessage := range rawMessages { 2245 ckpc, err := unmarshalBasicContentKeyPolicyConfiguration(*rawMessage) 2246 if err != nil { 2247 return nil, err 2248 } 2249 ckpcArray[index] = ckpc 2250 } 2251 return ckpcArray, nil 2252} 2253 2254// MarshalJSON is the custom marshaler for ContentKeyPolicyConfiguration. 2255func (ckpc ContentKeyPolicyConfiguration) MarshalJSON() ([]byte, error) { 2256 ckpc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration 2257 objectMap := make(map[string]interface{}) 2258 if ckpc.OdataType != "" { 2259 objectMap["@odata.type"] = ckpc.OdataType 2260 } 2261 return json.Marshal(objectMap) 2262} 2263 2264// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2265func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2266 return nil, false 2267} 2268 2269// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2270func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2271 return nil, false 2272} 2273 2274// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2275func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2276 return nil, false 2277} 2278 2279// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2280func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2281 return nil, false 2282} 2283 2284// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2285func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2286 return nil, false 2287} 2288 2289// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2290func (ckpc ContentKeyPolicyConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2291 return &ckpc, true 2292} 2293 2294// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyConfiguration. 2295func (ckpc ContentKeyPolicyConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2296 return &ckpc, true 2297} 2298 2299// ContentKeyPolicyFairPlayConfiguration specifies a configuration for FairPlay licenses. 2300type ContentKeyPolicyFairPlayConfiguration struct { 2301 // Ask - The key that must be used as FairPlay Application Secret key. 2302 Ask *[]byte `json:"ask,omitempty"` 2303 // FairPlayPfxPassword - The password encrypting FairPlay certificate in PKCS 12 (pfx) format. 2304 FairPlayPfxPassword *string `json:"fairPlayPfxPassword,omitempty"` 2305 // FairPlayPfx - The Base64 representation of FairPlay certificate in PKCS 12 (pfx) format (including private key). 2306 FairPlayPfx *string `json:"fairPlayPfx,omitempty"` 2307 // RentalAndLeaseKeyType - The rental and lease key type. Possible values include: 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypeUnknown', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypeUndefined', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypeDualExpiry', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypePersistentUnlimited', 'ContentKeyPolicyFairPlayRentalAndLeaseKeyTypePersistentLimited' 2308 RentalAndLeaseKeyType ContentKeyPolicyFairPlayRentalAndLeaseKeyType `json:"rentalAndLeaseKeyType,omitempty"` 2309 // RentalDuration - The rental duration. Must be greater than or equal to 0. 2310 RentalDuration *int64 `json:"rentalDuration,omitempty"` 2311 // OfflineRentalConfiguration - Offline rental policy 2312 OfflineRentalConfiguration *ContentKeyPolicyFairPlayOfflineRentalConfiguration `json:"offlineRentalConfiguration,omitempty"` 2313 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 2314 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 2315} 2316 2317// MarshalJSON is the custom marshaler for ContentKeyPolicyFairPlayConfiguration. 2318func (ckpfpc ContentKeyPolicyFairPlayConfiguration) MarshalJSON() ([]byte, error) { 2319 ckpfpc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration 2320 objectMap := make(map[string]interface{}) 2321 if ckpfpc.Ask != nil { 2322 objectMap["ask"] = ckpfpc.Ask 2323 } 2324 if ckpfpc.FairPlayPfxPassword != nil { 2325 objectMap["fairPlayPfxPassword"] = ckpfpc.FairPlayPfxPassword 2326 } 2327 if ckpfpc.FairPlayPfx != nil { 2328 objectMap["fairPlayPfx"] = ckpfpc.FairPlayPfx 2329 } 2330 if ckpfpc.RentalAndLeaseKeyType != "" { 2331 objectMap["rentalAndLeaseKeyType"] = ckpfpc.RentalAndLeaseKeyType 2332 } 2333 if ckpfpc.RentalDuration != nil { 2334 objectMap["rentalDuration"] = ckpfpc.RentalDuration 2335 } 2336 if ckpfpc.OfflineRentalConfiguration != nil { 2337 objectMap["offlineRentalConfiguration"] = ckpfpc.OfflineRentalConfiguration 2338 } 2339 if ckpfpc.OdataType != "" { 2340 objectMap["@odata.type"] = ckpfpc.OdataType 2341 } 2342 return json.Marshal(objectMap) 2343} 2344 2345// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2346func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2347 return nil, false 2348} 2349 2350// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2351func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2352 return nil, false 2353} 2354 2355// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2356func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2357 return nil, false 2358} 2359 2360// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2361func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2362 return nil, false 2363} 2364 2365// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2366func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2367 return &ckpfpc, true 2368} 2369 2370// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2371func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2372 return nil, false 2373} 2374 2375// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyFairPlayConfiguration. 2376func (ckpfpc ContentKeyPolicyFairPlayConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2377 return &ckpfpc, true 2378} 2379 2380// ContentKeyPolicyFairPlayOfflineRentalConfiguration ... 2381type ContentKeyPolicyFairPlayOfflineRentalConfiguration struct { 2382 // PlaybackDurationSeconds - Playback duration 2383 PlaybackDurationSeconds *int64 `json:"playbackDurationSeconds,omitempty"` 2384 // StorageDurationSeconds - Storage duration 2385 StorageDurationSeconds *int64 `json:"storageDurationSeconds,omitempty"` 2386} 2387 2388// ContentKeyPolicyOpenRestriction represents an open restriction. License or key will be delivered on 2389// every request. 2390type ContentKeyPolicyOpenRestriction struct { 2391 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 2392 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 2393} 2394 2395// MarshalJSON is the custom marshaler for ContentKeyPolicyOpenRestriction. 2396func (ckpor ContentKeyPolicyOpenRestriction) MarshalJSON() ([]byte, error) { 2397 ckpor.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction 2398 objectMap := make(map[string]interface{}) 2399 if ckpor.OdataType != "" { 2400 objectMap["@odata.type"] = ckpor.OdataType 2401 } 2402 return json.Marshal(objectMap) 2403} 2404 2405// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2406func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 2407 return &ckpor, true 2408} 2409 2410// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2411func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 2412 return nil, false 2413} 2414 2415// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2416func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 2417 return nil, false 2418} 2419 2420// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2421func (ckpor ContentKeyPolicyOpenRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 2422 return nil, false 2423} 2424 2425// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyOpenRestriction. 2426func (ckpor ContentKeyPolicyOpenRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 2427 return &ckpor, true 2428} 2429 2430// ContentKeyPolicyOption represents a policy option. 2431type ContentKeyPolicyOption struct { 2432 // PolicyOptionID - READ-ONLY; The legacy Policy Option ID. 2433 PolicyOptionID *uuid.UUID `json:"policyOptionId,omitempty"` 2434 // Name - The Policy Option description. 2435 Name *string `json:"name,omitempty"` 2436 // Configuration - The key delivery configuration. 2437 Configuration BasicContentKeyPolicyConfiguration `json:"configuration,omitempty"` 2438 // Restriction - The requirements that must be met to deliver keys with this configuration 2439 Restriction BasicContentKeyPolicyRestriction `json:"restriction,omitempty"` 2440} 2441 2442// MarshalJSON is the custom marshaler for ContentKeyPolicyOption. 2443func (ckpo ContentKeyPolicyOption) MarshalJSON() ([]byte, error) { 2444 objectMap := make(map[string]interface{}) 2445 if ckpo.Name != nil { 2446 objectMap["name"] = ckpo.Name 2447 } 2448 objectMap["configuration"] = ckpo.Configuration 2449 objectMap["restriction"] = ckpo.Restriction 2450 return json.Marshal(objectMap) 2451} 2452 2453// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicyOption struct. 2454func (ckpo *ContentKeyPolicyOption) UnmarshalJSON(body []byte) error { 2455 var m map[string]*json.RawMessage 2456 err := json.Unmarshal(body, &m) 2457 if err != nil { 2458 return err 2459 } 2460 for k, v := range m { 2461 switch k { 2462 case "policyOptionId": 2463 if v != nil { 2464 var policyOptionID uuid.UUID 2465 err = json.Unmarshal(*v, &policyOptionID) 2466 if err != nil { 2467 return err 2468 } 2469 ckpo.PolicyOptionID = &policyOptionID 2470 } 2471 case "name": 2472 if v != nil { 2473 var name string 2474 err = json.Unmarshal(*v, &name) 2475 if err != nil { 2476 return err 2477 } 2478 ckpo.Name = &name 2479 } 2480 case "configuration": 2481 if v != nil { 2482 configuration, err := unmarshalBasicContentKeyPolicyConfiguration(*v) 2483 if err != nil { 2484 return err 2485 } 2486 ckpo.Configuration = configuration 2487 } 2488 case "restriction": 2489 if v != nil { 2490 restriction, err := unmarshalBasicContentKeyPolicyRestriction(*v) 2491 if err != nil { 2492 return err 2493 } 2494 ckpo.Restriction = restriction 2495 } 2496 } 2497 } 2498 2499 return nil 2500} 2501 2502// ContentKeyPolicyPlayReadyConfiguration specifies a configuration for PlayReady licenses. 2503type ContentKeyPolicyPlayReadyConfiguration struct { 2504 // Licenses - The PlayReady licenses. 2505 Licenses *[]ContentKeyPolicyPlayReadyLicense `json:"licenses,omitempty"` 2506 // ResponseCustomData - The custom response data. 2507 ResponseCustomData *string `json:"responseCustomData,omitempty"` 2508 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 2509 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 2510} 2511 2512// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyConfiguration. 2513func (ckpprc ContentKeyPolicyPlayReadyConfiguration) MarshalJSON() ([]byte, error) { 2514 ckpprc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration 2515 objectMap := make(map[string]interface{}) 2516 if ckpprc.Licenses != nil { 2517 objectMap["licenses"] = ckpprc.Licenses 2518 } 2519 if ckpprc.ResponseCustomData != nil { 2520 objectMap["responseCustomData"] = ckpprc.ResponseCustomData 2521 } 2522 if ckpprc.OdataType != "" { 2523 objectMap["@odata.type"] = ckpprc.OdataType 2524 } 2525 return json.Marshal(objectMap) 2526} 2527 2528// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2529func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 2530 return nil, false 2531} 2532 2533// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2534func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 2535 return nil, false 2536} 2537 2538// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2539func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 2540 return nil, false 2541} 2542 2543// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2544func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 2545 return &ckpprc, true 2546} 2547 2548// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2549func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 2550 return nil, false 2551} 2552 2553// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2554func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 2555 return nil, false 2556} 2557 2558// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyPlayReadyConfiguration. 2559func (ckpprc ContentKeyPolicyPlayReadyConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 2560 return &ckpprc, true 2561} 2562 2563// ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader specifies that the content key ID is in the 2564// PlayReady header. 2565type ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader struct { 2566 // OdataType - Possible values include: 'OdataTypeContentKeyPolicyPlayReadyContentKeyLocation', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier' 2567 OdataType OdataType `json:"@odata.type,omitempty"` 2568} 2569 2570// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2571func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) MarshalJSON() ([]byte, error) { 2572 ckpprcekfh.OdataType = OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader 2573 objectMap := make(map[string]interface{}) 2574 if ckpprcekfh.OdataType != "" { 2575 objectMap["@odata.type"] = ckpprcekfh.OdataType 2576 } 2577 return json.Marshal(objectMap) 2578} 2579 2580// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2581func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) { 2582 return &ckpprcekfh, true 2583} 2584 2585// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2586func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) { 2587 return nil, false 2588} 2589 2590// AsContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2591func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2592 return nil, false 2593} 2594 2595// AsBasicContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader. 2596func (ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader) AsBasicContentKeyPolicyPlayReadyContentKeyLocation() (BasicContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2597 return &ckpprcekfh, true 2598} 2599 2600// ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier specifies that the content key ID is 2601// specified in the PlayReady configuration. 2602type ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier struct { 2603 // KeyID - The content key ID. 2604 KeyID *uuid.UUID `json:"keyId,omitempty"` 2605 // OdataType - Possible values include: 'OdataTypeContentKeyPolicyPlayReadyContentKeyLocation', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier' 2606 OdataType OdataType `json:"@odata.type,omitempty"` 2607} 2608 2609// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2610func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) MarshalJSON() ([]byte, error) { 2611 ckpprcekfki.OdataType = OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier 2612 objectMap := make(map[string]interface{}) 2613 if ckpprcekfki.KeyID != nil { 2614 objectMap["keyId"] = ckpprcekfki.KeyID 2615 } 2616 if ckpprcekfki.OdataType != "" { 2617 objectMap["@odata.type"] = ckpprcekfki.OdataType 2618 } 2619 return json.Marshal(objectMap) 2620} 2621 2622// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2623func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) { 2624 return nil, false 2625} 2626 2627// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2628func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) { 2629 return &ckpprcekfki, true 2630} 2631 2632// AsContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2633func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2634 return nil, false 2635} 2636 2637// AsBasicContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier. 2638func (ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier) AsBasicContentKeyPolicyPlayReadyContentKeyLocation() (BasicContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2639 return &ckpprcekfki, true 2640} 2641 2642// BasicContentKeyPolicyPlayReadyContentKeyLocation base class for content key ID location. A derived class must be 2643// used to represent the location. 2644type BasicContentKeyPolicyPlayReadyContentKeyLocation interface { 2645 AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) 2646 AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) 2647 AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) 2648} 2649 2650// ContentKeyPolicyPlayReadyContentKeyLocation base class for content key ID location. A derived class must be 2651// used to represent the location. 2652type ContentKeyPolicyPlayReadyContentKeyLocation struct { 2653 // OdataType - Possible values include: 'OdataTypeContentKeyPolicyPlayReadyContentKeyLocation', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader', 'OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier' 2654 OdataType OdataType `json:"@odata.type,omitempty"` 2655} 2656 2657func unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocation(body []byte) (BasicContentKeyPolicyPlayReadyContentKeyLocation, error) { 2658 var m map[string]interface{} 2659 err := json.Unmarshal(body, &m) 2660 if err != nil { 2661 return nil, err 2662 } 2663 2664 switch m["@odata.type"] { 2665 case string(OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader): 2666 var ckpprcekfh ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader 2667 err := json.Unmarshal(body, &ckpprcekfh) 2668 return ckpprcekfh, err 2669 case string(OdataTypeMicrosoftMediaContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier): 2670 var ckpprcekfki ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier 2671 err := json.Unmarshal(body, &ckpprcekfki) 2672 return ckpprcekfki, err 2673 default: 2674 var ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation 2675 err := json.Unmarshal(body, &ckpprckl) 2676 return ckpprckl, err 2677 } 2678} 2679func unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocationArray(body []byte) ([]BasicContentKeyPolicyPlayReadyContentKeyLocation, error) { 2680 var rawMessages []*json.RawMessage 2681 err := json.Unmarshal(body, &rawMessages) 2682 if err != nil { 2683 return nil, err 2684 } 2685 2686 ckpprcklArray := make([]BasicContentKeyPolicyPlayReadyContentKeyLocation, len(rawMessages)) 2687 2688 for index, rawMessage := range rawMessages { 2689 ckpprckl, err := unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocation(*rawMessage) 2690 if err != nil { 2691 return nil, err 2692 } 2693 ckpprcklArray[index] = ckpprckl 2694 } 2695 return ckpprcklArray, nil 2696} 2697 2698// MarshalJSON is the custom marshaler for ContentKeyPolicyPlayReadyContentKeyLocation. 2699func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) MarshalJSON() ([]byte, error) { 2700 ckpprckl.OdataType = OdataTypeContentKeyPolicyPlayReadyContentKeyLocation 2701 objectMap := make(map[string]interface{}) 2702 if ckpprckl.OdataType != "" { 2703 objectMap["@odata.type"] = ckpprckl.OdataType 2704 } 2705 return json.Marshal(objectMap) 2706} 2707 2708// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2709func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromHeader, bool) { 2710 return nil, false 2711} 2712 2713// AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2714func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier() (*ContentKeyPolicyPlayReadyContentEncryptionKeyFromKeyIdentifier, bool) { 2715 return nil, false 2716} 2717 2718// AsContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2719func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsContentKeyPolicyPlayReadyContentKeyLocation() (*ContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2720 return &ckpprckl, true 2721} 2722 2723// AsBasicContentKeyPolicyPlayReadyContentKeyLocation is the BasicContentKeyPolicyPlayReadyContentKeyLocation implementation for ContentKeyPolicyPlayReadyContentKeyLocation. 2724func (ckpprckl ContentKeyPolicyPlayReadyContentKeyLocation) AsBasicContentKeyPolicyPlayReadyContentKeyLocation() (BasicContentKeyPolicyPlayReadyContentKeyLocation, bool) { 2725 return &ckpprckl, true 2726} 2727 2728// ContentKeyPolicyPlayReadyExplicitAnalogTelevisionRestriction configures the Explicit Analog Television 2729// Output Restriction control bits. For further details see the PlayReady Compliance Rules. 2730type ContentKeyPolicyPlayReadyExplicitAnalogTelevisionRestriction struct { 2731 // BestEffort - Indicates whether this restriction is enforced on a Best Effort basis. 2732 BestEffort *bool `json:"bestEffort,omitempty"` 2733 // ConfigurationData - Configures the restriction control bits. Must be between 0 and 3 inclusive. 2734 ConfigurationData *int32 `json:"configurationData,omitempty"` 2735} 2736 2737// ContentKeyPolicyPlayReadyLicense the PlayReady license 2738type ContentKeyPolicyPlayReadyLicense struct { 2739 // AllowTestDevices - A flag indicating whether test devices can use the license. 2740 AllowTestDevices *bool `json:"allowTestDevices,omitempty"` 2741 // BeginDate - The begin date of license 2742 BeginDate *date.Time `json:"beginDate,omitempty"` 2743 // ExpirationDate - The expiration date of license. 2744 ExpirationDate *date.Time `json:"expirationDate,omitempty"` 2745 // RelativeBeginDate - The relative begin date of license. 2746 RelativeBeginDate *string `json:"relativeBeginDate,omitempty"` 2747 // RelativeExpirationDate - The relative expiration date of license. 2748 RelativeExpirationDate *string `json:"relativeExpirationDate,omitempty"` 2749 // GracePeriod - The grace period of license. 2750 GracePeriod *string `json:"gracePeriod,omitempty"` 2751 // PlayRight - The license PlayRight 2752 PlayRight *ContentKeyPolicyPlayReadyPlayRight `json:"playRight,omitempty"` 2753 // LicenseType - The license type. Possible values include: 'ContentKeyPolicyPlayReadyLicenseTypeUnknown', 'ContentKeyPolicyPlayReadyLicenseTypeNonPersistent', 'ContentKeyPolicyPlayReadyLicenseTypePersistent' 2754 LicenseType ContentKeyPolicyPlayReadyLicenseType `json:"licenseType,omitempty"` 2755 // ContentKeyLocation - The content key location. 2756 ContentKeyLocation BasicContentKeyPolicyPlayReadyContentKeyLocation `json:"contentKeyLocation,omitempty"` 2757 // ContentType - The PlayReady content type. Possible values include: 'ContentKeyPolicyPlayReadyContentTypeUnknown', 'ContentKeyPolicyPlayReadyContentTypeUnspecified', 'ContentKeyPolicyPlayReadyContentTypeUltraVioletDownload', 'ContentKeyPolicyPlayReadyContentTypeUltraVioletStreaming' 2758 ContentType ContentKeyPolicyPlayReadyContentType `json:"contentType,omitempty"` 2759} 2760 2761// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicyPlayReadyLicense struct. 2762func (ckpprl *ContentKeyPolicyPlayReadyLicense) UnmarshalJSON(body []byte) error { 2763 var m map[string]*json.RawMessage 2764 err := json.Unmarshal(body, &m) 2765 if err != nil { 2766 return err 2767 } 2768 for k, v := range m { 2769 switch k { 2770 case "allowTestDevices": 2771 if v != nil { 2772 var allowTestDevices bool 2773 err = json.Unmarshal(*v, &allowTestDevices) 2774 if err != nil { 2775 return err 2776 } 2777 ckpprl.AllowTestDevices = &allowTestDevices 2778 } 2779 case "beginDate": 2780 if v != nil { 2781 var beginDate date.Time 2782 err = json.Unmarshal(*v, &beginDate) 2783 if err != nil { 2784 return err 2785 } 2786 ckpprl.BeginDate = &beginDate 2787 } 2788 case "expirationDate": 2789 if v != nil { 2790 var expirationDate date.Time 2791 err = json.Unmarshal(*v, &expirationDate) 2792 if err != nil { 2793 return err 2794 } 2795 ckpprl.ExpirationDate = &expirationDate 2796 } 2797 case "relativeBeginDate": 2798 if v != nil { 2799 var relativeBeginDate string 2800 err = json.Unmarshal(*v, &relativeBeginDate) 2801 if err != nil { 2802 return err 2803 } 2804 ckpprl.RelativeBeginDate = &relativeBeginDate 2805 } 2806 case "relativeExpirationDate": 2807 if v != nil { 2808 var relativeExpirationDate string 2809 err = json.Unmarshal(*v, &relativeExpirationDate) 2810 if err != nil { 2811 return err 2812 } 2813 ckpprl.RelativeExpirationDate = &relativeExpirationDate 2814 } 2815 case "gracePeriod": 2816 if v != nil { 2817 var gracePeriod string 2818 err = json.Unmarshal(*v, &gracePeriod) 2819 if err != nil { 2820 return err 2821 } 2822 ckpprl.GracePeriod = &gracePeriod 2823 } 2824 case "playRight": 2825 if v != nil { 2826 var playRight ContentKeyPolicyPlayReadyPlayRight 2827 err = json.Unmarshal(*v, &playRight) 2828 if err != nil { 2829 return err 2830 } 2831 ckpprl.PlayRight = &playRight 2832 } 2833 case "licenseType": 2834 if v != nil { 2835 var licenseType ContentKeyPolicyPlayReadyLicenseType 2836 err = json.Unmarshal(*v, &licenseType) 2837 if err != nil { 2838 return err 2839 } 2840 ckpprl.LicenseType = licenseType 2841 } 2842 case "contentKeyLocation": 2843 if v != nil { 2844 contentKeyLocation, err := unmarshalBasicContentKeyPolicyPlayReadyContentKeyLocation(*v) 2845 if err != nil { 2846 return err 2847 } 2848 ckpprl.ContentKeyLocation = contentKeyLocation 2849 } 2850 case "contentType": 2851 if v != nil { 2852 var contentType ContentKeyPolicyPlayReadyContentType 2853 err = json.Unmarshal(*v, &contentType) 2854 if err != nil { 2855 return err 2856 } 2857 ckpprl.ContentType = contentType 2858 } 2859 } 2860 } 2861 2862 return nil 2863} 2864 2865// ContentKeyPolicyPlayReadyPlayRight configures the Play Right in the PlayReady license. 2866type ContentKeyPolicyPlayReadyPlayRight struct { 2867 // FirstPlayExpiration - The amount of time that the license is valid after the license is first used to play content. 2868 FirstPlayExpiration *string `json:"firstPlayExpiration,omitempty"` 2869 // ScmsRestriction - Configures the Serial Copy Management System (SCMS) in the license. Must be between 0 and 3 inclusive. 2870 ScmsRestriction *int32 `json:"scmsRestriction,omitempty"` 2871 // AgcAndColorStripeRestriction - Configures Automatic Gain Control (AGC) and Color Stripe in the license. Must be between 0 and 3 inclusive. 2872 AgcAndColorStripeRestriction *int32 `json:"agcAndColorStripeRestriction,omitempty"` 2873 // ExplicitAnalogTelevisionOutputRestriction - Configures the Explicit Analog Television Output Restriction in the license. Configuration data must be between 0 and 3 inclusive. 2874 ExplicitAnalogTelevisionOutputRestriction *ContentKeyPolicyPlayReadyExplicitAnalogTelevisionRestriction `json:"explicitAnalogTelevisionOutputRestriction,omitempty"` 2875 // DigitalVideoOnlyContentRestriction - Enables the Image Constraint For Analog Component Video Restriction in the license. 2876 DigitalVideoOnlyContentRestriction *bool `json:"digitalVideoOnlyContentRestriction,omitempty"` 2877 // ImageConstraintForAnalogComponentVideoRestriction - Enables the Image Constraint For Analog Component Video Restriction in the license. 2878 ImageConstraintForAnalogComponentVideoRestriction *bool `json:"imageConstraintForAnalogComponentVideoRestriction,omitempty"` 2879 // ImageConstraintForAnalogComputerMonitorRestriction - Enables the Image Constraint For Analog Component Video Restriction in the license. 2880 ImageConstraintForAnalogComputerMonitorRestriction *bool `json:"imageConstraintForAnalogComputerMonitorRestriction,omitempty"` 2881 // AllowPassingVideoContentToUnknownOutput - Configures Unknown output handling settings of the license. Possible values include: 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionUnknown', 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionNotAllowed', 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionAllowed', 'ContentKeyPolicyPlayReadyUnknownOutputPassingOptionAllowedWithVideoConstriction' 2882 AllowPassingVideoContentToUnknownOutput ContentKeyPolicyPlayReadyUnknownOutputPassingOption `json:"allowPassingVideoContentToUnknownOutput,omitempty"` 2883 // UncompressedDigitalVideoOpl - Specifies the output protection level for uncompressed digital video. 2884 UncompressedDigitalVideoOpl *int32 `json:"uncompressedDigitalVideoOpl,omitempty"` 2885 // CompressedDigitalVideoOpl - Specifies the output protection level for compressed digital video. 2886 CompressedDigitalVideoOpl *int32 `json:"compressedDigitalVideoOpl,omitempty"` 2887 // AnalogVideoOpl - Specifies the output protection level for compressed digital audio. 2888 AnalogVideoOpl *int32 `json:"analogVideoOpl,omitempty"` 2889 // CompressedDigitalAudioOpl - Specifies the output protection level for compressed digital audio. 2890 CompressedDigitalAudioOpl *int32 `json:"compressedDigitalAudioOpl,omitempty"` 2891 // UncompressedDigitalAudioOpl - Specifies the output protection level for uncompressed digital audio. 2892 UncompressedDigitalAudioOpl *int32 `json:"uncompressedDigitalAudioOpl,omitempty"` 2893} 2894 2895// ContentKeyPolicyProperties the properties of the Content Key Policy. 2896type ContentKeyPolicyProperties struct { 2897 autorest.Response `json:"-"` 2898 // PolicyID - READ-ONLY; The legacy Policy ID. 2899 PolicyID *uuid.UUID `json:"policyId,omitempty"` 2900 // Created - READ-ONLY; The creation date of the Policy 2901 Created *date.Time `json:"created,omitempty"` 2902 // LastModified - READ-ONLY; The last modified date of the Policy 2903 LastModified *date.Time `json:"lastModified,omitempty"` 2904 // Description - A description for the Policy. 2905 Description *string `json:"description,omitempty"` 2906 // Options - The Key Policy options. 2907 Options *[]ContentKeyPolicyOption `json:"options,omitempty"` 2908} 2909 2910// MarshalJSON is the custom marshaler for ContentKeyPolicyProperties. 2911func (ckpp ContentKeyPolicyProperties) MarshalJSON() ([]byte, error) { 2912 objectMap := make(map[string]interface{}) 2913 if ckpp.Description != nil { 2914 objectMap["description"] = ckpp.Description 2915 } 2916 if ckpp.Options != nil { 2917 objectMap["options"] = ckpp.Options 2918 } 2919 return json.Marshal(objectMap) 2920} 2921 2922// BasicContentKeyPolicyRestriction base class for Content Key Policy restrictions. A derived class must be used to 2923// create a restriction. 2924type BasicContentKeyPolicyRestriction interface { 2925 AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) 2926 AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) 2927 AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) 2928 AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) 2929} 2930 2931// ContentKeyPolicyRestriction base class for Content Key Policy restrictions. A derived class must be used to 2932// create a restriction. 2933type ContentKeyPolicyRestriction struct { 2934 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 2935 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 2936} 2937 2938func unmarshalBasicContentKeyPolicyRestriction(body []byte) (BasicContentKeyPolicyRestriction, error) { 2939 var m map[string]interface{} 2940 err := json.Unmarshal(body, &m) 2941 if err != nil { 2942 return nil, err 2943 } 2944 2945 switch m["@odata.type"] { 2946 case string(OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction): 2947 var ckpor ContentKeyPolicyOpenRestriction 2948 err := json.Unmarshal(body, &ckpor) 2949 return ckpor, err 2950 case string(OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction): 2951 var ckpur ContentKeyPolicyUnknownRestriction 2952 err := json.Unmarshal(body, &ckpur) 2953 return ckpur, err 2954 case string(OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction): 2955 var ckptr ContentKeyPolicyTokenRestriction 2956 err := json.Unmarshal(body, &ckptr) 2957 return ckptr, err 2958 default: 2959 var ckpr ContentKeyPolicyRestriction 2960 err := json.Unmarshal(body, &ckpr) 2961 return ckpr, err 2962 } 2963} 2964func unmarshalBasicContentKeyPolicyRestrictionArray(body []byte) ([]BasicContentKeyPolicyRestriction, error) { 2965 var rawMessages []*json.RawMessage 2966 err := json.Unmarshal(body, &rawMessages) 2967 if err != nil { 2968 return nil, err 2969 } 2970 2971 ckprArray := make([]BasicContentKeyPolicyRestriction, len(rawMessages)) 2972 2973 for index, rawMessage := range rawMessages { 2974 ckpr, err := unmarshalBasicContentKeyPolicyRestriction(*rawMessage) 2975 if err != nil { 2976 return nil, err 2977 } 2978 ckprArray[index] = ckpr 2979 } 2980 return ckprArray, nil 2981} 2982 2983// MarshalJSON is the custom marshaler for ContentKeyPolicyRestriction. 2984func (ckpr ContentKeyPolicyRestriction) MarshalJSON() ([]byte, error) { 2985 ckpr.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction 2986 objectMap := make(map[string]interface{}) 2987 if ckpr.OdataType != "" { 2988 objectMap["@odata.type"] = ckpr.OdataType 2989 } 2990 return json.Marshal(objectMap) 2991} 2992 2993// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 2994func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 2995 return nil, false 2996} 2997 2998// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 2999func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 3000 return nil, false 3001} 3002 3003// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3004func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 3005 return nil, false 3006} 3007 3008// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3009func (ckpr ContentKeyPolicyRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 3010 return &ckpr, true 3011} 3012 3013// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyRestriction. 3014func (ckpr ContentKeyPolicyRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 3015 return &ckpr, true 3016} 3017 3018// BasicContentKeyPolicyRestrictionTokenKey base class for Content Key Policy key for token validation. A derived class 3019// must be used to create a token key. 3020type BasicContentKeyPolicyRestrictionTokenKey interface { 3021 AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) 3022 AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) 3023 AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) 3024 AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) 3025} 3026 3027// ContentKeyPolicyRestrictionTokenKey base class for Content Key Policy key for token validation. A derived 3028// class must be used to create a token key. 3029type ContentKeyPolicyRestrictionTokenKey struct { 3030 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3031 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3032} 3033 3034func unmarshalBasicContentKeyPolicyRestrictionTokenKey(body []byte) (BasicContentKeyPolicyRestrictionTokenKey, error) { 3035 var m map[string]interface{} 3036 err := json.Unmarshal(body, &m) 3037 if err != nil { 3038 return nil, err 3039 } 3040 3041 switch m["@odata.type"] { 3042 case string(OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey): 3043 var ckpstk ContentKeyPolicySymmetricTokenKey 3044 err := json.Unmarshal(body, &ckpstk) 3045 return ckpstk, err 3046 case string(OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey): 3047 var ckprtk ContentKeyPolicyRsaTokenKey 3048 err := json.Unmarshal(body, &ckprtk) 3049 return ckprtk, err 3050 case string(OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey): 3051 var ckpxctk ContentKeyPolicyX509CertificateTokenKey 3052 err := json.Unmarshal(body, &ckpxctk) 3053 return ckpxctk, err 3054 default: 3055 var ckprtk ContentKeyPolicyRestrictionTokenKey 3056 err := json.Unmarshal(body, &ckprtk) 3057 return ckprtk, err 3058 } 3059} 3060func unmarshalBasicContentKeyPolicyRestrictionTokenKeyArray(body []byte) ([]BasicContentKeyPolicyRestrictionTokenKey, error) { 3061 var rawMessages []*json.RawMessage 3062 err := json.Unmarshal(body, &rawMessages) 3063 if err != nil { 3064 return nil, err 3065 } 3066 3067 ckprtkArray := make([]BasicContentKeyPolicyRestrictionTokenKey, len(rawMessages)) 3068 3069 for index, rawMessage := range rawMessages { 3070 ckprtk, err := unmarshalBasicContentKeyPolicyRestrictionTokenKey(*rawMessage) 3071 if err != nil { 3072 return nil, err 3073 } 3074 ckprtkArray[index] = ckprtk 3075 } 3076 return ckprtkArray, nil 3077} 3078 3079// MarshalJSON is the custom marshaler for ContentKeyPolicyRestrictionTokenKey. 3080func (ckprtk ContentKeyPolicyRestrictionTokenKey) MarshalJSON() ([]byte, error) { 3081 ckprtk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey 3082 objectMap := make(map[string]interface{}) 3083 if ckprtk.OdataType != "" { 3084 objectMap["@odata.type"] = ckprtk.OdataType 3085 } 3086 return json.Marshal(objectMap) 3087} 3088 3089// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3090func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3091 return nil, false 3092} 3093 3094// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3095func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3096 return nil, false 3097} 3098 3099// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3100func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3101 return nil, false 3102} 3103 3104// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3105func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3106 return &ckprtk, true 3107} 3108 3109// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRestrictionTokenKey. 3110func (ckprtk ContentKeyPolicyRestrictionTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3111 return &ckprtk, true 3112} 3113 3114// ContentKeyPolicyRsaTokenKey specifies a RSA key for token validation 3115type ContentKeyPolicyRsaTokenKey struct { 3116 // Exponent - The RSA Parameter exponent 3117 Exponent *[]byte `json:"exponent,omitempty"` 3118 // Modulus - The RSA Parameter modulus 3119 Modulus *[]byte `json:"modulus,omitempty"` 3120 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3121 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3122} 3123 3124// MarshalJSON is the custom marshaler for ContentKeyPolicyRsaTokenKey. 3125func (ckprtk ContentKeyPolicyRsaTokenKey) MarshalJSON() ([]byte, error) { 3126 ckprtk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey 3127 objectMap := make(map[string]interface{}) 3128 if ckprtk.Exponent != nil { 3129 objectMap["exponent"] = ckprtk.Exponent 3130 } 3131 if ckprtk.Modulus != nil { 3132 objectMap["modulus"] = ckprtk.Modulus 3133 } 3134 if ckprtk.OdataType != "" { 3135 objectMap["@odata.type"] = ckprtk.OdataType 3136 } 3137 return json.Marshal(objectMap) 3138} 3139 3140// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3141func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3142 return nil, false 3143} 3144 3145// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3146func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3147 return &ckprtk, true 3148} 3149 3150// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3151func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3152 return nil, false 3153} 3154 3155// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3156func (ckprtk ContentKeyPolicyRsaTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3157 return nil, false 3158} 3159 3160// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyRsaTokenKey. 3161func (ckprtk ContentKeyPolicyRsaTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3162 return &ckprtk, true 3163} 3164 3165// ContentKeyPolicySymmetricTokenKey specifies a symmetric key for token validation. 3166type ContentKeyPolicySymmetricTokenKey struct { 3167 // KeyValue - The key value of the key 3168 KeyValue *[]byte `json:"keyValue,omitempty"` 3169 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3170 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3171} 3172 3173// MarshalJSON is the custom marshaler for ContentKeyPolicySymmetricTokenKey. 3174func (ckpstk ContentKeyPolicySymmetricTokenKey) MarshalJSON() ([]byte, error) { 3175 ckpstk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey 3176 objectMap := make(map[string]interface{}) 3177 if ckpstk.KeyValue != nil { 3178 objectMap["keyValue"] = ckpstk.KeyValue 3179 } 3180 if ckpstk.OdataType != "" { 3181 objectMap["@odata.type"] = ckpstk.OdataType 3182 } 3183 return json.Marshal(objectMap) 3184} 3185 3186// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3187func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3188 return &ckpstk, true 3189} 3190 3191// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3192func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3193 return nil, false 3194} 3195 3196// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3197func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3198 return nil, false 3199} 3200 3201// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3202func (ckpstk ContentKeyPolicySymmetricTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3203 return nil, false 3204} 3205 3206// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicySymmetricTokenKey. 3207func (ckpstk ContentKeyPolicySymmetricTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3208 return &ckpstk, true 3209} 3210 3211// ContentKeyPolicyTokenClaim represents a token claim. 3212type ContentKeyPolicyTokenClaim struct { 3213 // ClaimType - Token claim type. 3214 ClaimType *string `json:"claimType,omitempty"` 3215 // ClaimValue - Token claim value. 3216 ClaimValue *string `json:"claimValue,omitempty"` 3217} 3218 3219// ContentKeyPolicyTokenRestriction represents a token restriction. Provided token must match these 3220// requirements for successful license or key delivery. 3221type ContentKeyPolicyTokenRestriction struct { 3222 // Issuer - The token issuer. 3223 Issuer *string `json:"issuer,omitempty"` 3224 // Audience - The audience for the token. 3225 Audience *string `json:"audience,omitempty"` 3226 // PrimaryVerificationKey - The primary verification key. 3227 PrimaryVerificationKey BasicContentKeyPolicyRestrictionTokenKey `json:"primaryVerificationKey,omitempty"` 3228 // AlternateVerificationKeys - A list of alternative verification keys. 3229 AlternateVerificationKeys *[]BasicContentKeyPolicyRestrictionTokenKey `json:"alternateVerificationKeys,omitempty"` 3230 // RequiredClaims - A list of required token claims. 3231 RequiredClaims *[]ContentKeyPolicyTokenClaim `json:"requiredClaims,omitempty"` 3232 // RestrictionTokenType - The type of token. Possible values include: 'ContentKeyPolicyRestrictionTokenTypeUnknown', 'ContentKeyPolicyRestrictionTokenTypeSwt', 'ContentKeyPolicyRestrictionTokenTypeJwt' 3233 RestrictionTokenType ContentKeyPolicyRestrictionTokenType `json:"restrictionTokenType,omitempty"` 3234 // OpenIDConnectDiscoveryDocument - The OpenID connect discovery document. 3235 OpenIDConnectDiscoveryDocument *string `json:"openIdConnectDiscoveryDocument,omitempty"` 3236 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 3237 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 3238} 3239 3240// MarshalJSON is the custom marshaler for ContentKeyPolicyTokenRestriction. 3241func (ckptr ContentKeyPolicyTokenRestriction) MarshalJSON() ([]byte, error) { 3242 ckptr.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction 3243 objectMap := make(map[string]interface{}) 3244 if ckptr.Issuer != nil { 3245 objectMap["issuer"] = ckptr.Issuer 3246 } 3247 if ckptr.Audience != nil { 3248 objectMap["audience"] = ckptr.Audience 3249 } 3250 objectMap["primaryVerificationKey"] = ckptr.PrimaryVerificationKey 3251 if ckptr.AlternateVerificationKeys != nil { 3252 objectMap["alternateVerificationKeys"] = ckptr.AlternateVerificationKeys 3253 } 3254 if ckptr.RequiredClaims != nil { 3255 objectMap["requiredClaims"] = ckptr.RequiredClaims 3256 } 3257 if ckptr.RestrictionTokenType != "" { 3258 objectMap["restrictionTokenType"] = ckptr.RestrictionTokenType 3259 } 3260 if ckptr.OpenIDConnectDiscoveryDocument != nil { 3261 objectMap["openIdConnectDiscoveryDocument"] = ckptr.OpenIDConnectDiscoveryDocument 3262 } 3263 if ckptr.OdataType != "" { 3264 objectMap["@odata.type"] = ckptr.OdataType 3265 } 3266 return json.Marshal(objectMap) 3267} 3268 3269// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3270func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 3271 return nil, false 3272} 3273 3274// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3275func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 3276 return nil, false 3277} 3278 3279// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3280func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 3281 return &ckptr, true 3282} 3283 3284// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3285func (ckptr ContentKeyPolicyTokenRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 3286 return nil, false 3287} 3288 3289// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyTokenRestriction. 3290func (ckptr ContentKeyPolicyTokenRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 3291 return &ckptr, true 3292} 3293 3294// UnmarshalJSON is the custom unmarshaler for ContentKeyPolicyTokenRestriction struct. 3295func (ckptr *ContentKeyPolicyTokenRestriction) UnmarshalJSON(body []byte) error { 3296 var m map[string]*json.RawMessage 3297 err := json.Unmarshal(body, &m) 3298 if err != nil { 3299 return err 3300 } 3301 for k, v := range m { 3302 switch k { 3303 case "issuer": 3304 if v != nil { 3305 var issuer string 3306 err = json.Unmarshal(*v, &issuer) 3307 if err != nil { 3308 return err 3309 } 3310 ckptr.Issuer = &issuer 3311 } 3312 case "audience": 3313 if v != nil { 3314 var audience string 3315 err = json.Unmarshal(*v, &audience) 3316 if err != nil { 3317 return err 3318 } 3319 ckptr.Audience = &audience 3320 } 3321 case "primaryVerificationKey": 3322 if v != nil { 3323 primaryVerificationKey, err := unmarshalBasicContentKeyPolicyRestrictionTokenKey(*v) 3324 if err != nil { 3325 return err 3326 } 3327 ckptr.PrimaryVerificationKey = primaryVerificationKey 3328 } 3329 case "alternateVerificationKeys": 3330 if v != nil { 3331 alternateVerificationKeys, err := unmarshalBasicContentKeyPolicyRestrictionTokenKeyArray(*v) 3332 if err != nil { 3333 return err 3334 } 3335 ckptr.AlternateVerificationKeys = &alternateVerificationKeys 3336 } 3337 case "requiredClaims": 3338 if v != nil { 3339 var requiredClaims []ContentKeyPolicyTokenClaim 3340 err = json.Unmarshal(*v, &requiredClaims) 3341 if err != nil { 3342 return err 3343 } 3344 ckptr.RequiredClaims = &requiredClaims 3345 } 3346 case "restrictionTokenType": 3347 if v != nil { 3348 var restrictionTokenType ContentKeyPolicyRestrictionTokenType 3349 err = json.Unmarshal(*v, &restrictionTokenType) 3350 if err != nil { 3351 return err 3352 } 3353 ckptr.RestrictionTokenType = restrictionTokenType 3354 } 3355 case "openIdConnectDiscoveryDocument": 3356 if v != nil { 3357 var openIDConnectDiscoveryDocument string 3358 err = json.Unmarshal(*v, &openIDConnectDiscoveryDocument) 3359 if err != nil { 3360 return err 3361 } 3362 ckptr.OpenIDConnectDiscoveryDocument = &openIDConnectDiscoveryDocument 3363 } 3364 case "@odata.type": 3365 if v != nil { 3366 var odataType OdataTypeBasicContentKeyPolicyRestriction 3367 err = json.Unmarshal(*v, &odataType) 3368 if err != nil { 3369 return err 3370 } 3371 ckptr.OdataType = odataType 3372 } 3373 } 3374 } 3375 3376 return nil 3377} 3378 3379// ContentKeyPolicyUnknownConfiguration represents a ContentKeyPolicyConfiguration that is unavailable in 3380// the current API version. 3381type ContentKeyPolicyUnknownConfiguration struct { 3382 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 3383 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 3384} 3385 3386// MarshalJSON is the custom marshaler for ContentKeyPolicyUnknownConfiguration. 3387func (ckpuc ContentKeyPolicyUnknownConfiguration) MarshalJSON() ([]byte, error) { 3388 ckpuc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration 3389 objectMap := make(map[string]interface{}) 3390 if ckpuc.OdataType != "" { 3391 objectMap["@odata.type"] = ckpuc.OdataType 3392 } 3393 return json.Marshal(objectMap) 3394} 3395 3396// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3397func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 3398 return nil, false 3399} 3400 3401// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3402func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 3403 return &ckpuc, true 3404} 3405 3406// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3407func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 3408 return nil, false 3409} 3410 3411// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3412func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 3413 return nil, false 3414} 3415 3416// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3417func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 3418 return nil, false 3419} 3420 3421// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3422func (ckpuc ContentKeyPolicyUnknownConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 3423 return nil, false 3424} 3425 3426// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyUnknownConfiguration. 3427func (ckpuc ContentKeyPolicyUnknownConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 3428 return &ckpuc, true 3429} 3430 3431// ContentKeyPolicyUnknownRestriction represents a ContentKeyPolicyRestriction that is unavailable in the 3432// current API version. 3433type ContentKeyPolicyUnknownRestriction struct { 3434 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeContentKeyPolicyRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyOpenRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction', 'OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyTokenRestriction' 3435 OdataType OdataTypeBasicContentKeyPolicyRestriction `json:"@odata.type,omitempty"` 3436} 3437 3438// MarshalJSON is the custom marshaler for ContentKeyPolicyUnknownRestriction. 3439func (ckpur ContentKeyPolicyUnknownRestriction) MarshalJSON() ([]byte, error) { 3440 ckpur.OdataType = OdataTypeBasicContentKeyPolicyRestrictionOdataTypeMicrosoftMediaContentKeyPolicyUnknownRestriction 3441 objectMap := make(map[string]interface{}) 3442 if ckpur.OdataType != "" { 3443 objectMap["@odata.type"] = ckpur.OdataType 3444 } 3445 return json.Marshal(objectMap) 3446} 3447 3448// AsContentKeyPolicyOpenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3449func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyOpenRestriction() (*ContentKeyPolicyOpenRestriction, bool) { 3450 return nil, false 3451} 3452 3453// AsContentKeyPolicyUnknownRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3454func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyUnknownRestriction() (*ContentKeyPolicyUnknownRestriction, bool) { 3455 return &ckpur, true 3456} 3457 3458// AsContentKeyPolicyTokenRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3459func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyTokenRestriction() (*ContentKeyPolicyTokenRestriction, bool) { 3460 return nil, false 3461} 3462 3463// AsContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3464func (ckpur ContentKeyPolicyUnknownRestriction) AsContentKeyPolicyRestriction() (*ContentKeyPolicyRestriction, bool) { 3465 return nil, false 3466} 3467 3468// AsBasicContentKeyPolicyRestriction is the BasicContentKeyPolicyRestriction implementation for ContentKeyPolicyUnknownRestriction. 3469func (ckpur ContentKeyPolicyUnknownRestriction) AsBasicContentKeyPolicyRestriction() (BasicContentKeyPolicyRestriction, bool) { 3470 return &ckpur, true 3471} 3472 3473// ContentKeyPolicyWidevineConfiguration specifies a configuration for Widevine licenses. 3474type ContentKeyPolicyWidevineConfiguration struct { 3475 // WidevineTemplate - The Widevine template. 3476 WidevineTemplate *string `json:"widevineTemplate,omitempty"` 3477 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeContentKeyPolicyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyClearKeyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyUnknownConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyPlayReadyConfiguration', 'OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyFairPlayConfiguration' 3478 OdataType OdataTypeBasicContentKeyPolicyConfiguration `json:"@odata.type,omitempty"` 3479} 3480 3481// MarshalJSON is the custom marshaler for ContentKeyPolicyWidevineConfiguration. 3482func (ckpwc ContentKeyPolicyWidevineConfiguration) MarshalJSON() ([]byte, error) { 3483 ckpwc.OdataType = OdataTypeBasicContentKeyPolicyConfigurationOdataTypeMicrosoftMediaContentKeyPolicyWidevineConfiguration 3484 objectMap := make(map[string]interface{}) 3485 if ckpwc.WidevineTemplate != nil { 3486 objectMap["widevineTemplate"] = ckpwc.WidevineTemplate 3487 } 3488 if ckpwc.OdataType != "" { 3489 objectMap["@odata.type"] = ckpwc.OdataType 3490 } 3491 return json.Marshal(objectMap) 3492} 3493 3494// AsContentKeyPolicyClearKeyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3495func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyClearKeyConfiguration() (*ContentKeyPolicyClearKeyConfiguration, bool) { 3496 return nil, false 3497} 3498 3499// AsContentKeyPolicyUnknownConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3500func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyUnknownConfiguration() (*ContentKeyPolicyUnknownConfiguration, bool) { 3501 return nil, false 3502} 3503 3504// AsContentKeyPolicyWidevineConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3505func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyWidevineConfiguration() (*ContentKeyPolicyWidevineConfiguration, bool) { 3506 return &ckpwc, true 3507} 3508 3509// AsContentKeyPolicyPlayReadyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3510func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyPlayReadyConfiguration() (*ContentKeyPolicyPlayReadyConfiguration, bool) { 3511 return nil, false 3512} 3513 3514// AsContentKeyPolicyFairPlayConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3515func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyFairPlayConfiguration() (*ContentKeyPolicyFairPlayConfiguration, bool) { 3516 return nil, false 3517} 3518 3519// AsContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3520func (ckpwc ContentKeyPolicyWidevineConfiguration) AsContentKeyPolicyConfiguration() (*ContentKeyPolicyConfiguration, bool) { 3521 return nil, false 3522} 3523 3524// AsBasicContentKeyPolicyConfiguration is the BasicContentKeyPolicyConfiguration implementation for ContentKeyPolicyWidevineConfiguration. 3525func (ckpwc ContentKeyPolicyWidevineConfiguration) AsBasicContentKeyPolicyConfiguration() (BasicContentKeyPolicyConfiguration, bool) { 3526 return &ckpwc, true 3527} 3528 3529// ContentKeyPolicyX509CertificateTokenKey specifies a certificate for token validation. 3530type ContentKeyPolicyX509CertificateTokenKey struct { 3531 // RawBody - The raw data field of a certificate in PKCS 12 format (X509Certificate2 in .NET) 3532 RawBody *[]byte `json:"rawBody,omitempty"` 3533 // OdataType - Possible values include: 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeContentKeyPolicyRestrictionTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicySymmetricTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyRsaTokenKey', 'OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey' 3534 OdataType OdataTypeBasicContentKeyPolicyRestrictionTokenKey `json:"@odata.type,omitempty"` 3535} 3536 3537// MarshalJSON is the custom marshaler for ContentKeyPolicyX509CertificateTokenKey. 3538func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) MarshalJSON() ([]byte, error) { 3539 ckpxctk.OdataType = OdataTypeBasicContentKeyPolicyRestrictionTokenKeyOdataTypeMicrosoftMediaContentKeyPolicyX509CertificateTokenKey 3540 objectMap := make(map[string]interface{}) 3541 if ckpxctk.RawBody != nil { 3542 objectMap["rawBody"] = ckpxctk.RawBody 3543 } 3544 if ckpxctk.OdataType != "" { 3545 objectMap["@odata.type"] = ckpxctk.OdataType 3546 } 3547 return json.Marshal(objectMap) 3548} 3549 3550// AsContentKeyPolicySymmetricTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3551func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicySymmetricTokenKey() (*ContentKeyPolicySymmetricTokenKey, bool) { 3552 return nil, false 3553} 3554 3555// AsContentKeyPolicyRsaTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3556func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicyRsaTokenKey() (*ContentKeyPolicyRsaTokenKey, bool) { 3557 return nil, false 3558} 3559 3560// AsContentKeyPolicyX509CertificateTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3561func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicyX509CertificateTokenKey() (*ContentKeyPolicyX509CertificateTokenKey, bool) { 3562 return &ckpxctk, true 3563} 3564 3565// AsContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3566func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsContentKeyPolicyRestrictionTokenKey() (*ContentKeyPolicyRestrictionTokenKey, bool) { 3567 return nil, false 3568} 3569 3570// AsBasicContentKeyPolicyRestrictionTokenKey is the BasicContentKeyPolicyRestrictionTokenKey implementation for ContentKeyPolicyX509CertificateTokenKey. 3571func (ckpxctk ContentKeyPolicyX509CertificateTokenKey) AsBasicContentKeyPolicyRestrictionTokenKey() (BasicContentKeyPolicyRestrictionTokenKey, bool) { 3572 return &ckpxctk, true 3573} 3574 3575// CopyAudio a codec flag, which tells the encoder to copy the input audio bitstream. 3576type CopyAudio struct { 3577 // Label - An optional label for the codec. The label can be used to control muxing behavior. 3578 Label *string `json:"label,omitempty"` 3579 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 3580 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 3581} 3582 3583// MarshalJSON is the custom marshaler for CopyAudio. 3584func (ca CopyAudio) MarshalJSON() ([]byte, error) { 3585 ca.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio 3586 objectMap := make(map[string]interface{}) 3587 if ca.Label != nil { 3588 objectMap["label"] = ca.Label 3589 } 3590 if ca.OdataType != "" { 3591 objectMap["@odata.type"] = ca.OdataType 3592 } 3593 return json.Marshal(objectMap) 3594} 3595 3596// AsAudio is the BasicCodec implementation for CopyAudio. 3597func (ca CopyAudio) AsAudio() (*Audio, bool) { 3598 return nil, false 3599} 3600 3601// AsBasicAudio is the BasicCodec implementation for CopyAudio. 3602func (ca CopyAudio) AsBasicAudio() (BasicAudio, bool) { 3603 return nil, false 3604} 3605 3606// AsAacAudio is the BasicCodec implementation for CopyAudio. 3607func (ca CopyAudio) AsAacAudio() (*AacAudio, bool) { 3608 return nil, false 3609} 3610 3611// AsVideo is the BasicCodec implementation for CopyAudio. 3612func (ca CopyAudio) AsVideo() (*Video, bool) { 3613 return nil, false 3614} 3615 3616// AsBasicVideo is the BasicCodec implementation for CopyAudio. 3617func (ca CopyAudio) AsBasicVideo() (BasicVideo, bool) { 3618 return nil, false 3619} 3620 3621// AsH265Video is the BasicCodec implementation for CopyAudio. 3622func (ca CopyAudio) AsH265Video() (*H265Video, bool) { 3623 return nil, false 3624} 3625 3626// AsCopyVideo is the BasicCodec implementation for CopyAudio. 3627func (ca CopyAudio) AsCopyVideo() (*CopyVideo, bool) { 3628 return nil, false 3629} 3630 3631// AsImage is the BasicCodec implementation for CopyAudio. 3632func (ca CopyAudio) AsImage() (*Image, bool) { 3633 return nil, false 3634} 3635 3636// AsBasicImage is the BasicCodec implementation for CopyAudio. 3637func (ca CopyAudio) AsBasicImage() (BasicImage, bool) { 3638 return nil, false 3639} 3640 3641// AsCopyAudio is the BasicCodec implementation for CopyAudio. 3642func (ca CopyAudio) AsCopyAudio() (*CopyAudio, bool) { 3643 return &ca, true 3644} 3645 3646// AsH264Video is the BasicCodec implementation for CopyAudio. 3647func (ca CopyAudio) AsH264Video() (*H264Video, bool) { 3648 return nil, false 3649} 3650 3651// AsJpgImage is the BasicCodec implementation for CopyAudio. 3652func (ca CopyAudio) AsJpgImage() (*JpgImage, bool) { 3653 return nil, false 3654} 3655 3656// AsPngImage is the BasicCodec implementation for CopyAudio. 3657func (ca CopyAudio) AsPngImage() (*PngImage, bool) { 3658 return nil, false 3659} 3660 3661// AsCodec is the BasicCodec implementation for CopyAudio. 3662func (ca CopyAudio) AsCodec() (*Codec, bool) { 3663 return nil, false 3664} 3665 3666// AsBasicCodec is the BasicCodec implementation for CopyAudio. 3667func (ca CopyAudio) AsBasicCodec() (BasicCodec, bool) { 3668 return &ca, true 3669} 3670 3671// CopyVideo a codec flag, which tells the encoder to copy the input video bitstream without re-encoding. 3672type CopyVideo struct { 3673 // Label - An optional label for the codec. The label can be used to control muxing behavior. 3674 Label *string `json:"label,omitempty"` 3675 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 3676 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 3677} 3678 3679// MarshalJSON is the custom marshaler for CopyVideo. 3680func (cv CopyVideo) MarshalJSON() ([]byte, error) { 3681 cv.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo 3682 objectMap := make(map[string]interface{}) 3683 if cv.Label != nil { 3684 objectMap["label"] = cv.Label 3685 } 3686 if cv.OdataType != "" { 3687 objectMap["@odata.type"] = cv.OdataType 3688 } 3689 return json.Marshal(objectMap) 3690} 3691 3692// AsAudio is the BasicCodec implementation for CopyVideo. 3693func (cv CopyVideo) AsAudio() (*Audio, bool) { 3694 return nil, false 3695} 3696 3697// AsBasicAudio is the BasicCodec implementation for CopyVideo. 3698func (cv CopyVideo) AsBasicAudio() (BasicAudio, bool) { 3699 return nil, false 3700} 3701 3702// AsAacAudio is the BasicCodec implementation for CopyVideo. 3703func (cv CopyVideo) AsAacAudio() (*AacAudio, bool) { 3704 return nil, false 3705} 3706 3707// AsVideo is the BasicCodec implementation for CopyVideo. 3708func (cv CopyVideo) AsVideo() (*Video, bool) { 3709 return nil, false 3710} 3711 3712// AsBasicVideo is the BasicCodec implementation for CopyVideo. 3713func (cv CopyVideo) AsBasicVideo() (BasicVideo, bool) { 3714 return nil, false 3715} 3716 3717// AsH265Video is the BasicCodec implementation for CopyVideo. 3718func (cv CopyVideo) AsH265Video() (*H265Video, bool) { 3719 return nil, false 3720} 3721 3722// AsCopyVideo is the BasicCodec implementation for CopyVideo. 3723func (cv CopyVideo) AsCopyVideo() (*CopyVideo, bool) { 3724 return &cv, true 3725} 3726 3727// AsImage is the BasicCodec implementation for CopyVideo. 3728func (cv CopyVideo) AsImage() (*Image, bool) { 3729 return nil, false 3730} 3731 3732// AsBasicImage is the BasicCodec implementation for CopyVideo. 3733func (cv CopyVideo) AsBasicImage() (BasicImage, bool) { 3734 return nil, false 3735} 3736 3737// AsCopyAudio is the BasicCodec implementation for CopyVideo. 3738func (cv CopyVideo) AsCopyAudio() (*CopyAudio, bool) { 3739 return nil, false 3740} 3741 3742// AsH264Video is the BasicCodec implementation for CopyVideo. 3743func (cv CopyVideo) AsH264Video() (*H264Video, bool) { 3744 return nil, false 3745} 3746 3747// AsJpgImage is the BasicCodec implementation for CopyVideo. 3748func (cv CopyVideo) AsJpgImage() (*JpgImage, bool) { 3749 return nil, false 3750} 3751 3752// AsPngImage is the BasicCodec implementation for CopyVideo. 3753func (cv CopyVideo) AsPngImage() (*PngImage, bool) { 3754 return nil, false 3755} 3756 3757// AsCodec is the BasicCodec implementation for CopyVideo. 3758func (cv CopyVideo) AsCodec() (*Codec, bool) { 3759 return nil, false 3760} 3761 3762// AsBasicCodec is the BasicCodec implementation for CopyVideo. 3763func (cv CopyVideo) AsBasicCodec() (BasicCodec, bool) { 3764 return &cv, true 3765} 3766 3767// CrossSiteAccessPolicies the client access policy. 3768type CrossSiteAccessPolicies struct { 3769 // ClientAccessPolicy - The content of clientaccesspolicy.xml used by Silverlight. 3770 ClientAccessPolicy *string `json:"clientAccessPolicy,omitempty"` 3771 // CrossDomainPolicy - The content of crossdomain.xml used by Silverlight. 3772 CrossDomainPolicy *string `json:"crossDomainPolicy,omitempty"` 3773} 3774 3775// DefaultKey class to specify properties of default content key for each encryption scheme 3776type DefaultKey struct { 3777 // Label - Label can be used to specify Content Key when creating a Streaming Locator 3778 Label *string `json:"label,omitempty"` 3779 // PolicyName - Policy used by Default Key 3780 PolicyName *string `json:"policyName,omitempty"` 3781} 3782 3783// Deinterlace describes the de-interlacing settings. 3784type Deinterlace struct { 3785 // Parity - The field parity for de-interlacing, defaults to Auto. Possible values include: 'DeinterlaceParityAuto', 'DeinterlaceParityTopFieldFirst', 'DeinterlaceParityBottomFieldFirst' 3786 Parity DeinterlaceParity `json:"parity,omitempty"` 3787 // Mode - The deinterlacing mode. Defaults to AutoPixelAdaptive. Possible values include: 'DeinterlaceModeOff', 'DeinterlaceModeAutoPixelAdaptive' 3788 Mode DeinterlaceMode `json:"mode,omitempty"` 3789} 3790 3791// EdgePolicies ... 3792type EdgePolicies struct { 3793 autorest.Response `json:"-"` 3794 UsageDataCollectionPolicy *EdgeUsageDataCollectionPolicy `json:"usageDataCollectionPolicy,omitempty"` 3795} 3796 3797// EdgeUsageDataCollectionPolicy ... 3798type EdgeUsageDataCollectionPolicy struct { 3799 // DataCollectionFrequency - Usage data collection frequency in ISO 8601 duration format e.g. PT10M , PT5H. 3800 DataCollectionFrequency *string `json:"dataCollectionFrequency,omitempty"` 3801 // DataReportingFrequency - Usage data reporting frequency in ISO 8601 duration format e.g. PT10M , PT5H. 3802 DataReportingFrequency *string `json:"dataReportingFrequency,omitempty"` 3803 // MaxAllowedUnreportedUsageDuration - Maximum time for which the functionality of the device will not be hampered for not reporting the usage data. 3804 MaxAllowedUnreportedUsageDuration *string `json:"maxAllowedUnreportedUsageDuration,omitempty"` 3805 // EventHubDetails - Details of Event Hub where the usage will be reported. 3806 EventHubDetails *EdgeUsageDataEventHub `json:"eventHubDetails,omitempty"` 3807} 3808 3809// EdgeUsageDataEventHub ... 3810type EdgeUsageDataEventHub struct { 3811 // Name - Name of the Event Hub where usage will be reported. 3812 Name *string `json:"name,omitempty"` 3813 // Namespace - Namespace of the Event Hub where usage will be reported. 3814 Namespace *string `json:"namespace,omitempty"` 3815 // Token - SAS token needed to interact with Event Hub. 3816 Token *string `json:"token,omitempty"` 3817} 3818 3819// EnabledProtocols class to specify which protocols are enabled 3820type EnabledProtocols struct { 3821 // Download - Enable Download protocol or not 3822 Download *bool `json:"download,omitempty"` 3823 // Dash - Enable DASH protocol or not 3824 Dash *bool `json:"dash,omitempty"` 3825 // Hls - Enable HLS protocol or not 3826 Hls *bool `json:"hls,omitempty"` 3827 // SmoothStreaming - Enable SmoothStreaming protocol or not 3828 SmoothStreaming *bool `json:"smoothStreaming,omitempty"` 3829} 3830 3831// EntityNameAvailabilityCheckOutput the response from the check name availability request. 3832type EntityNameAvailabilityCheckOutput struct { 3833 autorest.Response `json:"-"` 3834 // NameAvailable - Specifies if the name is available. 3835 NameAvailable *bool `json:"nameAvailable,omitempty"` 3836 // Reason - Specifies the reason if the name is not available. 3837 Reason *string `json:"reason,omitempty"` 3838 // Message - Specifies the detailed reason if the name is not available. 3839 Message *string `json:"message,omitempty"` 3840} 3841 3842// EnvelopeEncryption class for EnvelopeEncryption encryption scheme 3843type EnvelopeEncryption struct { 3844 // EnabledProtocols - Representing supported protocols 3845 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 3846 // ClearTracks - Representing which tracks should not be encrypted 3847 ClearTracks *[]TrackSelection `json:"clearTracks,omitempty"` 3848 // ContentKeys - Representing default content key for each encryption scheme and separate content keys for specific tracks 3849 ContentKeys *StreamingPolicyContentKeys `json:"contentKeys,omitempty"` 3850 // 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. 3851 CustomKeyAcquisitionURLTemplate *string `json:"customKeyAcquisitionUrlTemplate,omitempty"` 3852} 3853 3854// FaceDetectorPreset describes all the settings to be used when analyzing a video in order to detect (and 3855// optionally redact) all the faces present. 3856type FaceDetectorPreset struct { 3857 // 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' 3858 Resolution AnalysisResolution `json:"resolution,omitempty"` 3859 // 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' 3860 Mode FaceRedactorMode `json:"mode,omitempty"` 3861 // BlurType - Blur type. Possible values include: 'BlurTypeBox', 'BlurTypeLow', 'BlurTypeMed', 'BlurTypeHigh', 'BlurTypeBlack' 3862 BlurType BlurType `json:"blurType,omitempty"` 3863 // ExperimentalOptions - Dictionary containing key value pairs for parameters not exposed in the preset itself 3864 ExperimentalOptions map[string]*string `json:"experimentalOptions"` 3865 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 3866 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 3867} 3868 3869// MarshalJSON is the custom marshaler for FaceDetectorPreset. 3870func (fdp FaceDetectorPreset) MarshalJSON() ([]byte, error) { 3871 fdp.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset 3872 objectMap := make(map[string]interface{}) 3873 if fdp.Resolution != "" { 3874 objectMap["resolution"] = fdp.Resolution 3875 } 3876 if fdp.Mode != "" { 3877 objectMap["mode"] = fdp.Mode 3878 } 3879 if fdp.BlurType != "" { 3880 objectMap["blurType"] = fdp.BlurType 3881 } 3882 if fdp.ExperimentalOptions != nil { 3883 objectMap["experimentalOptions"] = fdp.ExperimentalOptions 3884 } 3885 if fdp.OdataType != "" { 3886 objectMap["@odata.type"] = fdp.OdataType 3887 } 3888 return json.Marshal(objectMap) 3889} 3890 3891// AsFaceDetectorPreset is the BasicPreset implementation for FaceDetectorPreset. 3892func (fdp FaceDetectorPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 3893 return &fdp, true 3894} 3895 3896// AsAudioAnalyzerPreset is the BasicPreset implementation for FaceDetectorPreset. 3897func (fdp FaceDetectorPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 3898 return nil, false 3899} 3900 3901// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for FaceDetectorPreset. 3902func (fdp FaceDetectorPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 3903 return nil, false 3904} 3905 3906// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for FaceDetectorPreset. 3907func (fdp FaceDetectorPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 3908 return nil, false 3909} 3910 3911// AsStandardEncoderPreset is the BasicPreset implementation for FaceDetectorPreset. 3912func (fdp FaceDetectorPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 3913 return nil, false 3914} 3915 3916// AsVideoAnalyzerPreset is the BasicPreset implementation for FaceDetectorPreset. 3917func (fdp FaceDetectorPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 3918 return nil, false 3919} 3920 3921// AsPreset is the BasicPreset implementation for FaceDetectorPreset. 3922func (fdp FaceDetectorPreset) AsPreset() (*Preset, bool) { 3923 return nil, false 3924} 3925 3926// AsBasicPreset is the BasicPreset implementation for FaceDetectorPreset. 3927func (fdp FaceDetectorPreset) AsBasicPreset() (BasicPreset, bool) { 3928 return &fdp, true 3929} 3930 3931// FilterProperties the Media Filter properties. 3932type FilterProperties struct { 3933 // PresentationTimeRange - The presentation time range. 3934 PresentationTimeRange *PresentationTimeRange `json:"presentationTimeRange,omitempty"` 3935 // FirstQuality - The first quality. 3936 FirstQuality *FirstQuality `json:"firstQuality,omitempty"` 3937 // Tracks - The tracks selection conditions. 3938 Tracks *[]FilterTrackSelection `json:"tracks,omitempty"` 3939} 3940 3941// Filters describes all the filtering operations, such as de-interlacing, rotation etc. that are to be 3942// applied to the input media before encoding. 3943type Filters struct { 3944 // Deinterlace - The de-interlacing settings. 3945 Deinterlace *Deinterlace `json:"deinterlace,omitempty"` 3946 // 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' 3947 Rotation Rotation `json:"rotation,omitempty"` 3948 // Crop - The parameters for the rectangular window with which to crop the input video. 3949 Crop *Rectangle `json:"crop,omitempty"` 3950 // Overlays - The properties of overlays to be applied to the input video. These could be audio, image or video overlays. 3951 Overlays *[]BasicOverlay `json:"overlays,omitempty"` 3952} 3953 3954// UnmarshalJSON is the custom unmarshaler for Filters struct. 3955func (f *Filters) UnmarshalJSON(body []byte) error { 3956 var m map[string]*json.RawMessage 3957 err := json.Unmarshal(body, &m) 3958 if err != nil { 3959 return err 3960 } 3961 for k, v := range m { 3962 switch k { 3963 case "deinterlace": 3964 if v != nil { 3965 var deinterlace Deinterlace 3966 err = json.Unmarshal(*v, &deinterlace) 3967 if err != nil { 3968 return err 3969 } 3970 f.Deinterlace = &deinterlace 3971 } 3972 case "rotation": 3973 if v != nil { 3974 var rotation Rotation 3975 err = json.Unmarshal(*v, &rotation) 3976 if err != nil { 3977 return err 3978 } 3979 f.Rotation = rotation 3980 } 3981 case "crop": 3982 if v != nil { 3983 var crop Rectangle 3984 err = json.Unmarshal(*v, &crop) 3985 if err != nil { 3986 return err 3987 } 3988 f.Crop = &crop 3989 } 3990 case "overlays": 3991 if v != nil { 3992 overlays, err := unmarshalBasicOverlayArray(*v) 3993 if err != nil { 3994 return err 3995 } 3996 f.Overlays = &overlays 3997 } 3998 } 3999 } 4000 4001 return nil 4002} 4003 4004// FilterTrackPropertyCondition the class to specify one track property condition. 4005type FilterTrackPropertyCondition struct { 4006 // Property - The track property type. Possible values include: 'FilterTrackPropertyTypeUnknown', 'FilterTrackPropertyTypeType', 'FilterTrackPropertyTypeName', 'FilterTrackPropertyTypeLanguage', 'FilterTrackPropertyTypeFourCC', 'FilterTrackPropertyTypeBitrate' 4007 Property FilterTrackPropertyType `json:"property,omitempty"` 4008 // Value - The track property value. 4009 Value *string `json:"value,omitempty"` 4010 // Operation - The track property condition operation. Possible values include: 'FilterTrackPropertyCompareOperationEqual', 'FilterTrackPropertyCompareOperationNotEqual' 4011 Operation FilterTrackPropertyCompareOperation `json:"operation,omitempty"` 4012} 4013 4014// FilterTrackSelection representing a list of FilterTrackPropertyConditions to select a track. The 4015// filters are combined using a logical AND operation. 4016type FilterTrackSelection struct { 4017 // TrackSelections - The track selections. 4018 TrackSelections *[]FilterTrackPropertyCondition `json:"trackSelections,omitempty"` 4019} 4020 4021// FirstQuality filter First Quality 4022type FirstQuality struct { 4023 // Bitrate - The first quality bitrate. 4024 Bitrate *int32 `json:"bitrate,omitempty"` 4025} 4026 4027// BasicFormat base class for output. 4028type BasicFormat interface { 4029 AsImageFormat() (*ImageFormat, bool) 4030 AsBasicImageFormat() (BasicImageFormat, bool) 4031 AsJpgFormat() (*JpgFormat, bool) 4032 AsPngFormat() (*PngFormat, bool) 4033 AsMultiBitrateFormat() (*MultiBitrateFormat, bool) 4034 AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) 4035 AsMp4Format() (*Mp4Format, bool) 4036 AsTransportStreamFormat() (*TransportStreamFormat, bool) 4037 AsFormat() (*Format, bool) 4038} 4039 4040// Format base class for output. 4041type Format struct { 4042 // 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. 4043 FilenamePattern *string `json:"filenamePattern,omitempty"` 4044 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 4045 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 4046} 4047 4048func unmarshalBasicFormat(body []byte) (BasicFormat, error) { 4049 var m map[string]interface{} 4050 err := json.Unmarshal(body, &m) 4051 if err != nil { 4052 return nil, err 4053 } 4054 4055 switch m["@odata.type"] { 4056 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat): 4057 var ifVar ImageFormat 4058 err := json.Unmarshal(body, &ifVar) 4059 return ifVar, err 4060 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat): 4061 var jf JpgFormat 4062 err := json.Unmarshal(body, &jf) 4063 return jf, err 4064 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat): 4065 var pf PngFormat 4066 err := json.Unmarshal(body, &pf) 4067 return pf, err 4068 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat): 4069 var mbf MultiBitrateFormat 4070 err := json.Unmarshal(body, &mbf) 4071 return mbf, err 4072 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format): 4073 var m4f Mp4Format 4074 err := json.Unmarshal(body, &m4f) 4075 return m4f, err 4076 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat): 4077 var tsf TransportStreamFormat 4078 err := json.Unmarshal(body, &tsf) 4079 return tsf, err 4080 default: 4081 var f Format 4082 err := json.Unmarshal(body, &f) 4083 return f, err 4084 } 4085} 4086func unmarshalBasicFormatArray(body []byte) ([]BasicFormat, error) { 4087 var rawMessages []*json.RawMessage 4088 err := json.Unmarshal(body, &rawMessages) 4089 if err != nil { 4090 return nil, err 4091 } 4092 4093 fArray := make([]BasicFormat, len(rawMessages)) 4094 4095 for index, rawMessage := range rawMessages { 4096 f, err := unmarshalBasicFormat(*rawMessage) 4097 if err != nil { 4098 return nil, err 4099 } 4100 fArray[index] = f 4101 } 4102 return fArray, nil 4103} 4104 4105// MarshalJSON is the custom marshaler for Format. 4106func (f Format) MarshalJSON() ([]byte, error) { 4107 f.OdataType = OdataTypeBasicFormatOdataTypeFormat 4108 objectMap := make(map[string]interface{}) 4109 if f.FilenamePattern != nil { 4110 objectMap["filenamePattern"] = f.FilenamePattern 4111 } 4112 if f.OdataType != "" { 4113 objectMap["@odata.type"] = f.OdataType 4114 } 4115 return json.Marshal(objectMap) 4116} 4117 4118// AsImageFormat is the BasicFormat implementation for Format. 4119func (f Format) AsImageFormat() (*ImageFormat, bool) { 4120 return nil, false 4121} 4122 4123// AsBasicImageFormat is the BasicFormat implementation for Format. 4124func (f Format) AsBasicImageFormat() (BasicImageFormat, bool) { 4125 return nil, false 4126} 4127 4128// AsJpgFormat is the BasicFormat implementation for Format. 4129func (f Format) AsJpgFormat() (*JpgFormat, bool) { 4130 return nil, false 4131} 4132 4133// AsPngFormat is the BasicFormat implementation for Format. 4134func (f Format) AsPngFormat() (*PngFormat, bool) { 4135 return nil, false 4136} 4137 4138// AsMultiBitrateFormat is the BasicFormat implementation for Format. 4139func (f Format) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 4140 return nil, false 4141} 4142 4143// AsBasicMultiBitrateFormat is the BasicFormat implementation for Format. 4144func (f Format) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 4145 return nil, false 4146} 4147 4148// AsMp4Format is the BasicFormat implementation for Format. 4149func (f Format) AsMp4Format() (*Mp4Format, bool) { 4150 return nil, false 4151} 4152 4153// AsTransportStreamFormat is the BasicFormat implementation for Format. 4154func (f Format) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 4155 return nil, false 4156} 4157 4158// AsFormat is the BasicFormat implementation for Format. 4159func (f Format) AsFormat() (*Format, bool) { 4160 return &f, true 4161} 4162 4163// AsBasicFormat is the BasicFormat implementation for Format. 4164func (f Format) AsBasicFormat() (BasicFormat, bool) { 4165 return &f, true 4166} 4167 4168// FromAllInputFile an InputDefinition that looks across all of the files provided to select tracks 4169// specified by the IncludedTracks property. Generally used with the AudioTrackByAttribute and 4170// VideoTrackByAttribute to allow selection of a single track across a set of input files. 4171type FromAllInputFile struct { 4172 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 4173 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 4174 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 4175 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 4176} 4177 4178// MarshalJSON is the custom marshaler for FromAllInputFile. 4179func (faif FromAllInputFile) MarshalJSON() ([]byte, error) { 4180 faif.OdataType = OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile 4181 objectMap := make(map[string]interface{}) 4182 if faif.IncludedTracks != nil { 4183 objectMap["includedTracks"] = faif.IncludedTracks 4184 } 4185 if faif.OdataType != "" { 4186 objectMap["@odata.type"] = faif.OdataType 4187 } 4188 return json.Marshal(objectMap) 4189} 4190 4191// AsFromAllInputFile is the BasicInputDefinition implementation for FromAllInputFile. 4192func (faif FromAllInputFile) AsFromAllInputFile() (*FromAllInputFile, bool) { 4193 return &faif, true 4194} 4195 4196// AsFromEachInputFile is the BasicInputDefinition implementation for FromAllInputFile. 4197func (faif FromAllInputFile) AsFromEachInputFile() (*FromEachInputFile, bool) { 4198 return nil, false 4199} 4200 4201// AsInputFile is the BasicInputDefinition implementation for FromAllInputFile. 4202func (faif FromAllInputFile) AsInputFile() (*InputFile, bool) { 4203 return nil, false 4204} 4205 4206// AsInputDefinition is the BasicInputDefinition implementation for FromAllInputFile. 4207func (faif FromAllInputFile) AsInputDefinition() (*InputDefinition, bool) { 4208 return nil, false 4209} 4210 4211// AsBasicInputDefinition is the BasicInputDefinition implementation for FromAllInputFile. 4212func (faif FromAllInputFile) AsBasicInputDefinition() (BasicInputDefinition, bool) { 4213 return &faif, true 4214} 4215 4216// UnmarshalJSON is the custom unmarshaler for FromAllInputFile struct. 4217func (faif *FromAllInputFile) UnmarshalJSON(body []byte) error { 4218 var m map[string]*json.RawMessage 4219 err := json.Unmarshal(body, &m) 4220 if err != nil { 4221 return err 4222 } 4223 for k, v := range m { 4224 switch k { 4225 case "includedTracks": 4226 if v != nil { 4227 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 4228 if err != nil { 4229 return err 4230 } 4231 faif.IncludedTracks = &includedTracks 4232 } 4233 case "@odata.type": 4234 if v != nil { 4235 var odataType OdataTypeBasicInputDefinition 4236 err = json.Unmarshal(*v, &odataType) 4237 if err != nil { 4238 return err 4239 } 4240 faif.OdataType = odataType 4241 } 4242 } 4243 } 4244 4245 return nil 4246} 4247 4248// FromEachInputFile an InputDefinition that looks at each input file provided to select tracks specified 4249// by the IncludedTracks property. Generally used with the AudioTrackByAttribute and VideoTrackByAttribute 4250// to select tracks from each file given. 4251type FromEachInputFile struct { 4252 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 4253 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 4254 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 4255 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 4256} 4257 4258// MarshalJSON is the custom marshaler for FromEachInputFile. 4259func (feif FromEachInputFile) MarshalJSON() ([]byte, error) { 4260 feif.OdataType = OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile 4261 objectMap := make(map[string]interface{}) 4262 if feif.IncludedTracks != nil { 4263 objectMap["includedTracks"] = feif.IncludedTracks 4264 } 4265 if feif.OdataType != "" { 4266 objectMap["@odata.type"] = feif.OdataType 4267 } 4268 return json.Marshal(objectMap) 4269} 4270 4271// AsFromAllInputFile is the BasicInputDefinition implementation for FromEachInputFile. 4272func (feif FromEachInputFile) AsFromAllInputFile() (*FromAllInputFile, bool) { 4273 return nil, false 4274} 4275 4276// AsFromEachInputFile is the BasicInputDefinition implementation for FromEachInputFile. 4277func (feif FromEachInputFile) AsFromEachInputFile() (*FromEachInputFile, bool) { 4278 return &feif, true 4279} 4280 4281// AsInputFile is the BasicInputDefinition implementation for FromEachInputFile. 4282func (feif FromEachInputFile) AsInputFile() (*InputFile, bool) { 4283 return nil, false 4284} 4285 4286// AsInputDefinition is the BasicInputDefinition implementation for FromEachInputFile. 4287func (feif FromEachInputFile) AsInputDefinition() (*InputDefinition, bool) { 4288 return nil, false 4289} 4290 4291// AsBasicInputDefinition is the BasicInputDefinition implementation for FromEachInputFile. 4292func (feif FromEachInputFile) AsBasicInputDefinition() (BasicInputDefinition, bool) { 4293 return &feif, true 4294} 4295 4296// UnmarshalJSON is the custom unmarshaler for FromEachInputFile struct. 4297func (feif *FromEachInputFile) UnmarshalJSON(body []byte) error { 4298 var m map[string]*json.RawMessage 4299 err := json.Unmarshal(body, &m) 4300 if err != nil { 4301 return err 4302 } 4303 for k, v := range m { 4304 switch k { 4305 case "includedTracks": 4306 if v != nil { 4307 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 4308 if err != nil { 4309 return err 4310 } 4311 feif.IncludedTracks = &includedTracks 4312 } 4313 case "@odata.type": 4314 if v != nil { 4315 var odataType OdataTypeBasicInputDefinition 4316 err = json.Unmarshal(*v, &odataType) 4317 if err != nil { 4318 return err 4319 } 4320 feif.OdataType = odataType 4321 } 4322 } 4323 } 4324 4325 return nil 4326} 4327 4328// H264Layer describes the settings to be used when encoding the input video into a desired output bitrate 4329// layer with the H.264 video codec. 4330type H264Layer struct { 4331 // Profile - We currently support Baseline, Main, High, High422, High444. Default is Auto. Possible values include: 'H264VideoProfileAuto', 'H264VideoProfileBaseline', 'H264VideoProfileMain', 'H264VideoProfileHigh', 'H264VideoProfileHigh422', 'H264VideoProfileHigh444' 4332 Profile H264VideoProfile `json:"profile,omitempty"` 4333 // 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. 4334 Level *string `json:"level,omitempty"` 4335 // 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). 4336 BufferWindow *string `json:"bufferWindow,omitempty"` 4337 // 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. 4338 ReferenceFrames *int32 `json:"referenceFrames,omitempty"` 4339 // 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' 4340 EntropyMode EntropyMode `json:"entropyMode,omitempty"` 4341 // Bitrate - The average bitrate in bits per second at which to encode the input video when generating this layer. This is a required field. 4342 Bitrate *int32 `json:"bitrate,omitempty"` 4343 // 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. 4344 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 4345 // 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. 4346 BFrames *int32 `json:"bFrames,omitempty"` 4347 // 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. 4348 FrameRate *string `json:"frameRate,omitempty"` 4349 // 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. 4350 Slices *int32 `json:"slices,omitempty"` 4351 // 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. 4352 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 4353 // 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. 4354 Width *string `json:"width,omitempty"` 4355 // 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. 4356 Height *string `json:"height,omitempty"` 4357 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 4358 Label *string `json:"label,omitempty"` 4359 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 4360 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 4361} 4362 4363// MarshalJSON is the custom marshaler for H264Layer. 4364func (hl H264Layer) MarshalJSON() ([]byte, error) { 4365 hl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer 4366 objectMap := make(map[string]interface{}) 4367 if hl.Profile != "" { 4368 objectMap["profile"] = hl.Profile 4369 } 4370 if hl.Level != nil { 4371 objectMap["level"] = hl.Level 4372 } 4373 if hl.BufferWindow != nil { 4374 objectMap["bufferWindow"] = hl.BufferWindow 4375 } 4376 if hl.ReferenceFrames != nil { 4377 objectMap["referenceFrames"] = hl.ReferenceFrames 4378 } 4379 if hl.EntropyMode != "" { 4380 objectMap["entropyMode"] = hl.EntropyMode 4381 } 4382 if hl.Bitrate != nil { 4383 objectMap["bitrate"] = hl.Bitrate 4384 } 4385 if hl.MaxBitrate != nil { 4386 objectMap["maxBitrate"] = hl.MaxBitrate 4387 } 4388 if hl.BFrames != nil { 4389 objectMap["bFrames"] = hl.BFrames 4390 } 4391 if hl.FrameRate != nil { 4392 objectMap["frameRate"] = hl.FrameRate 4393 } 4394 if hl.Slices != nil { 4395 objectMap["slices"] = hl.Slices 4396 } 4397 if hl.AdaptiveBFrame != nil { 4398 objectMap["adaptiveBFrame"] = hl.AdaptiveBFrame 4399 } 4400 if hl.Width != nil { 4401 objectMap["width"] = hl.Width 4402 } 4403 if hl.Height != nil { 4404 objectMap["height"] = hl.Height 4405 } 4406 if hl.Label != nil { 4407 objectMap["label"] = hl.Label 4408 } 4409 if hl.OdataType != "" { 4410 objectMap["@odata.type"] = hl.OdataType 4411 } 4412 return json.Marshal(objectMap) 4413} 4414 4415// AsH265VideoLayer is the BasicLayer implementation for H264Layer. 4416func (hl H264Layer) AsH265VideoLayer() (*H265VideoLayer, bool) { 4417 return nil, false 4418} 4419 4420// AsBasicH265VideoLayer is the BasicLayer implementation for H264Layer. 4421func (hl H264Layer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 4422 return nil, false 4423} 4424 4425// AsH265Layer is the BasicLayer implementation for H264Layer. 4426func (hl H264Layer) AsH265Layer() (*H265Layer, bool) { 4427 return nil, false 4428} 4429 4430// AsVideoLayer is the BasicLayer implementation for H264Layer. 4431func (hl H264Layer) AsVideoLayer() (*VideoLayer, bool) { 4432 return nil, false 4433} 4434 4435// AsBasicVideoLayer is the BasicLayer implementation for H264Layer. 4436func (hl H264Layer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 4437 return &hl, true 4438} 4439 4440// AsH264Layer is the BasicLayer implementation for H264Layer. 4441func (hl H264Layer) AsH264Layer() (*H264Layer, bool) { 4442 return &hl, true 4443} 4444 4445// AsJpgLayer is the BasicLayer implementation for H264Layer. 4446func (hl H264Layer) AsJpgLayer() (*JpgLayer, bool) { 4447 return nil, false 4448} 4449 4450// AsPngLayer is the BasicLayer implementation for H264Layer. 4451func (hl H264Layer) AsPngLayer() (*PngLayer, bool) { 4452 return nil, false 4453} 4454 4455// AsLayer is the BasicLayer implementation for H264Layer. 4456func (hl H264Layer) AsLayer() (*Layer, bool) { 4457 return nil, false 4458} 4459 4460// AsBasicLayer is the BasicLayer implementation for H264Layer. 4461func (hl H264Layer) AsBasicLayer() (BasicLayer, bool) { 4462 return &hl, true 4463} 4464 4465// H264Video describes all the properties for encoding a video with the H.264 codec. 4466type H264Video struct { 4467 // 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. 4468 SceneChangeDetection *bool `json:"sceneChangeDetection,omitempty"` 4469 // Complexity - Tells the encoder how to choose its encoding settings. The default value is Balanced. Possible values include: 'H264ComplexitySpeed', 'H264ComplexityBalanced', 'H264ComplexityQuality' 4470 Complexity H264Complexity `json:"complexity,omitempty"` 4471 // Layers - The collection of output H.264 layers to be produced by the encoder. 4472 Layers *[]H264Layer `json:"layers,omitempty"` 4473 // 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. 4474 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 4475 // 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' 4476 StretchMode StretchMode `json:"stretchMode,omitempty"` 4477 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 4478 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 4479 // Label - An optional label for the codec. The label can be used to control muxing behavior. 4480 Label *string `json:"label,omitempty"` 4481 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 4482 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 4483} 4484 4485// MarshalJSON is the custom marshaler for H264Video. 4486func (hv H264Video) MarshalJSON() ([]byte, error) { 4487 hv.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video 4488 objectMap := make(map[string]interface{}) 4489 if hv.SceneChangeDetection != nil { 4490 objectMap["sceneChangeDetection"] = hv.SceneChangeDetection 4491 } 4492 if hv.Complexity != "" { 4493 objectMap["complexity"] = hv.Complexity 4494 } 4495 if hv.Layers != nil { 4496 objectMap["layers"] = hv.Layers 4497 } 4498 if hv.KeyFrameInterval != nil { 4499 objectMap["keyFrameInterval"] = hv.KeyFrameInterval 4500 } 4501 if hv.StretchMode != "" { 4502 objectMap["stretchMode"] = hv.StretchMode 4503 } 4504 if hv.SyncMode != "" { 4505 objectMap["syncMode"] = hv.SyncMode 4506 } 4507 if hv.Label != nil { 4508 objectMap["label"] = hv.Label 4509 } 4510 if hv.OdataType != "" { 4511 objectMap["@odata.type"] = hv.OdataType 4512 } 4513 return json.Marshal(objectMap) 4514} 4515 4516// AsAudio is the BasicCodec implementation for H264Video. 4517func (hv H264Video) AsAudio() (*Audio, bool) { 4518 return nil, false 4519} 4520 4521// AsBasicAudio is the BasicCodec implementation for H264Video. 4522func (hv H264Video) AsBasicAudio() (BasicAudio, bool) { 4523 return nil, false 4524} 4525 4526// AsAacAudio is the BasicCodec implementation for H264Video. 4527func (hv H264Video) AsAacAudio() (*AacAudio, bool) { 4528 return nil, false 4529} 4530 4531// AsVideo is the BasicCodec implementation for H264Video. 4532func (hv H264Video) AsVideo() (*Video, bool) { 4533 return nil, false 4534} 4535 4536// AsBasicVideo is the BasicCodec implementation for H264Video. 4537func (hv H264Video) AsBasicVideo() (BasicVideo, bool) { 4538 return &hv, true 4539} 4540 4541// AsH265Video is the BasicCodec implementation for H264Video. 4542func (hv H264Video) AsH265Video() (*H265Video, bool) { 4543 return nil, false 4544} 4545 4546// AsCopyVideo is the BasicCodec implementation for H264Video. 4547func (hv H264Video) AsCopyVideo() (*CopyVideo, bool) { 4548 return nil, false 4549} 4550 4551// AsImage is the BasicCodec implementation for H264Video. 4552func (hv H264Video) AsImage() (*Image, bool) { 4553 return nil, false 4554} 4555 4556// AsBasicImage is the BasicCodec implementation for H264Video. 4557func (hv H264Video) AsBasicImage() (BasicImage, bool) { 4558 return nil, false 4559} 4560 4561// AsCopyAudio is the BasicCodec implementation for H264Video. 4562func (hv H264Video) AsCopyAudio() (*CopyAudio, bool) { 4563 return nil, false 4564} 4565 4566// AsH264Video is the BasicCodec implementation for H264Video. 4567func (hv H264Video) AsH264Video() (*H264Video, bool) { 4568 return &hv, true 4569} 4570 4571// AsJpgImage is the BasicCodec implementation for H264Video. 4572func (hv H264Video) AsJpgImage() (*JpgImage, bool) { 4573 return nil, false 4574} 4575 4576// AsPngImage is the BasicCodec implementation for H264Video. 4577func (hv H264Video) AsPngImage() (*PngImage, bool) { 4578 return nil, false 4579} 4580 4581// AsCodec is the BasicCodec implementation for H264Video. 4582func (hv H264Video) AsCodec() (*Codec, bool) { 4583 return nil, false 4584} 4585 4586// AsBasicCodec is the BasicCodec implementation for H264Video. 4587func (hv H264Video) AsBasicCodec() (BasicCodec, bool) { 4588 return &hv, true 4589} 4590 4591// H265Layer describes the settings to be used when encoding the input video into a desired output bitrate 4592// layer with the H.265 video codec. 4593type H265Layer struct { 4594 // Profile - We currently support Main. Default is Auto. Possible values include: 'H265VideoProfileAuto', 'H265VideoProfileMain' 4595 Profile H265VideoProfile `json:"profile,omitempty"` 4596 // 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. 4597 Level *string `json:"level,omitempty"` 4598 // 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). 4599 BufferWindow *string `json:"bufferWindow,omitempty"` 4600 // 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. 4601 ReferenceFrames *int32 `json:"referenceFrames,omitempty"` 4602 // 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. 4603 Bitrate *int32 `json:"bitrate,omitempty"` 4604 // 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. 4605 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 4606 // 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. 4607 BFrames *int32 `json:"bFrames,omitempty"` 4608 // 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. 4609 FrameRate *string `json:"frameRate,omitempty"` 4610 // 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. 4611 Slices *int32 `json:"slices,omitempty"` 4612 // 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. 4613 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 4614 // 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. 4615 Width *string `json:"width,omitempty"` 4616 // 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. 4617 Height *string `json:"height,omitempty"` 4618 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 4619 Label *string `json:"label,omitempty"` 4620 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 4621 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 4622} 4623 4624// MarshalJSON is the custom marshaler for H265Layer. 4625func (hl H265Layer) MarshalJSON() ([]byte, error) { 4626 hl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer 4627 objectMap := make(map[string]interface{}) 4628 if hl.Profile != "" { 4629 objectMap["profile"] = hl.Profile 4630 } 4631 if hl.Level != nil { 4632 objectMap["level"] = hl.Level 4633 } 4634 if hl.BufferWindow != nil { 4635 objectMap["bufferWindow"] = hl.BufferWindow 4636 } 4637 if hl.ReferenceFrames != nil { 4638 objectMap["referenceFrames"] = hl.ReferenceFrames 4639 } 4640 if hl.Bitrate != nil { 4641 objectMap["bitrate"] = hl.Bitrate 4642 } 4643 if hl.MaxBitrate != nil { 4644 objectMap["maxBitrate"] = hl.MaxBitrate 4645 } 4646 if hl.BFrames != nil { 4647 objectMap["bFrames"] = hl.BFrames 4648 } 4649 if hl.FrameRate != nil { 4650 objectMap["frameRate"] = hl.FrameRate 4651 } 4652 if hl.Slices != nil { 4653 objectMap["slices"] = hl.Slices 4654 } 4655 if hl.AdaptiveBFrame != nil { 4656 objectMap["adaptiveBFrame"] = hl.AdaptiveBFrame 4657 } 4658 if hl.Width != nil { 4659 objectMap["width"] = hl.Width 4660 } 4661 if hl.Height != nil { 4662 objectMap["height"] = hl.Height 4663 } 4664 if hl.Label != nil { 4665 objectMap["label"] = hl.Label 4666 } 4667 if hl.OdataType != "" { 4668 objectMap["@odata.type"] = hl.OdataType 4669 } 4670 return json.Marshal(objectMap) 4671} 4672 4673// AsH265VideoLayer is the BasicLayer implementation for H265Layer. 4674func (hl H265Layer) AsH265VideoLayer() (*H265VideoLayer, bool) { 4675 return nil, false 4676} 4677 4678// AsBasicH265VideoLayer is the BasicLayer implementation for H265Layer. 4679func (hl H265Layer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 4680 return &hl, true 4681} 4682 4683// AsH265Layer is the BasicLayer implementation for H265Layer. 4684func (hl H265Layer) AsH265Layer() (*H265Layer, bool) { 4685 return &hl, true 4686} 4687 4688// AsVideoLayer is the BasicLayer implementation for H265Layer. 4689func (hl H265Layer) AsVideoLayer() (*VideoLayer, bool) { 4690 return nil, false 4691} 4692 4693// AsBasicVideoLayer is the BasicLayer implementation for H265Layer. 4694func (hl H265Layer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 4695 return nil, false 4696} 4697 4698// AsH264Layer is the BasicLayer implementation for H265Layer. 4699func (hl H265Layer) AsH264Layer() (*H264Layer, bool) { 4700 return nil, false 4701} 4702 4703// AsJpgLayer is the BasicLayer implementation for H265Layer. 4704func (hl H265Layer) AsJpgLayer() (*JpgLayer, bool) { 4705 return nil, false 4706} 4707 4708// AsPngLayer is the BasicLayer implementation for H265Layer. 4709func (hl H265Layer) AsPngLayer() (*PngLayer, bool) { 4710 return nil, false 4711} 4712 4713// AsLayer is the BasicLayer implementation for H265Layer. 4714func (hl H265Layer) AsLayer() (*Layer, bool) { 4715 return nil, false 4716} 4717 4718// AsBasicLayer is the BasicLayer implementation for H265Layer. 4719func (hl H265Layer) AsBasicLayer() (BasicLayer, bool) { 4720 return &hl, true 4721} 4722 4723// H265Video describes all the properties for encoding a video with the H.265 codec. 4724type H265Video struct { 4725 // 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. 4726 SceneChangeDetection *bool `json:"sceneChangeDetection,omitempty"` 4727 // 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' 4728 Complexity H265Complexity `json:"complexity,omitempty"` 4729 // Layers - The collection of output H.265 layers to be produced by the encoder. 4730 Layers *[]H265Layer `json:"layers,omitempty"` 4731 // 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. 4732 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 4733 // 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' 4734 StretchMode StretchMode `json:"stretchMode,omitempty"` 4735 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 4736 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 4737 // Label - An optional label for the codec. The label can be used to control muxing behavior. 4738 Label *string `json:"label,omitempty"` 4739 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 4740 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 4741} 4742 4743// MarshalJSON is the custom marshaler for H265Video. 4744func (hv H265Video) MarshalJSON() ([]byte, error) { 4745 hv.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video 4746 objectMap := make(map[string]interface{}) 4747 if hv.SceneChangeDetection != nil { 4748 objectMap["sceneChangeDetection"] = hv.SceneChangeDetection 4749 } 4750 if hv.Complexity != "" { 4751 objectMap["complexity"] = hv.Complexity 4752 } 4753 if hv.Layers != nil { 4754 objectMap["layers"] = hv.Layers 4755 } 4756 if hv.KeyFrameInterval != nil { 4757 objectMap["keyFrameInterval"] = hv.KeyFrameInterval 4758 } 4759 if hv.StretchMode != "" { 4760 objectMap["stretchMode"] = hv.StretchMode 4761 } 4762 if hv.SyncMode != "" { 4763 objectMap["syncMode"] = hv.SyncMode 4764 } 4765 if hv.Label != nil { 4766 objectMap["label"] = hv.Label 4767 } 4768 if hv.OdataType != "" { 4769 objectMap["@odata.type"] = hv.OdataType 4770 } 4771 return json.Marshal(objectMap) 4772} 4773 4774// AsAudio is the BasicCodec implementation for H265Video. 4775func (hv H265Video) AsAudio() (*Audio, bool) { 4776 return nil, false 4777} 4778 4779// AsBasicAudio is the BasicCodec implementation for H265Video. 4780func (hv H265Video) AsBasicAudio() (BasicAudio, bool) { 4781 return nil, false 4782} 4783 4784// AsAacAudio is the BasicCodec implementation for H265Video. 4785func (hv H265Video) AsAacAudio() (*AacAudio, bool) { 4786 return nil, false 4787} 4788 4789// AsVideo is the BasicCodec implementation for H265Video. 4790func (hv H265Video) AsVideo() (*Video, bool) { 4791 return nil, false 4792} 4793 4794// AsBasicVideo is the BasicCodec implementation for H265Video. 4795func (hv H265Video) AsBasicVideo() (BasicVideo, bool) { 4796 return &hv, true 4797} 4798 4799// AsH265Video is the BasicCodec implementation for H265Video. 4800func (hv H265Video) AsH265Video() (*H265Video, bool) { 4801 return &hv, true 4802} 4803 4804// AsCopyVideo is the BasicCodec implementation for H265Video. 4805func (hv H265Video) AsCopyVideo() (*CopyVideo, bool) { 4806 return nil, false 4807} 4808 4809// AsImage is the BasicCodec implementation for H265Video. 4810func (hv H265Video) AsImage() (*Image, bool) { 4811 return nil, false 4812} 4813 4814// AsBasicImage is the BasicCodec implementation for H265Video. 4815func (hv H265Video) AsBasicImage() (BasicImage, bool) { 4816 return nil, false 4817} 4818 4819// AsCopyAudio is the BasicCodec implementation for H265Video. 4820func (hv H265Video) AsCopyAudio() (*CopyAudio, bool) { 4821 return nil, false 4822} 4823 4824// AsH264Video is the BasicCodec implementation for H265Video. 4825func (hv H265Video) AsH264Video() (*H264Video, bool) { 4826 return nil, false 4827} 4828 4829// AsJpgImage is the BasicCodec implementation for H265Video. 4830func (hv H265Video) AsJpgImage() (*JpgImage, bool) { 4831 return nil, false 4832} 4833 4834// AsPngImage is the BasicCodec implementation for H265Video. 4835func (hv H265Video) AsPngImage() (*PngImage, bool) { 4836 return nil, false 4837} 4838 4839// AsCodec is the BasicCodec implementation for H265Video. 4840func (hv H265Video) AsCodec() (*Codec, bool) { 4841 return nil, false 4842} 4843 4844// AsBasicCodec is the BasicCodec implementation for H265Video. 4845func (hv H265Video) AsBasicCodec() (BasicCodec, bool) { 4846 return &hv, true 4847} 4848 4849// BasicH265VideoLayer describes the settings to be used when encoding the input video into a desired output bitrate 4850// layer. 4851type BasicH265VideoLayer interface { 4852 AsH265Layer() (*H265Layer, bool) 4853 AsH265VideoLayer() (*H265VideoLayer, bool) 4854} 4855 4856// H265VideoLayer describes the settings to be used when encoding the input video into a desired output bitrate 4857// layer. 4858type H265VideoLayer struct { 4859 // 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. 4860 Bitrate *int32 `json:"bitrate,omitempty"` 4861 // 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. 4862 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 4863 // 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. 4864 BFrames *int32 `json:"bFrames,omitempty"` 4865 // 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. 4866 FrameRate *string `json:"frameRate,omitempty"` 4867 // 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. 4868 Slices *int32 `json:"slices,omitempty"` 4869 // 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. 4870 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 4871 // 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. 4872 Width *string `json:"width,omitempty"` 4873 // 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. 4874 Height *string `json:"height,omitempty"` 4875 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 4876 Label *string `json:"label,omitempty"` 4877 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 4878 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 4879} 4880 4881func unmarshalBasicH265VideoLayer(body []byte) (BasicH265VideoLayer, error) { 4882 var m map[string]interface{} 4883 err := json.Unmarshal(body, &m) 4884 if err != nil { 4885 return nil, err 4886 } 4887 4888 switch m["@odata.type"] { 4889 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer): 4890 var hl H265Layer 4891 err := json.Unmarshal(body, &hl) 4892 return hl, err 4893 default: 4894 var hvl H265VideoLayer 4895 err := json.Unmarshal(body, &hvl) 4896 return hvl, err 4897 } 4898} 4899func unmarshalBasicH265VideoLayerArray(body []byte) ([]BasicH265VideoLayer, error) { 4900 var rawMessages []*json.RawMessage 4901 err := json.Unmarshal(body, &rawMessages) 4902 if err != nil { 4903 return nil, err 4904 } 4905 4906 hvlArray := make([]BasicH265VideoLayer, len(rawMessages)) 4907 4908 for index, rawMessage := range rawMessages { 4909 hvl, err := unmarshalBasicH265VideoLayer(*rawMessage) 4910 if err != nil { 4911 return nil, err 4912 } 4913 hvlArray[index] = hvl 4914 } 4915 return hvlArray, nil 4916} 4917 4918// MarshalJSON is the custom marshaler for H265VideoLayer. 4919func (hvl H265VideoLayer) MarshalJSON() ([]byte, error) { 4920 hvl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer 4921 objectMap := make(map[string]interface{}) 4922 if hvl.Bitrate != nil { 4923 objectMap["bitrate"] = hvl.Bitrate 4924 } 4925 if hvl.MaxBitrate != nil { 4926 objectMap["maxBitrate"] = hvl.MaxBitrate 4927 } 4928 if hvl.BFrames != nil { 4929 objectMap["bFrames"] = hvl.BFrames 4930 } 4931 if hvl.FrameRate != nil { 4932 objectMap["frameRate"] = hvl.FrameRate 4933 } 4934 if hvl.Slices != nil { 4935 objectMap["slices"] = hvl.Slices 4936 } 4937 if hvl.AdaptiveBFrame != nil { 4938 objectMap["adaptiveBFrame"] = hvl.AdaptiveBFrame 4939 } 4940 if hvl.Width != nil { 4941 objectMap["width"] = hvl.Width 4942 } 4943 if hvl.Height != nil { 4944 objectMap["height"] = hvl.Height 4945 } 4946 if hvl.Label != nil { 4947 objectMap["label"] = hvl.Label 4948 } 4949 if hvl.OdataType != "" { 4950 objectMap["@odata.type"] = hvl.OdataType 4951 } 4952 return json.Marshal(objectMap) 4953} 4954 4955// AsH265VideoLayer is the BasicLayer implementation for H265VideoLayer. 4956func (hvl H265VideoLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 4957 return &hvl, true 4958} 4959 4960// AsBasicH265VideoLayer is the BasicLayer implementation for H265VideoLayer. 4961func (hvl H265VideoLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 4962 return &hvl, true 4963} 4964 4965// AsH265Layer is the BasicLayer implementation for H265VideoLayer. 4966func (hvl H265VideoLayer) AsH265Layer() (*H265Layer, bool) { 4967 return nil, false 4968} 4969 4970// AsVideoLayer is the BasicLayer implementation for H265VideoLayer. 4971func (hvl H265VideoLayer) AsVideoLayer() (*VideoLayer, bool) { 4972 return nil, false 4973} 4974 4975// AsBasicVideoLayer is the BasicLayer implementation for H265VideoLayer. 4976func (hvl H265VideoLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 4977 return nil, false 4978} 4979 4980// AsH264Layer is the BasicLayer implementation for H265VideoLayer. 4981func (hvl H265VideoLayer) AsH264Layer() (*H264Layer, bool) { 4982 return nil, false 4983} 4984 4985// AsJpgLayer is the BasicLayer implementation for H265VideoLayer. 4986func (hvl H265VideoLayer) AsJpgLayer() (*JpgLayer, bool) { 4987 return nil, false 4988} 4989 4990// AsPngLayer is the BasicLayer implementation for H265VideoLayer. 4991func (hvl H265VideoLayer) AsPngLayer() (*PngLayer, bool) { 4992 return nil, false 4993} 4994 4995// AsLayer is the BasicLayer implementation for H265VideoLayer. 4996func (hvl H265VideoLayer) AsLayer() (*Layer, bool) { 4997 return nil, false 4998} 4999 5000// AsBasicLayer is the BasicLayer implementation for H265VideoLayer. 5001func (hvl H265VideoLayer) AsBasicLayer() (BasicLayer, bool) { 5002 return &hvl, true 5003} 5004 5005// Hls HTTP Live Streaming (HLS) packing setting for the live output. 5006type Hls struct { 5007 // 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. 5008 FragmentsPerTsSegment *int32 `json:"fragmentsPerTsSegment,omitempty"` 5009} 5010 5011// BasicImage describes the basic properties for generating thumbnails from the input video 5012type BasicImage interface { 5013 AsJpgImage() (*JpgImage, bool) 5014 AsPngImage() (*PngImage, bool) 5015 AsImage() (*Image, bool) 5016} 5017 5018// Image describes the basic properties for generating thumbnails from the input video 5019type Image struct { 5020 // 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}. 5021 Start *string `json:"start,omitempty"` 5022 // 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. 5023 Step *string `json:"step,omitempty"` 5024 // 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. 5025 Range *string `json:"range,omitempty"` 5026 // 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. 5027 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 5028 // 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' 5029 StretchMode StretchMode `json:"stretchMode,omitempty"` 5030 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 5031 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 5032 // Label - An optional label for the codec. The label can be used to control muxing behavior. 5033 Label *string `json:"label,omitempty"` 5034 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 5035 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 5036} 5037 5038func unmarshalBasicImage(body []byte) (BasicImage, error) { 5039 var m map[string]interface{} 5040 err := json.Unmarshal(body, &m) 5041 if err != nil { 5042 return nil, err 5043 } 5044 5045 switch m["@odata.type"] { 5046 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage): 5047 var ji JpgImage 5048 err := json.Unmarshal(body, &ji) 5049 return ji, err 5050 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage): 5051 var pi PngImage 5052 err := json.Unmarshal(body, &pi) 5053 return pi, err 5054 default: 5055 var i Image 5056 err := json.Unmarshal(body, &i) 5057 return i, err 5058 } 5059} 5060func unmarshalBasicImageArray(body []byte) ([]BasicImage, error) { 5061 var rawMessages []*json.RawMessage 5062 err := json.Unmarshal(body, &rawMessages) 5063 if err != nil { 5064 return nil, err 5065 } 5066 5067 iArray := make([]BasicImage, len(rawMessages)) 5068 5069 for index, rawMessage := range rawMessages { 5070 i, err := unmarshalBasicImage(*rawMessage) 5071 if err != nil { 5072 return nil, err 5073 } 5074 iArray[index] = i 5075 } 5076 return iArray, nil 5077} 5078 5079// MarshalJSON is the custom marshaler for Image. 5080func (i Image) MarshalJSON() ([]byte, error) { 5081 i.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaImage 5082 objectMap := make(map[string]interface{}) 5083 if i.Start != nil { 5084 objectMap["start"] = i.Start 5085 } 5086 if i.Step != nil { 5087 objectMap["step"] = i.Step 5088 } 5089 if i.Range != nil { 5090 objectMap["range"] = i.Range 5091 } 5092 if i.KeyFrameInterval != nil { 5093 objectMap["keyFrameInterval"] = i.KeyFrameInterval 5094 } 5095 if i.StretchMode != "" { 5096 objectMap["stretchMode"] = i.StretchMode 5097 } 5098 if i.SyncMode != "" { 5099 objectMap["syncMode"] = i.SyncMode 5100 } 5101 if i.Label != nil { 5102 objectMap["label"] = i.Label 5103 } 5104 if i.OdataType != "" { 5105 objectMap["@odata.type"] = i.OdataType 5106 } 5107 return json.Marshal(objectMap) 5108} 5109 5110// AsAudio is the BasicCodec implementation for Image. 5111func (i Image) AsAudio() (*Audio, bool) { 5112 return nil, false 5113} 5114 5115// AsBasicAudio is the BasicCodec implementation for Image. 5116func (i Image) AsBasicAudio() (BasicAudio, bool) { 5117 return nil, false 5118} 5119 5120// AsAacAudio is the BasicCodec implementation for Image. 5121func (i Image) AsAacAudio() (*AacAudio, bool) { 5122 return nil, false 5123} 5124 5125// AsVideo is the BasicCodec implementation for Image. 5126func (i Image) AsVideo() (*Video, bool) { 5127 return nil, false 5128} 5129 5130// AsBasicVideo is the BasicCodec implementation for Image. 5131func (i Image) AsBasicVideo() (BasicVideo, bool) { 5132 return &i, true 5133} 5134 5135// AsH265Video is the BasicCodec implementation for Image. 5136func (i Image) AsH265Video() (*H265Video, bool) { 5137 return nil, false 5138} 5139 5140// AsCopyVideo is the BasicCodec implementation for Image. 5141func (i Image) AsCopyVideo() (*CopyVideo, bool) { 5142 return nil, false 5143} 5144 5145// AsImage is the BasicCodec implementation for Image. 5146func (i Image) AsImage() (*Image, bool) { 5147 return &i, true 5148} 5149 5150// AsBasicImage is the BasicCodec implementation for Image. 5151func (i Image) AsBasicImage() (BasicImage, bool) { 5152 return &i, true 5153} 5154 5155// AsCopyAudio is the BasicCodec implementation for Image. 5156func (i Image) AsCopyAudio() (*CopyAudio, bool) { 5157 return nil, false 5158} 5159 5160// AsH264Video is the BasicCodec implementation for Image. 5161func (i Image) AsH264Video() (*H264Video, bool) { 5162 return nil, false 5163} 5164 5165// AsJpgImage is the BasicCodec implementation for Image. 5166func (i Image) AsJpgImage() (*JpgImage, bool) { 5167 return nil, false 5168} 5169 5170// AsPngImage is the BasicCodec implementation for Image. 5171func (i Image) AsPngImage() (*PngImage, bool) { 5172 return nil, false 5173} 5174 5175// AsCodec is the BasicCodec implementation for Image. 5176func (i Image) AsCodec() (*Codec, bool) { 5177 return nil, false 5178} 5179 5180// AsBasicCodec is the BasicCodec implementation for Image. 5181func (i Image) AsBasicCodec() (BasicCodec, bool) { 5182 return &i, true 5183} 5184 5185// BasicImageFormat describes the properties for an output image file. 5186type BasicImageFormat interface { 5187 AsJpgFormat() (*JpgFormat, bool) 5188 AsPngFormat() (*PngFormat, bool) 5189 AsImageFormat() (*ImageFormat, bool) 5190} 5191 5192// ImageFormat describes the properties for an output image file. 5193type ImageFormat struct { 5194 // 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. 5195 FilenamePattern *string `json:"filenamePattern,omitempty"` 5196 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 5197 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 5198} 5199 5200func unmarshalBasicImageFormat(body []byte) (BasicImageFormat, error) { 5201 var m map[string]interface{} 5202 err := json.Unmarshal(body, &m) 5203 if err != nil { 5204 return nil, err 5205 } 5206 5207 switch m["@odata.type"] { 5208 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat): 5209 var jf JpgFormat 5210 err := json.Unmarshal(body, &jf) 5211 return jf, err 5212 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat): 5213 var pf PngFormat 5214 err := json.Unmarshal(body, &pf) 5215 return pf, err 5216 default: 5217 var ifVar ImageFormat 5218 err := json.Unmarshal(body, &ifVar) 5219 return ifVar, err 5220 } 5221} 5222func unmarshalBasicImageFormatArray(body []byte) ([]BasicImageFormat, error) { 5223 var rawMessages []*json.RawMessage 5224 err := json.Unmarshal(body, &rawMessages) 5225 if err != nil { 5226 return nil, err 5227 } 5228 5229 ifVarArray := make([]BasicImageFormat, len(rawMessages)) 5230 5231 for index, rawMessage := range rawMessages { 5232 ifVar, err := unmarshalBasicImageFormat(*rawMessage) 5233 if err != nil { 5234 return nil, err 5235 } 5236 ifVarArray[index] = ifVar 5237 } 5238 return ifVarArray, nil 5239} 5240 5241// MarshalJSON is the custom marshaler for ImageFormat. 5242func (ifVar ImageFormat) MarshalJSON() ([]byte, error) { 5243 ifVar.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat 5244 objectMap := make(map[string]interface{}) 5245 if ifVar.FilenamePattern != nil { 5246 objectMap["filenamePattern"] = ifVar.FilenamePattern 5247 } 5248 if ifVar.OdataType != "" { 5249 objectMap["@odata.type"] = ifVar.OdataType 5250 } 5251 return json.Marshal(objectMap) 5252} 5253 5254// AsImageFormat is the BasicFormat implementation for ImageFormat. 5255func (ifVar ImageFormat) AsImageFormat() (*ImageFormat, bool) { 5256 return &ifVar, true 5257} 5258 5259// AsBasicImageFormat is the BasicFormat implementation for ImageFormat. 5260func (ifVar ImageFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 5261 return &ifVar, true 5262} 5263 5264// AsJpgFormat is the BasicFormat implementation for ImageFormat. 5265func (ifVar ImageFormat) AsJpgFormat() (*JpgFormat, bool) { 5266 return nil, false 5267} 5268 5269// AsPngFormat is the BasicFormat implementation for ImageFormat. 5270func (ifVar ImageFormat) AsPngFormat() (*PngFormat, bool) { 5271 return nil, false 5272} 5273 5274// AsMultiBitrateFormat is the BasicFormat implementation for ImageFormat. 5275func (ifVar ImageFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 5276 return nil, false 5277} 5278 5279// AsBasicMultiBitrateFormat is the BasicFormat implementation for ImageFormat. 5280func (ifVar ImageFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 5281 return nil, false 5282} 5283 5284// AsMp4Format is the BasicFormat implementation for ImageFormat. 5285func (ifVar ImageFormat) AsMp4Format() (*Mp4Format, bool) { 5286 return nil, false 5287} 5288 5289// AsTransportStreamFormat is the BasicFormat implementation for ImageFormat. 5290func (ifVar ImageFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 5291 return nil, false 5292} 5293 5294// AsFormat is the BasicFormat implementation for ImageFormat. 5295func (ifVar ImageFormat) AsFormat() (*Format, bool) { 5296 return nil, false 5297} 5298 5299// AsBasicFormat is the BasicFormat implementation for ImageFormat. 5300func (ifVar ImageFormat) AsBasicFormat() (BasicFormat, bool) { 5301 return &ifVar, true 5302} 5303 5304// BasicInputDefinition base class for defining an input. Use sub classes of this class to specify tracks selections 5305// and related metadata. 5306type BasicInputDefinition interface { 5307 AsFromAllInputFile() (*FromAllInputFile, bool) 5308 AsFromEachInputFile() (*FromEachInputFile, bool) 5309 AsInputFile() (*InputFile, bool) 5310 AsInputDefinition() (*InputDefinition, bool) 5311} 5312 5313// InputDefinition base class for defining an input. Use sub classes of this class to specify tracks selections 5314// and related metadata. 5315type InputDefinition struct { 5316 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 5317 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 5318 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 5319 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 5320} 5321 5322func unmarshalBasicInputDefinition(body []byte) (BasicInputDefinition, error) { 5323 var m map[string]interface{} 5324 err := json.Unmarshal(body, &m) 5325 if err != nil { 5326 return nil, err 5327 } 5328 5329 switch m["@odata.type"] { 5330 case string(OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile): 5331 var faif FromAllInputFile 5332 err := json.Unmarshal(body, &faif) 5333 return faif, err 5334 case string(OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile): 5335 var feif FromEachInputFile 5336 err := json.Unmarshal(body, &feif) 5337 return feif, err 5338 case string(OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile): 5339 var ifVar InputFile 5340 err := json.Unmarshal(body, &ifVar) 5341 return ifVar, err 5342 default: 5343 var ID InputDefinition 5344 err := json.Unmarshal(body, &ID) 5345 return ID, err 5346 } 5347} 5348func unmarshalBasicInputDefinitionArray(body []byte) ([]BasicInputDefinition, error) { 5349 var rawMessages []*json.RawMessage 5350 err := json.Unmarshal(body, &rawMessages) 5351 if err != nil { 5352 return nil, err 5353 } 5354 5355 IDArray := make([]BasicInputDefinition, len(rawMessages)) 5356 5357 for index, rawMessage := range rawMessages { 5358 ID, err := unmarshalBasicInputDefinition(*rawMessage) 5359 if err != nil { 5360 return nil, err 5361 } 5362 IDArray[index] = ID 5363 } 5364 return IDArray, nil 5365} 5366 5367// MarshalJSON is the custom marshaler for InputDefinition. 5368func (ID InputDefinition) MarshalJSON() ([]byte, error) { 5369 ID.OdataType = OdataTypeBasicInputDefinitionOdataTypeInputDefinition 5370 objectMap := make(map[string]interface{}) 5371 if ID.IncludedTracks != nil { 5372 objectMap["includedTracks"] = ID.IncludedTracks 5373 } 5374 if ID.OdataType != "" { 5375 objectMap["@odata.type"] = ID.OdataType 5376 } 5377 return json.Marshal(objectMap) 5378} 5379 5380// AsFromAllInputFile is the BasicInputDefinition implementation for InputDefinition. 5381func (ID InputDefinition) AsFromAllInputFile() (*FromAllInputFile, bool) { 5382 return nil, false 5383} 5384 5385// AsFromEachInputFile is the BasicInputDefinition implementation for InputDefinition. 5386func (ID InputDefinition) AsFromEachInputFile() (*FromEachInputFile, bool) { 5387 return nil, false 5388} 5389 5390// AsInputFile is the BasicInputDefinition implementation for InputDefinition. 5391func (ID InputDefinition) AsInputFile() (*InputFile, bool) { 5392 return nil, false 5393} 5394 5395// AsInputDefinition is the BasicInputDefinition implementation for InputDefinition. 5396func (ID InputDefinition) AsInputDefinition() (*InputDefinition, bool) { 5397 return &ID, true 5398} 5399 5400// AsBasicInputDefinition is the BasicInputDefinition implementation for InputDefinition. 5401func (ID InputDefinition) AsBasicInputDefinition() (BasicInputDefinition, bool) { 5402 return &ID, true 5403} 5404 5405// UnmarshalJSON is the custom unmarshaler for InputDefinition struct. 5406func (ID *InputDefinition) UnmarshalJSON(body []byte) error { 5407 var m map[string]*json.RawMessage 5408 err := json.Unmarshal(body, &m) 5409 if err != nil { 5410 return err 5411 } 5412 for k, v := range m { 5413 switch k { 5414 case "includedTracks": 5415 if v != nil { 5416 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 5417 if err != nil { 5418 return err 5419 } 5420 ID.IncludedTracks = &includedTracks 5421 } 5422 case "@odata.type": 5423 if v != nil { 5424 var odataType OdataTypeBasicInputDefinition 5425 err = json.Unmarshal(*v, &odataType) 5426 if err != nil { 5427 return err 5428 } 5429 ID.OdataType = odataType 5430 } 5431 } 5432 } 5433 5434 return nil 5435} 5436 5437// InputFile an InputDefinition for a single file. TrackSelections are scoped to the file specified. 5438type InputFile struct { 5439 // Filename - Name of the file that this input definition applies to. 5440 Filename *string `json:"filename,omitempty"` 5441 // IncludedTracks - The list of TrackDescriptors which define the metadata and selection of tracks in the input. 5442 IncludedTracks *[]BasicTrackDescriptor `json:"includedTracks,omitempty"` 5443 // OdataType - Possible values include: 'OdataTypeBasicInputDefinitionOdataTypeInputDefinition', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromAllInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaFromEachInputFile', 'OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile' 5444 OdataType OdataTypeBasicInputDefinition `json:"@odata.type,omitempty"` 5445} 5446 5447// MarshalJSON is the custom marshaler for InputFile. 5448func (ifVar InputFile) MarshalJSON() ([]byte, error) { 5449 ifVar.OdataType = OdataTypeBasicInputDefinitionOdataTypeMicrosoftMediaInputFile 5450 objectMap := make(map[string]interface{}) 5451 if ifVar.Filename != nil { 5452 objectMap["filename"] = ifVar.Filename 5453 } 5454 if ifVar.IncludedTracks != nil { 5455 objectMap["includedTracks"] = ifVar.IncludedTracks 5456 } 5457 if ifVar.OdataType != "" { 5458 objectMap["@odata.type"] = ifVar.OdataType 5459 } 5460 return json.Marshal(objectMap) 5461} 5462 5463// AsFromAllInputFile is the BasicInputDefinition implementation for InputFile. 5464func (ifVar InputFile) AsFromAllInputFile() (*FromAllInputFile, bool) { 5465 return nil, false 5466} 5467 5468// AsFromEachInputFile is the BasicInputDefinition implementation for InputFile. 5469func (ifVar InputFile) AsFromEachInputFile() (*FromEachInputFile, bool) { 5470 return nil, false 5471} 5472 5473// AsInputFile is the BasicInputDefinition implementation for InputFile. 5474func (ifVar InputFile) AsInputFile() (*InputFile, bool) { 5475 return &ifVar, true 5476} 5477 5478// AsInputDefinition is the BasicInputDefinition implementation for InputFile. 5479func (ifVar InputFile) AsInputDefinition() (*InputDefinition, bool) { 5480 return nil, false 5481} 5482 5483// AsBasicInputDefinition is the BasicInputDefinition implementation for InputFile. 5484func (ifVar InputFile) AsBasicInputDefinition() (BasicInputDefinition, bool) { 5485 return &ifVar, true 5486} 5487 5488// UnmarshalJSON is the custom unmarshaler for InputFile struct. 5489func (ifVar *InputFile) UnmarshalJSON(body []byte) error { 5490 var m map[string]*json.RawMessage 5491 err := json.Unmarshal(body, &m) 5492 if err != nil { 5493 return err 5494 } 5495 for k, v := range m { 5496 switch k { 5497 case "filename": 5498 if v != nil { 5499 var filename string 5500 err = json.Unmarshal(*v, &filename) 5501 if err != nil { 5502 return err 5503 } 5504 ifVar.Filename = &filename 5505 } 5506 case "includedTracks": 5507 if v != nil { 5508 includedTracks, err := unmarshalBasicTrackDescriptorArray(*v) 5509 if err != nil { 5510 return err 5511 } 5512 ifVar.IncludedTracks = &includedTracks 5513 } 5514 case "@odata.type": 5515 if v != nil { 5516 var odataType OdataTypeBasicInputDefinition 5517 err = json.Unmarshal(*v, &odataType) 5518 if err != nil { 5519 return err 5520 } 5521 ifVar.OdataType = odataType 5522 } 5523 } 5524 } 5525 5526 return nil 5527} 5528 5529// IPAccessControl the IP access control. 5530type IPAccessControl struct { 5531 // Allow - The IP allow list. 5532 Allow *[]IPRange `json:"allow,omitempty"` 5533} 5534 5535// IPRange the IP address range in the CIDR scheme. 5536type IPRange struct { 5537 // Name - The friendly name for the IP address range. 5538 Name *string `json:"name,omitempty"` 5539 // Address - The IP address. 5540 Address *string `json:"address,omitempty"` 5541 // SubnetPrefixLength - The subnet mask prefix length (see CIDR notation). 5542 SubnetPrefixLength *int32 `json:"subnetPrefixLength,omitempty"` 5543} 5544 5545// Job a Job resource type. The progress and state can be obtained by polling a Job or subscribing to 5546// events using EventGrid. 5547type Job struct { 5548 autorest.Response `json:"-"` 5549 // JobProperties - The resource properties. 5550 *JobProperties `json:"properties,omitempty"` 5551 // SystemData - READ-ONLY; The system metadata relating to this resource. 5552 SystemData *SystemData `json:"systemData,omitempty"` 5553 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 5554 ID *string `json:"id,omitempty"` 5555 // Name - READ-ONLY; The name of the resource 5556 Name *string `json:"name,omitempty"` 5557 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 5558 Type *string `json:"type,omitempty"` 5559} 5560 5561// MarshalJSON is the custom marshaler for Job. 5562func (j Job) MarshalJSON() ([]byte, error) { 5563 objectMap := make(map[string]interface{}) 5564 if j.JobProperties != nil { 5565 objectMap["properties"] = j.JobProperties 5566 } 5567 return json.Marshal(objectMap) 5568} 5569 5570// UnmarshalJSON is the custom unmarshaler for Job struct. 5571func (j *Job) UnmarshalJSON(body []byte) error { 5572 var m map[string]*json.RawMessage 5573 err := json.Unmarshal(body, &m) 5574 if err != nil { 5575 return err 5576 } 5577 for k, v := range m { 5578 switch k { 5579 case "properties": 5580 if v != nil { 5581 var jobProperties JobProperties 5582 err = json.Unmarshal(*v, &jobProperties) 5583 if err != nil { 5584 return err 5585 } 5586 j.JobProperties = &jobProperties 5587 } 5588 case "systemData": 5589 if v != nil { 5590 var systemData SystemData 5591 err = json.Unmarshal(*v, &systemData) 5592 if err != nil { 5593 return err 5594 } 5595 j.SystemData = &systemData 5596 } 5597 case "id": 5598 if v != nil { 5599 var ID string 5600 err = json.Unmarshal(*v, &ID) 5601 if err != nil { 5602 return err 5603 } 5604 j.ID = &ID 5605 } 5606 case "name": 5607 if v != nil { 5608 var name string 5609 err = json.Unmarshal(*v, &name) 5610 if err != nil { 5611 return err 5612 } 5613 j.Name = &name 5614 } 5615 case "type": 5616 if v != nil { 5617 var typeVar string 5618 err = json.Unmarshal(*v, &typeVar) 5619 if err != nil { 5620 return err 5621 } 5622 j.Type = &typeVar 5623 } 5624 } 5625 } 5626 5627 return nil 5628} 5629 5630// JobCollection a collection of Job items. 5631type JobCollection struct { 5632 autorest.Response `json:"-"` 5633 // Value - A collection of Job items. 5634 Value *[]Job `json:"value,omitempty"` 5635 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 5636 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 5637} 5638 5639// JobCollectionIterator provides access to a complete listing of Job values. 5640type JobCollectionIterator struct { 5641 i int 5642 page JobCollectionPage 5643} 5644 5645// NextWithContext advances to the next value. If there was an error making 5646// the request the iterator does not advance and the error is returned. 5647func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) { 5648 if tracing.IsEnabled() { 5649 ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext") 5650 defer func() { 5651 sc := -1 5652 if iter.Response().Response.Response != nil { 5653 sc = iter.Response().Response.Response.StatusCode 5654 } 5655 tracing.EndSpan(ctx, sc, err) 5656 }() 5657 } 5658 iter.i++ 5659 if iter.i < len(iter.page.Values()) { 5660 return nil 5661 } 5662 err = iter.page.NextWithContext(ctx) 5663 if err != nil { 5664 iter.i-- 5665 return err 5666 } 5667 iter.i = 0 5668 return nil 5669} 5670 5671// Next advances to the next value. If there was an error making 5672// the request the iterator does not advance and the error is returned. 5673// Deprecated: Use NextWithContext() instead. 5674func (iter *JobCollectionIterator) Next() error { 5675 return iter.NextWithContext(context.Background()) 5676} 5677 5678// NotDone returns true if the enumeration should be started or is not yet complete. 5679func (iter JobCollectionIterator) NotDone() bool { 5680 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 5681} 5682 5683// Response returns the raw server response from the last page request. 5684func (iter JobCollectionIterator) Response() JobCollection { 5685 return iter.page.Response() 5686} 5687 5688// Value returns the current value or a zero-initialized value if the 5689// iterator has advanced beyond the end of the collection. 5690func (iter JobCollectionIterator) Value() Job { 5691 if !iter.page.NotDone() { 5692 return Job{} 5693 } 5694 return iter.page.Values()[iter.i] 5695} 5696 5697// Creates a new instance of the JobCollectionIterator type. 5698func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator { 5699 return JobCollectionIterator{page: page} 5700} 5701 5702// IsEmpty returns true if the ListResult contains no values. 5703func (jc JobCollection) IsEmpty() bool { 5704 return jc.Value == nil || len(*jc.Value) == 0 5705} 5706 5707// hasNextLink returns true if the NextLink is not empty. 5708func (jc JobCollection) hasNextLink() bool { 5709 return jc.OdataNextLink != nil && len(*jc.OdataNextLink) != 0 5710} 5711 5712// jobCollectionPreparer prepares a request to retrieve the next set of results. 5713// It returns nil if no more results exist. 5714func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) { 5715 if !jc.hasNextLink() { 5716 return nil, nil 5717 } 5718 return autorest.Prepare((&http.Request{}).WithContext(ctx), 5719 autorest.AsJSON(), 5720 autorest.AsGet(), 5721 autorest.WithBaseURL(to.String(jc.OdataNextLink))) 5722} 5723 5724// JobCollectionPage contains a page of Job values. 5725type JobCollectionPage struct { 5726 fn func(context.Context, JobCollection) (JobCollection, error) 5727 jc JobCollection 5728} 5729 5730// NextWithContext advances to the next page of values. If there was an error making 5731// the request the page does not advance and the error is returned. 5732func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) { 5733 if tracing.IsEnabled() { 5734 ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext") 5735 defer func() { 5736 sc := -1 5737 if page.Response().Response.Response != nil { 5738 sc = page.Response().Response.Response.StatusCode 5739 } 5740 tracing.EndSpan(ctx, sc, err) 5741 }() 5742 } 5743 for { 5744 next, err := page.fn(ctx, page.jc) 5745 if err != nil { 5746 return err 5747 } 5748 page.jc = next 5749 if !next.hasNextLink() || !next.IsEmpty() { 5750 break 5751 } 5752 } 5753 return nil 5754} 5755 5756// Next advances to the next page of values. If there was an error making 5757// the request the page does not advance and the error is returned. 5758// Deprecated: Use NextWithContext() instead. 5759func (page *JobCollectionPage) Next() error { 5760 return page.NextWithContext(context.Background()) 5761} 5762 5763// NotDone returns true if the page enumeration should be started or is not yet complete. 5764func (page JobCollectionPage) NotDone() bool { 5765 return !page.jc.IsEmpty() 5766} 5767 5768// Response returns the raw server response from the last page request. 5769func (page JobCollectionPage) Response() JobCollection { 5770 return page.jc 5771} 5772 5773// Values returns the slice of values for the current page or nil if there are no values. 5774func (page JobCollectionPage) Values() []Job { 5775 if page.jc.IsEmpty() { 5776 return nil 5777 } 5778 return *page.jc.Value 5779} 5780 5781// Creates a new instance of the JobCollectionPage type. 5782func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage { 5783 return JobCollectionPage{ 5784 fn: getNextPage, 5785 jc: cur, 5786 } 5787} 5788 5789// JobError details of JobOutput errors. 5790type JobError struct { 5791 // Code - READ-ONLY; Error code describing the error. Possible values include: 'JobErrorCodeServiceError', 'JobErrorCodeServiceTransientError', 'JobErrorCodeDownloadNotAccessible', 'JobErrorCodeDownloadTransientError', 'JobErrorCodeUploadNotAccessible', 'JobErrorCodeUploadTransientError', 'JobErrorCodeConfigurationUnsupported', 'JobErrorCodeContentMalformed', 'JobErrorCodeContentUnsupported' 5792 Code JobErrorCode `json:"code,omitempty"` 5793 // Message - READ-ONLY; A human-readable language-dependent representation of the error. 5794 Message *string `json:"message,omitempty"` 5795 // Category - READ-ONLY; Helps with categorization of errors. Possible values include: 'JobErrorCategoryService', 'JobErrorCategoryDownload', 'JobErrorCategoryUpload', 'JobErrorCategoryConfiguration', 'JobErrorCategoryContent' 5796 Category JobErrorCategory `json:"category,omitempty"` 5797 // 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' 5798 Retry JobRetry `json:"retry,omitempty"` 5799 // Details - READ-ONLY; An array of details about specific errors that led to this reported error. 5800 Details *[]JobErrorDetail `json:"details,omitempty"` 5801} 5802 5803// MarshalJSON is the custom marshaler for JobError. 5804func (je JobError) MarshalJSON() ([]byte, error) { 5805 objectMap := make(map[string]interface{}) 5806 return json.Marshal(objectMap) 5807} 5808 5809// JobErrorDetail details of JobOutput errors. 5810type JobErrorDetail struct { 5811 // Code - READ-ONLY; Code describing the error detail. 5812 Code *string `json:"code,omitempty"` 5813 // Message - READ-ONLY; A human-readable representation of the error. 5814 Message *string `json:"message,omitempty"` 5815} 5816 5817// MarshalJSON is the custom marshaler for JobErrorDetail. 5818func (jed JobErrorDetail) MarshalJSON() ([]byte, error) { 5819 objectMap := make(map[string]interface{}) 5820 return json.Marshal(objectMap) 5821} 5822 5823// BasicJobInput base class for inputs to a Job. 5824type BasicJobInput interface { 5825 AsJobInputClip() (*JobInputClip, bool) 5826 AsBasicJobInputClip() (BasicJobInputClip, bool) 5827 AsJobInputs() (*JobInputs, bool) 5828 AsJobInputAsset() (*JobInputAsset, bool) 5829 AsJobInputHTTP() (*JobInputHTTP, bool) 5830 AsJobInputSequence() (*JobInputSequence, bool) 5831 AsJobInput() (*JobInput, bool) 5832} 5833 5834// JobInput base class for inputs to a Job. 5835type JobInput struct { 5836 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 5837 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 5838} 5839 5840func unmarshalBasicJobInput(body []byte) (BasicJobInput, error) { 5841 var m map[string]interface{} 5842 err := json.Unmarshal(body, &m) 5843 if err != nil { 5844 return nil, err 5845 } 5846 5847 switch m["@odata.type"] { 5848 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip): 5849 var jic JobInputClip 5850 err := json.Unmarshal(body, &jic) 5851 return jic, err 5852 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs): 5853 var ji JobInputs 5854 err := json.Unmarshal(body, &ji) 5855 return ji, err 5856 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset): 5857 var jia JobInputAsset 5858 err := json.Unmarshal(body, &jia) 5859 return jia, err 5860 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP): 5861 var jih JobInputHTTP 5862 err := json.Unmarshal(body, &jih) 5863 return jih, err 5864 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence): 5865 var jis JobInputSequence 5866 err := json.Unmarshal(body, &jis) 5867 return jis, err 5868 default: 5869 var ji JobInput 5870 err := json.Unmarshal(body, &ji) 5871 return ji, err 5872 } 5873} 5874func unmarshalBasicJobInputArray(body []byte) ([]BasicJobInput, error) { 5875 var rawMessages []*json.RawMessage 5876 err := json.Unmarshal(body, &rawMessages) 5877 if err != nil { 5878 return nil, err 5879 } 5880 5881 jiArray := make([]BasicJobInput, len(rawMessages)) 5882 5883 for index, rawMessage := range rawMessages { 5884 ji, err := unmarshalBasicJobInput(*rawMessage) 5885 if err != nil { 5886 return nil, err 5887 } 5888 jiArray[index] = ji 5889 } 5890 return jiArray, nil 5891} 5892 5893// MarshalJSON is the custom marshaler for JobInput. 5894func (ji JobInput) MarshalJSON() ([]byte, error) { 5895 ji.OdataType = OdataTypeBasicJobInputOdataTypeJobInput 5896 objectMap := make(map[string]interface{}) 5897 if ji.OdataType != "" { 5898 objectMap["@odata.type"] = ji.OdataType 5899 } 5900 return json.Marshal(objectMap) 5901} 5902 5903// AsJobInputClip is the BasicJobInput implementation for JobInput. 5904func (ji JobInput) AsJobInputClip() (*JobInputClip, bool) { 5905 return nil, false 5906} 5907 5908// AsBasicJobInputClip is the BasicJobInput implementation for JobInput. 5909func (ji JobInput) AsBasicJobInputClip() (BasicJobInputClip, bool) { 5910 return nil, false 5911} 5912 5913// AsJobInputs is the BasicJobInput implementation for JobInput. 5914func (ji JobInput) AsJobInputs() (*JobInputs, bool) { 5915 return nil, false 5916} 5917 5918// AsJobInputAsset is the BasicJobInput implementation for JobInput. 5919func (ji JobInput) AsJobInputAsset() (*JobInputAsset, bool) { 5920 return nil, false 5921} 5922 5923// AsJobInputHTTP is the BasicJobInput implementation for JobInput. 5924func (ji JobInput) AsJobInputHTTP() (*JobInputHTTP, bool) { 5925 return nil, false 5926} 5927 5928// AsJobInputSequence is the BasicJobInput implementation for JobInput. 5929func (ji JobInput) AsJobInputSequence() (*JobInputSequence, bool) { 5930 return nil, false 5931} 5932 5933// AsJobInput is the BasicJobInput implementation for JobInput. 5934func (ji JobInput) AsJobInput() (*JobInput, bool) { 5935 return &ji, true 5936} 5937 5938// AsBasicJobInput is the BasicJobInput implementation for JobInput. 5939func (ji JobInput) AsBasicJobInput() (BasicJobInput, bool) { 5940 return &ji, true 5941} 5942 5943// JobInputAsset represents an Asset for input into a Job. 5944type JobInputAsset struct { 5945 // AssetName - The name of the input Asset. 5946 AssetName *string `json:"assetName,omitempty"` 5947 // Files - List of files. Required for JobInputHttp. Maximum of 4000 characters each. 5948 Files *[]string `json:"files,omitempty"` 5949 // Start - Defines a point on the timeline of the input media at which processing will start. Defaults to the beginning of the input media. 5950 Start BasicClipTime `json:"start,omitempty"` 5951 // End - Defines a point on the timeline of the input media at which processing will end. Defaults to the end of the input media. 5952 End BasicClipTime `json:"end,omitempty"` 5953 // 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'. 5954 Label *string `json:"label,omitempty"` 5955 // InputDefinitions - Defines a list of InputDefinitions. For each InputDefinition, it defines a list of track selections and related metadata. 5956 InputDefinitions *[]BasicInputDefinition `json:"inputDefinitions,omitempty"` 5957 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 5958 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 5959} 5960 5961// MarshalJSON is the custom marshaler for JobInputAsset. 5962func (jia JobInputAsset) MarshalJSON() ([]byte, error) { 5963 jia.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset 5964 objectMap := make(map[string]interface{}) 5965 if jia.AssetName != nil { 5966 objectMap["assetName"] = jia.AssetName 5967 } 5968 if jia.Files != nil { 5969 objectMap["files"] = jia.Files 5970 } 5971 objectMap["start"] = jia.Start 5972 objectMap["end"] = jia.End 5973 if jia.Label != nil { 5974 objectMap["label"] = jia.Label 5975 } 5976 if jia.InputDefinitions != nil { 5977 objectMap["inputDefinitions"] = jia.InputDefinitions 5978 } 5979 if jia.OdataType != "" { 5980 objectMap["@odata.type"] = jia.OdataType 5981 } 5982 return json.Marshal(objectMap) 5983} 5984 5985// AsJobInputClip is the BasicJobInput implementation for JobInputAsset. 5986func (jia JobInputAsset) AsJobInputClip() (*JobInputClip, bool) { 5987 return nil, false 5988} 5989 5990// AsBasicJobInputClip is the BasicJobInput implementation for JobInputAsset. 5991func (jia JobInputAsset) AsBasicJobInputClip() (BasicJobInputClip, bool) { 5992 return &jia, true 5993} 5994 5995// AsJobInputs is the BasicJobInput implementation for JobInputAsset. 5996func (jia JobInputAsset) AsJobInputs() (*JobInputs, bool) { 5997 return nil, false 5998} 5999 6000// AsJobInputAsset is the BasicJobInput implementation for JobInputAsset. 6001func (jia JobInputAsset) AsJobInputAsset() (*JobInputAsset, bool) { 6002 return &jia, true 6003} 6004 6005// AsJobInputHTTP is the BasicJobInput implementation for JobInputAsset. 6006func (jia JobInputAsset) AsJobInputHTTP() (*JobInputHTTP, bool) { 6007 return nil, false 6008} 6009 6010// AsJobInputSequence is the BasicJobInput implementation for JobInputAsset. 6011func (jia JobInputAsset) AsJobInputSequence() (*JobInputSequence, bool) { 6012 return nil, false 6013} 6014 6015// AsJobInput is the BasicJobInput implementation for JobInputAsset. 6016func (jia JobInputAsset) AsJobInput() (*JobInput, bool) { 6017 return nil, false 6018} 6019 6020// AsBasicJobInput is the BasicJobInput implementation for JobInputAsset. 6021func (jia JobInputAsset) AsBasicJobInput() (BasicJobInput, bool) { 6022 return &jia, true 6023} 6024 6025// UnmarshalJSON is the custom unmarshaler for JobInputAsset struct. 6026func (jia *JobInputAsset) UnmarshalJSON(body []byte) error { 6027 var m map[string]*json.RawMessage 6028 err := json.Unmarshal(body, &m) 6029 if err != nil { 6030 return err 6031 } 6032 for k, v := range m { 6033 switch k { 6034 case "assetName": 6035 if v != nil { 6036 var assetName string 6037 err = json.Unmarshal(*v, &assetName) 6038 if err != nil { 6039 return err 6040 } 6041 jia.AssetName = &assetName 6042 } 6043 case "files": 6044 if v != nil { 6045 var files []string 6046 err = json.Unmarshal(*v, &files) 6047 if err != nil { 6048 return err 6049 } 6050 jia.Files = &files 6051 } 6052 case "start": 6053 if v != nil { 6054 start, err := unmarshalBasicClipTime(*v) 6055 if err != nil { 6056 return err 6057 } 6058 jia.Start = start 6059 } 6060 case "end": 6061 if v != nil { 6062 end, err := unmarshalBasicClipTime(*v) 6063 if err != nil { 6064 return err 6065 } 6066 jia.End = end 6067 } 6068 case "label": 6069 if v != nil { 6070 var label string 6071 err = json.Unmarshal(*v, &label) 6072 if err != nil { 6073 return err 6074 } 6075 jia.Label = &label 6076 } 6077 case "inputDefinitions": 6078 if v != nil { 6079 inputDefinitions, err := unmarshalBasicInputDefinitionArray(*v) 6080 if err != nil { 6081 return err 6082 } 6083 jia.InputDefinitions = &inputDefinitions 6084 } 6085 case "@odata.type": 6086 if v != nil { 6087 var odataType OdataTypeBasicJobInput 6088 err = json.Unmarshal(*v, &odataType) 6089 if err != nil { 6090 return err 6091 } 6092 jia.OdataType = odataType 6093 } 6094 } 6095 } 6096 6097 return nil 6098} 6099 6100// BasicJobInputClip represents input files for a Job. 6101type BasicJobInputClip interface { 6102 AsJobInputAsset() (*JobInputAsset, bool) 6103 AsJobInputHTTP() (*JobInputHTTP, bool) 6104 AsJobInputClip() (*JobInputClip, bool) 6105} 6106 6107// JobInputClip represents input files for a Job. 6108type JobInputClip struct { 6109 // Files - List of files. Required for JobInputHttp. Maximum of 4000 characters each. 6110 Files *[]string `json:"files,omitempty"` 6111 // Start - Defines a point on the timeline of the input media at which processing will start. Defaults to the beginning of the input media. 6112 Start BasicClipTime `json:"start,omitempty"` 6113 // End - Defines a point on the timeline of the input media at which processing will end. Defaults to the end of the input media. 6114 End BasicClipTime `json:"end,omitempty"` 6115 // 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'. 6116 Label *string `json:"label,omitempty"` 6117 // InputDefinitions - Defines a list of InputDefinitions. For each InputDefinition, it defines a list of track selections and related metadata. 6118 InputDefinitions *[]BasicInputDefinition `json:"inputDefinitions,omitempty"` 6119 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6120 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6121} 6122 6123func unmarshalBasicJobInputClip(body []byte) (BasicJobInputClip, error) { 6124 var m map[string]interface{} 6125 err := json.Unmarshal(body, &m) 6126 if err != nil { 6127 return nil, err 6128 } 6129 6130 switch m["@odata.type"] { 6131 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset): 6132 var jia JobInputAsset 6133 err := json.Unmarshal(body, &jia) 6134 return jia, err 6135 case string(OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP): 6136 var jih JobInputHTTP 6137 err := json.Unmarshal(body, &jih) 6138 return jih, err 6139 default: 6140 var jic JobInputClip 6141 err := json.Unmarshal(body, &jic) 6142 return jic, err 6143 } 6144} 6145func unmarshalBasicJobInputClipArray(body []byte) ([]BasicJobInputClip, error) { 6146 var rawMessages []*json.RawMessage 6147 err := json.Unmarshal(body, &rawMessages) 6148 if err != nil { 6149 return nil, err 6150 } 6151 6152 jicArray := make([]BasicJobInputClip, len(rawMessages)) 6153 6154 for index, rawMessage := range rawMessages { 6155 jic, err := unmarshalBasicJobInputClip(*rawMessage) 6156 if err != nil { 6157 return nil, err 6158 } 6159 jicArray[index] = jic 6160 } 6161 return jicArray, nil 6162} 6163 6164// MarshalJSON is the custom marshaler for JobInputClip. 6165func (jic JobInputClip) MarshalJSON() ([]byte, error) { 6166 jic.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip 6167 objectMap := make(map[string]interface{}) 6168 if jic.Files != nil { 6169 objectMap["files"] = jic.Files 6170 } 6171 objectMap["start"] = jic.Start 6172 objectMap["end"] = jic.End 6173 if jic.Label != nil { 6174 objectMap["label"] = jic.Label 6175 } 6176 if jic.InputDefinitions != nil { 6177 objectMap["inputDefinitions"] = jic.InputDefinitions 6178 } 6179 if jic.OdataType != "" { 6180 objectMap["@odata.type"] = jic.OdataType 6181 } 6182 return json.Marshal(objectMap) 6183} 6184 6185// AsJobInputClip is the BasicJobInput implementation for JobInputClip. 6186func (jic JobInputClip) AsJobInputClip() (*JobInputClip, bool) { 6187 return &jic, true 6188} 6189 6190// AsBasicJobInputClip is the BasicJobInput implementation for JobInputClip. 6191func (jic JobInputClip) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6192 return &jic, true 6193} 6194 6195// AsJobInputs is the BasicJobInput implementation for JobInputClip. 6196func (jic JobInputClip) AsJobInputs() (*JobInputs, bool) { 6197 return nil, false 6198} 6199 6200// AsJobInputAsset is the BasicJobInput implementation for JobInputClip. 6201func (jic JobInputClip) AsJobInputAsset() (*JobInputAsset, bool) { 6202 return nil, false 6203} 6204 6205// AsJobInputHTTP is the BasicJobInput implementation for JobInputClip. 6206func (jic JobInputClip) AsJobInputHTTP() (*JobInputHTTP, bool) { 6207 return nil, false 6208} 6209 6210// AsJobInputSequence is the BasicJobInput implementation for JobInputClip. 6211func (jic JobInputClip) AsJobInputSequence() (*JobInputSequence, bool) { 6212 return nil, false 6213} 6214 6215// AsJobInput is the BasicJobInput implementation for JobInputClip. 6216func (jic JobInputClip) AsJobInput() (*JobInput, bool) { 6217 return nil, false 6218} 6219 6220// AsBasicJobInput is the BasicJobInput implementation for JobInputClip. 6221func (jic JobInputClip) AsBasicJobInput() (BasicJobInput, bool) { 6222 return &jic, true 6223} 6224 6225// UnmarshalJSON is the custom unmarshaler for JobInputClip struct. 6226func (jic *JobInputClip) UnmarshalJSON(body []byte) error { 6227 var m map[string]*json.RawMessage 6228 err := json.Unmarshal(body, &m) 6229 if err != nil { 6230 return err 6231 } 6232 for k, v := range m { 6233 switch k { 6234 case "files": 6235 if v != nil { 6236 var files []string 6237 err = json.Unmarshal(*v, &files) 6238 if err != nil { 6239 return err 6240 } 6241 jic.Files = &files 6242 } 6243 case "start": 6244 if v != nil { 6245 start, err := unmarshalBasicClipTime(*v) 6246 if err != nil { 6247 return err 6248 } 6249 jic.Start = start 6250 } 6251 case "end": 6252 if v != nil { 6253 end, err := unmarshalBasicClipTime(*v) 6254 if err != nil { 6255 return err 6256 } 6257 jic.End = end 6258 } 6259 case "label": 6260 if v != nil { 6261 var label string 6262 err = json.Unmarshal(*v, &label) 6263 if err != nil { 6264 return err 6265 } 6266 jic.Label = &label 6267 } 6268 case "inputDefinitions": 6269 if v != nil { 6270 inputDefinitions, err := unmarshalBasicInputDefinitionArray(*v) 6271 if err != nil { 6272 return err 6273 } 6274 jic.InputDefinitions = &inputDefinitions 6275 } 6276 case "@odata.type": 6277 if v != nil { 6278 var odataType OdataTypeBasicJobInput 6279 err = json.Unmarshal(*v, &odataType) 6280 if err != nil { 6281 return err 6282 } 6283 jic.OdataType = odataType 6284 } 6285 } 6286 } 6287 6288 return nil 6289} 6290 6291// JobInputHTTP represents HTTPS job input. 6292type JobInputHTTP struct { 6293 // 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. 6294 BaseURI *string `json:"baseUri,omitempty"` 6295 // Files - List of files. Required for JobInputHttp. Maximum of 4000 characters each. 6296 Files *[]string `json:"files,omitempty"` 6297 // Start - Defines a point on the timeline of the input media at which processing will start. Defaults to the beginning of the input media. 6298 Start BasicClipTime `json:"start,omitempty"` 6299 // End - Defines a point on the timeline of the input media at which processing will end. Defaults to the end of the input media. 6300 End BasicClipTime `json:"end,omitempty"` 6301 // 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'. 6302 Label *string `json:"label,omitempty"` 6303 // InputDefinitions - Defines a list of InputDefinitions. For each InputDefinition, it defines a list of track selections and related metadata. 6304 InputDefinitions *[]BasicInputDefinition `json:"inputDefinitions,omitempty"` 6305 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6306 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6307} 6308 6309// MarshalJSON is the custom marshaler for JobInputHTTP. 6310func (jih JobInputHTTP) MarshalJSON() ([]byte, error) { 6311 jih.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP 6312 objectMap := make(map[string]interface{}) 6313 if jih.BaseURI != nil { 6314 objectMap["baseUri"] = jih.BaseURI 6315 } 6316 if jih.Files != nil { 6317 objectMap["files"] = jih.Files 6318 } 6319 objectMap["start"] = jih.Start 6320 objectMap["end"] = jih.End 6321 if jih.Label != nil { 6322 objectMap["label"] = jih.Label 6323 } 6324 if jih.InputDefinitions != nil { 6325 objectMap["inputDefinitions"] = jih.InputDefinitions 6326 } 6327 if jih.OdataType != "" { 6328 objectMap["@odata.type"] = jih.OdataType 6329 } 6330 return json.Marshal(objectMap) 6331} 6332 6333// AsJobInputClip is the BasicJobInput implementation for JobInputHTTP. 6334func (jih JobInputHTTP) AsJobInputClip() (*JobInputClip, bool) { 6335 return nil, false 6336} 6337 6338// AsBasicJobInputClip is the BasicJobInput implementation for JobInputHTTP. 6339func (jih JobInputHTTP) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6340 return &jih, true 6341} 6342 6343// AsJobInputs is the BasicJobInput implementation for JobInputHTTP. 6344func (jih JobInputHTTP) AsJobInputs() (*JobInputs, bool) { 6345 return nil, false 6346} 6347 6348// AsJobInputAsset is the BasicJobInput implementation for JobInputHTTP. 6349func (jih JobInputHTTP) AsJobInputAsset() (*JobInputAsset, bool) { 6350 return nil, false 6351} 6352 6353// AsJobInputHTTP is the BasicJobInput implementation for JobInputHTTP. 6354func (jih JobInputHTTP) AsJobInputHTTP() (*JobInputHTTP, bool) { 6355 return &jih, true 6356} 6357 6358// AsJobInputSequence is the BasicJobInput implementation for JobInputHTTP. 6359func (jih JobInputHTTP) AsJobInputSequence() (*JobInputSequence, bool) { 6360 return nil, false 6361} 6362 6363// AsJobInput is the BasicJobInput implementation for JobInputHTTP. 6364func (jih JobInputHTTP) AsJobInput() (*JobInput, bool) { 6365 return nil, false 6366} 6367 6368// AsBasicJobInput is the BasicJobInput implementation for JobInputHTTP. 6369func (jih JobInputHTTP) AsBasicJobInput() (BasicJobInput, bool) { 6370 return &jih, true 6371} 6372 6373// UnmarshalJSON is the custom unmarshaler for JobInputHTTP struct. 6374func (jih *JobInputHTTP) UnmarshalJSON(body []byte) error { 6375 var m map[string]*json.RawMessage 6376 err := json.Unmarshal(body, &m) 6377 if err != nil { 6378 return err 6379 } 6380 for k, v := range m { 6381 switch k { 6382 case "baseUri": 6383 if v != nil { 6384 var baseURI string 6385 err = json.Unmarshal(*v, &baseURI) 6386 if err != nil { 6387 return err 6388 } 6389 jih.BaseURI = &baseURI 6390 } 6391 case "files": 6392 if v != nil { 6393 var files []string 6394 err = json.Unmarshal(*v, &files) 6395 if err != nil { 6396 return err 6397 } 6398 jih.Files = &files 6399 } 6400 case "start": 6401 if v != nil { 6402 start, err := unmarshalBasicClipTime(*v) 6403 if err != nil { 6404 return err 6405 } 6406 jih.Start = start 6407 } 6408 case "end": 6409 if v != nil { 6410 end, err := unmarshalBasicClipTime(*v) 6411 if err != nil { 6412 return err 6413 } 6414 jih.End = end 6415 } 6416 case "label": 6417 if v != nil { 6418 var label string 6419 err = json.Unmarshal(*v, &label) 6420 if err != nil { 6421 return err 6422 } 6423 jih.Label = &label 6424 } 6425 case "inputDefinitions": 6426 if v != nil { 6427 inputDefinitions, err := unmarshalBasicInputDefinitionArray(*v) 6428 if err != nil { 6429 return err 6430 } 6431 jih.InputDefinitions = &inputDefinitions 6432 } 6433 case "@odata.type": 6434 if v != nil { 6435 var odataType OdataTypeBasicJobInput 6436 err = json.Unmarshal(*v, &odataType) 6437 if err != nil { 6438 return err 6439 } 6440 jih.OdataType = odataType 6441 } 6442 } 6443 } 6444 6445 return nil 6446} 6447 6448// JobInputs describes a list of inputs to a Job. 6449type JobInputs struct { 6450 // Inputs - List of inputs to a Job. 6451 Inputs *[]BasicJobInput `json:"inputs,omitempty"` 6452 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6453 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6454} 6455 6456// MarshalJSON is the custom marshaler for JobInputs. 6457func (ji JobInputs) MarshalJSON() ([]byte, error) { 6458 ji.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs 6459 objectMap := make(map[string]interface{}) 6460 if ji.Inputs != nil { 6461 objectMap["inputs"] = ji.Inputs 6462 } 6463 if ji.OdataType != "" { 6464 objectMap["@odata.type"] = ji.OdataType 6465 } 6466 return json.Marshal(objectMap) 6467} 6468 6469// AsJobInputClip is the BasicJobInput implementation for JobInputs. 6470func (ji JobInputs) AsJobInputClip() (*JobInputClip, bool) { 6471 return nil, false 6472} 6473 6474// AsBasicJobInputClip is the BasicJobInput implementation for JobInputs. 6475func (ji JobInputs) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6476 return nil, false 6477} 6478 6479// AsJobInputs is the BasicJobInput implementation for JobInputs. 6480func (ji JobInputs) AsJobInputs() (*JobInputs, bool) { 6481 return &ji, true 6482} 6483 6484// AsJobInputAsset is the BasicJobInput implementation for JobInputs. 6485func (ji JobInputs) AsJobInputAsset() (*JobInputAsset, bool) { 6486 return nil, false 6487} 6488 6489// AsJobInputHTTP is the BasicJobInput implementation for JobInputs. 6490func (ji JobInputs) AsJobInputHTTP() (*JobInputHTTP, bool) { 6491 return nil, false 6492} 6493 6494// AsJobInputSequence is the BasicJobInput implementation for JobInputs. 6495func (ji JobInputs) AsJobInputSequence() (*JobInputSequence, bool) { 6496 return nil, false 6497} 6498 6499// AsJobInput is the BasicJobInput implementation for JobInputs. 6500func (ji JobInputs) AsJobInput() (*JobInput, bool) { 6501 return nil, false 6502} 6503 6504// AsBasicJobInput is the BasicJobInput implementation for JobInputs. 6505func (ji JobInputs) AsBasicJobInput() (BasicJobInput, bool) { 6506 return &ji, true 6507} 6508 6509// UnmarshalJSON is the custom unmarshaler for JobInputs struct. 6510func (ji *JobInputs) UnmarshalJSON(body []byte) error { 6511 var m map[string]*json.RawMessage 6512 err := json.Unmarshal(body, &m) 6513 if err != nil { 6514 return err 6515 } 6516 for k, v := range m { 6517 switch k { 6518 case "inputs": 6519 if v != nil { 6520 inputs, err := unmarshalBasicJobInputArray(*v) 6521 if err != nil { 6522 return err 6523 } 6524 ji.Inputs = &inputs 6525 } 6526 case "@odata.type": 6527 if v != nil { 6528 var odataType OdataTypeBasicJobInput 6529 err = json.Unmarshal(*v, &odataType) 6530 if err != nil { 6531 return err 6532 } 6533 ji.OdataType = odataType 6534 } 6535 } 6536 } 6537 6538 return nil 6539} 6540 6541// JobInputSequence a Sequence contains an ordered list of Clips where each clip is a JobInput. The 6542// Sequence will be treated as a single input. 6543type JobInputSequence struct { 6544 // Inputs - JobInputs that make up the timeline. 6545 Inputs *[]BasicJobInputClip `json:"inputs,omitempty"` 6546 // OdataType - Possible values include: 'OdataTypeBasicJobInputOdataTypeJobInput', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputClip', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputs', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputAsset', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputHTTP', 'OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence' 6547 OdataType OdataTypeBasicJobInput `json:"@odata.type,omitempty"` 6548} 6549 6550// MarshalJSON is the custom marshaler for JobInputSequence. 6551func (jis JobInputSequence) MarshalJSON() ([]byte, error) { 6552 jis.OdataType = OdataTypeBasicJobInputOdataTypeMicrosoftMediaJobInputSequence 6553 objectMap := make(map[string]interface{}) 6554 if jis.Inputs != nil { 6555 objectMap["inputs"] = jis.Inputs 6556 } 6557 if jis.OdataType != "" { 6558 objectMap["@odata.type"] = jis.OdataType 6559 } 6560 return json.Marshal(objectMap) 6561} 6562 6563// AsJobInputClip is the BasicJobInput implementation for JobInputSequence. 6564func (jis JobInputSequence) AsJobInputClip() (*JobInputClip, bool) { 6565 return nil, false 6566} 6567 6568// AsBasicJobInputClip is the BasicJobInput implementation for JobInputSequence. 6569func (jis JobInputSequence) AsBasicJobInputClip() (BasicJobInputClip, bool) { 6570 return nil, false 6571} 6572 6573// AsJobInputs is the BasicJobInput implementation for JobInputSequence. 6574func (jis JobInputSequence) AsJobInputs() (*JobInputs, bool) { 6575 return nil, false 6576} 6577 6578// AsJobInputAsset is the BasicJobInput implementation for JobInputSequence. 6579func (jis JobInputSequence) AsJobInputAsset() (*JobInputAsset, bool) { 6580 return nil, false 6581} 6582 6583// AsJobInputHTTP is the BasicJobInput implementation for JobInputSequence. 6584func (jis JobInputSequence) AsJobInputHTTP() (*JobInputHTTP, bool) { 6585 return nil, false 6586} 6587 6588// AsJobInputSequence is the BasicJobInput implementation for JobInputSequence. 6589func (jis JobInputSequence) AsJobInputSequence() (*JobInputSequence, bool) { 6590 return &jis, true 6591} 6592 6593// AsJobInput is the BasicJobInput implementation for JobInputSequence. 6594func (jis JobInputSequence) AsJobInput() (*JobInput, bool) { 6595 return nil, false 6596} 6597 6598// AsBasicJobInput is the BasicJobInput implementation for JobInputSequence. 6599func (jis JobInputSequence) AsBasicJobInput() (BasicJobInput, bool) { 6600 return &jis, true 6601} 6602 6603// UnmarshalJSON is the custom unmarshaler for JobInputSequence struct. 6604func (jis *JobInputSequence) UnmarshalJSON(body []byte) error { 6605 var m map[string]*json.RawMessage 6606 err := json.Unmarshal(body, &m) 6607 if err != nil { 6608 return err 6609 } 6610 for k, v := range m { 6611 switch k { 6612 case "inputs": 6613 if v != nil { 6614 inputs, err := unmarshalBasicJobInputClipArray(*v) 6615 if err != nil { 6616 return err 6617 } 6618 jis.Inputs = &inputs 6619 } 6620 case "@odata.type": 6621 if v != nil { 6622 var odataType OdataTypeBasicJobInput 6623 err = json.Unmarshal(*v, &odataType) 6624 if err != nil { 6625 return err 6626 } 6627 jis.OdataType = odataType 6628 } 6629 } 6630 } 6631 6632 return nil 6633} 6634 6635// BasicJobOutput describes all the properties of a JobOutput. 6636type BasicJobOutput interface { 6637 AsJobOutputAsset() (*JobOutputAsset, bool) 6638 AsJobOutput() (*JobOutput, bool) 6639} 6640 6641// JobOutput describes all the properties of a JobOutput. 6642type JobOutput struct { 6643 // Error - READ-ONLY; If the JobOutput is in the Error state, it contains the details of the error. 6644 Error *JobError `json:"error,omitempty"` 6645 // State - READ-ONLY; Describes the state of the JobOutput. Possible values include: 'JobStateCanceled', 'JobStateCanceling', 'JobStateError', 'JobStateFinished', 'JobStateProcessing', 'JobStateQueued', 'JobStateScheduled' 6646 State JobState `json:"state,omitempty"` 6647 // 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. 6648 Progress *int32 `json:"progress,omitempty"` 6649 // 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. 6650 Label *string `json:"label,omitempty"` 6651 // StartTime - READ-ONLY; The UTC date and time at which this Job Output began processing. 6652 StartTime *date.Time `json:"startTime,omitempty"` 6653 // EndTime - READ-ONLY; The UTC date and time at which this Job Output finished processing. 6654 EndTime *date.Time `json:"endTime,omitempty"` 6655 // OdataType - Possible values include: 'OdataTypeBasicJobOutputOdataTypeJobOutput', 'OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset' 6656 OdataType OdataTypeBasicJobOutput `json:"@odata.type,omitempty"` 6657} 6658 6659func unmarshalBasicJobOutput(body []byte) (BasicJobOutput, error) { 6660 var m map[string]interface{} 6661 err := json.Unmarshal(body, &m) 6662 if err != nil { 6663 return nil, err 6664 } 6665 6666 switch m["@odata.type"] { 6667 case string(OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset): 6668 var joa JobOutputAsset 6669 err := json.Unmarshal(body, &joa) 6670 return joa, err 6671 default: 6672 var jo JobOutput 6673 err := json.Unmarshal(body, &jo) 6674 return jo, err 6675 } 6676} 6677func unmarshalBasicJobOutputArray(body []byte) ([]BasicJobOutput, error) { 6678 var rawMessages []*json.RawMessage 6679 err := json.Unmarshal(body, &rawMessages) 6680 if err != nil { 6681 return nil, err 6682 } 6683 6684 joArray := make([]BasicJobOutput, len(rawMessages)) 6685 6686 for index, rawMessage := range rawMessages { 6687 jo, err := unmarshalBasicJobOutput(*rawMessage) 6688 if err != nil { 6689 return nil, err 6690 } 6691 joArray[index] = jo 6692 } 6693 return joArray, nil 6694} 6695 6696// MarshalJSON is the custom marshaler for JobOutput. 6697func (jo JobOutput) MarshalJSON() ([]byte, error) { 6698 jo.OdataType = OdataTypeBasicJobOutputOdataTypeJobOutput 6699 objectMap := make(map[string]interface{}) 6700 if jo.Label != nil { 6701 objectMap["label"] = jo.Label 6702 } 6703 if jo.OdataType != "" { 6704 objectMap["@odata.type"] = jo.OdataType 6705 } 6706 return json.Marshal(objectMap) 6707} 6708 6709// AsJobOutputAsset is the BasicJobOutput implementation for JobOutput. 6710func (jo JobOutput) AsJobOutputAsset() (*JobOutputAsset, bool) { 6711 return nil, false 6712} 6713 6714// AsJobOutput is the BasicJobOutput implementation for JobOutput. 6715func (jo JobOutput) AsJobOutput() (*JobOutput, bool) { 6716 return &jo, true 6717} 6718 6719// AsBasicJobOutput is the BasicJobOutput implementation for JobOutput. 6720func (jo JobOutput) AsBasicJobOutput() (BasicJobOutput, bool) { 6721 return &jo, true 6722} 6723 6724// JobOutputAsset represents an Asset used as a JobOutput. 6725type JobOutputAsset struct { 6726 // AssetName - The name of the output Asset. 6727 AssetName *string `json:"assetName,omitempty"` 6728 // Error - READ-ONLY; If the JobOutput is in the Error state, it contains the details of the error. 6729 Error *JobError `json:"error,omitempty"` 6730 // State - READ-ONLY; Describes the state of the JobOutput. Possible values include: 'JobStateCanceled', 'JobStateCanceling', 'JobStateError', 'JobStateFinished', 'JobStateProcessing', 'JobStateQueued', 'JobStateScheduled' 6731 State JobState `json:"state,omitempty"` 6732 // 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. 6733 Progress *int32 `json:"progress,omitempty"` 6734 // 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. 6735 Label *string `json:"label,omitempty"` 6736 // StartTime - READ-ONLY; The UTC date and time at which this Job Output began processing. 6737 StartTime *date.Time `json:"startTime,omitempty"` 6738 // EndTime - READ-ONLY; The UTC date and time at which this Job Output finished processing. 6739 EndTime *date.Time `json:"endTime,omitempty"` 6740 // OdataType - Possible values include: 'OdataTypeBasicJobOutputOdataTypeJobOutput', 'OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset' 6741 OdataType OdataTypeBasicJobOutput `json:"@odata.type,omitempty"` 6742} 6743 6744// MarshalJSON is the custom marshaler for JobOutputAsset. 6745func (joa JobOutputAsset) MarshalJSON() ([]byte, error) { 6746 joa.OdataType = OdataTypeBasicJobOutputOdataTypeMicrosoftMediaJobOutputAsset 6747 objectMap := make(map[string]interface{}) 6748 if joa.AssetName != nil { 6749 objectMap["assetName"] = joa.AssetName 6750 } 6751 if joa.Label != nil { 6752 objectMap["label"] = joa.Label 6753 } 6754 if joa.OdataType != "" { 6755 objectMap["@odata.type"] = joa.OdataType 6756 } 6757 return json.Marshal(objectMap) 6758} 6759 6760// AsJobOutputAsset is the BasicJobOutput implementation for JobOutputAsset. 6761func (joa JobOutputAsset) AsJobOutputAsset() (*JobOutputAsset, bool) { 6762 return &joa, true 6763} 6764 6765// AsJobOutput is the BasicJobOutput implementation for JobOutputAsset. 6766func (joa JobOutputAsset) AsJobOutput() (*JobOutput, bool) { 6767 return nil, false 6768} 6769 6770// AsBasicJobOutput is the BasicJobOutput implementation for JobOutputAsset. 6771func (joa JobOutputAsset) AsBasicJobOutput() (BasicJobOutput, bool) { 6772 return &joa, true 6773} 6774 6775// JobProperties properties of the Job. 6776type JobProperties struct { 6777 // Created - READ-ONLY; The UTC date and time when the customer has created the Job, in 'YYYY-MM-DDThh:mm:ssZ' format. 6778 Created *date.Time `json:"created,omitempty"` 6779 // State - READ-ONLY; The current state of the job. Possible values include: 'JobStateCanceled', 'JobStateCanceling', 'JobStateError', 'JobStateFinished', 'JobStateProcessing', 'JobStateQueued', 'JobStateScheduled' 6780 State JobState `json:"state,omitempty"` 6781 // Description - Optional customer supplied description of the Job. 6782 Description *string `json:"description,omitempty"` 6783 // Input - The inputs for the Job. 6784 Input BasicJobInput `json:"input,omitempty"` 6785 // LastModified - READ-ONLY; The UTC date and time when the customer has last updated the Job, in 'YYYY-MM-DDThh:mm:ssZ' format. 6786 LastModified *date.Time `json:"lastModified,omitempty"` 6787 // Outputs - The outputs for the Job. 6788 Outputs *[]BasicJobOutput `json:"outputs,omitempty"` 6789 // 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' 6790 Priority Priority `json:"priority,omitempty"` 6791 // CorrelationData - Customer provided key, value pairs that will be returned in Job and JobOutput state events. 6792 CorrelationData map[string]*string `json:"correlationData"` 6793 // StartTime - READ-ONLY; The UTC date and time at which this Job began processing. 6794 StartTime *date.Time `json:"startTime,omitempty"` 6795 // EndTime - READ-ONLY; The UTC date and time at which this Job finished processing. 6796 EndTime *date.Time `json:"endTime,omitempty"` 6797} 6798 6799// MarshalJSON is the custom marshaler for JobProperties. 6800func (jp JobProperties) MarshalJSON() ([]byte, error) { 6801 objectMap := make(map[string]interface{}) 6802 if jp.Description != nil { 6803 objectMap["description"] = jp.Description 6804 } 6805 objectMap["input"] = jp.Input 6806 if jp.Outputs != nil { 6807 objectMap["outputs"] = jp.Outputs 6808 } 6809 if jp.Priority != "" { 6810 objectMap["priority"] = jp.Priority 6811 } 6812 if jp.CorrelationData != nil { 6813 objectMap["correlationData"] = jp.CorrelationData 6814 } 6815 return json.Marshal(objectMap) 6816} 6817 6818// UnmarshalJSON is the custom unmarshaler for JobProperties struct. 6819func (jp *JobProperties) UnmarshalJSON(body []byte) error { 6820 var m map[string]*json.RawMessage 6821 err := json.Unmarshal(body, &m) 6822 if err != nil { 6823 return err 6824 } 6825 for k, v := range m { 6826 switch k { 6827 case "created": 6828 if v != nil { 6829 var created date.Time 6830 err = json.Unmarshal(*v, &created) 6831 if err != nil { 6832 return err 6833 } 6834 jp.Created = &created 6835 } 6836 case "state": 6837 if v != nil { 6838 var state JobState 6839 err = json.Unmarshal(*v, &state) 6840 if err != nil { 6841 return err 6842 } 6843 jp.State = state 6844 } 6845 case "description": 6846 if v != nil { 6847 var description string 6848 err = json.Unmarshal(*v, &description) 6849 if err != nil { 6850 return err 6851 } 6852 jp.Description = &description 6853 } 6854 case "input": 6855 if v != nil { 6856 input, err := unmarshalBasicJobInput(*v) 6857 if err != nil { 6858 return err 6859 } 6860 jp.Input = input 6861 } 6862 case "lastModified": 6863 if v != nil { 6864 var lastModified date.Time 6865 err = json.Unmarshal(*v, &lastModified) 6866 if err != nil { 6867 return err 6868 } 6869 jp.LastModified = &lastModified 6870 } 6871 case "outputs": 6872 if v != nil { 6873 outputs, err := unmarshalBasicJobOutputArray(*v) 6874 if err != nil { 6875 return err 6876 } 6877 jp.Outputs = &outputs 6878 } 6879 case "priority": 6880 if v != nil { 6881 var priority Priority 6882 err = json.Unmarshal(*v, &priority) 6883 if err != nil { 6884 return err 6885 } 6886 jp.Priority = priority 6887 } 6888 case "correlationData": 6889 if v != nil { 6890 var correlationData map[string]*string 6891 err = json.Unmarshal(*v, &correlationData) 6892 if err != nil { 6893 return err 6894 } 6895 jp.CorrelationData = correlationData 6896 } 6897 case "startTime": 6898 if v != nil { 6899 var startTime date.Time 6900 err = json.Unmarshal(*v, &startTime) 6901 if err != nil { 6902 return err 6903 } 6904 jp.StartTime = &startTime 6905 } 6906 case "endTime": 6907 if v != nil { 6908 var endTime date.Time 6909 err = json.Unmarshal(*v, &endTime) 6910 if err != nil { 6911 return err 6912 } 6913 jp.EndTime = &endTime 6914 } 6915 } 6916 } 6917 6918 return nil 6919} 6920 6921// JpgFormat describes the settings for producing JPEG thumbnails. 6922type JpgFormat struct { 6923 // 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. 6924 FilenamePattern *string `json:"filenamePattern,omitempty"` 6925 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 6926 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 6927} 6928 6929// MarshalJSON is the custom marshaler for JpgFormat. 6930func (jf JpgFormat) MarshalJSON() ([]byte, error) { 6931 jf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat 6932 objectMap := make(map[string]interface{}) 6933 if jf.FilenamePattern != nil { 6934 objectMap["filenamePattern"] = jf.FilenamePattern 6935 } 6936 if jf.OdataType != "" { 6937 objectMap["@odata.type"] = jf.OdataType 6938 } 6939 return json.Marshal(objectMap) 6940} 6941 6942// AsImageFormat is the BasicFormat implementation for JpgFormat. 6943func (jf JpgFormat) AsImageFormat() (*ImageFormat, bool) { 6944 return nil, false 6945} 6946 6947// AsBasicImageFormat is the BasicFormat implementation for JpgFormat. 6948func (jf JpgFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 6949 return &jf, true 6950} 6951 6952// AsJpgFormat is the BasicFormat implementation for JpgFormat. 6953func (jf JpgFormat) AsJpgFormat() (*JpgFormat, bool) { 6954 return &jf, true 6955} 6956 6957// AsPngFormat is the BasicFormat implementation for JpgFormat. 6958func (jf JpgFormat) AsPngFormat() (*PngFormat, bool) { 6959 return nil, false 6960} 6961 6962// AsMultiBitrateFormat is the BasicFormat implementation for JpgFormat. 6963func (jf JpgFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 6964 return nil, false 6965} 6966 6967// AsBasicMultiBitrateFormat is the BasicFormat implementation for JpgFormat. 6968func (jf JpgFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 6969 return nil, false 6970} 6971 6972// AsMp4Format is the BasicFormat implementation for JpgFormat. 6973func (jf JpgFormat) AsMp4Format() (*Mp4Format, bool) { 6974 return nil, false 6975} 6976 6977// AsTransportStreamFormat is the BasicFormat implementation for JpgFormat. 6978func (jf JpgFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 6979 return nil, false 6980} 6981 6982// AsFormat is the BasicFormat implementation for JpgFormat. 6983func (jf JpgFormat) AsFormat() (*Format, bool) { 6984 return nil, false 6985} 6986 6987// AsBasicFormat is the BasicFormat implementation for JpgFormat. 6988func (jf JpgFormat) AsBasicFormat() (BasicFormat, bool) { 6989 return &jf, true 6990} 6991 6992// JpgImage describes the properties for producing a series of JPEG images from the input video. 6993type JpgImage struct { 6994 // Layers - A collection of output JPEG image layers to be produced by the encoder. 6995 Layers *[]JpgLayer `json:"layers,omitempty"` 6996 // 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. 6997 SpriteColumn *int32 `json:"spriteColumn,omitempty"` 6998 // 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}. 6999 Start *string `json:"start,omitempty"` 7000 // 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. 7001 Step *string `json:"step,omitempty"` 7002 // 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. 7003 Range *string `json:"range,omitempty"` 7004 // 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. 7005 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 7006 // 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' 7007 StretchMode StretchMode `json:"stretchMode,omitempty"` 7008 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 7009 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 7010 // Label - An optional label for the codec. The label can be used to control muxing behavior. 7011 Label *string `json:"label,omitempty"` 7012 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 7013 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 7014} 7015 7016// MarshalJSON is the custom marshaler for JpgImage. 7017func (ji JpgImage) MarshalJSON() ([]byte, error) { 7018 ji.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage 7019 objectMap := make(map[string]interface{}) 7020 if ji.Layers != nil { 7021 objectMap["layers"] = ji.Layers 7022 } 7023 if ji.SpriteColumn != nil { 7024 objectMap["spriteColumn"] = ji.SpriteColumn 7025 } 7026 if ji.Start != nil { 7027 objectMap["start"] = ji.Start 7028 } 7029 if ji.Step != nil { 7030 objectMap["step"] = ji.Step 7031 } 7032 if ji.Range != nil { 7033 objectMap["range"] = ji.Range 7034 } 7035 if ji.KeyFrameInterval != nil { 7036 objectMap["keyFrameInterval"] = ji.KeyFrameInterval 7037 } 7038 if ji.StretchMode != "" { 7039 objectMap["stretchMode"] = ji.StretchMode 7040 } 7041 if ji.SyncMode != "" { 7042 objectMap["syncMode"] = ji.SyncMode 7043 } 7044 if ji.Label != nil { 7045 objectMap["label"] = ji.Label 7046 } 7047 if ji.OdataType != "" { 7048 objectMap["@odata.type"] = ji.OdataType 7049 } 7050 return json.Marshal(objectMap) 7051} 7052 7053// AsAudio is the BasicCodec implementation for JpgImage. 7054func (ji JpgImage) AsAudio() (*Audio, bool) { 7055 return nil, false 7056} 7057 7058// AsBasicAudio is the BasicCodec implementation for JpgImage. 7059func (ji JpgImage) AsBasicAudio() (BasicAudio, bool) { 7060 return nil, false 7061} 7062 7063// AsAacAudio is the BasicCodec implementation for JpgImage. 7064func (ji JpgImage) AsAacAudio() (*AacAudio, bool) { 7065 return nil, false 7066} 7067 7068// AsVideo is the BasicCodec implementation for JpgImage. 7069func (ji JpgImage) AsVideo() (*Video, bool) { 7070 return nil, false 7071} 7072 7073// AsBasicVideo is the BasicCodec implementation for JpgImage. 7074func (ji JpgImage) AsBasicVideo() (BasicVideo, bool) { 7075 return &ji, true 7076} 7077 7078// AsH265Video is the BasicCodec implementation for JpgImage. 7079func (ji JpgImage) AsH265Video() (*H265Video, bool) { 7080 return nil, false 7081} 7082 7083// AsCopyVideo is the BasicCodec implementation for JpgImage. 7084func (ji JpgImage) AsCopyVideo() (*CopyVideo, bool) { 7085 return nil, false 7086} 7087 7088// AsImage is the BasicCodec implementation for JpgImage. 7089func (ji JpgImage) AsImage() (*Image, bool) { 7090 return nil, false 7091} 7092 7093// AsBasicImage is the BasicCodec implementation for JpgImage. 7094func (ji JpgImage) AsBasicImage() (BasicImage, bool) { 7095 return &ji, true 7096} 7097 7098// AsCopyAudio is the BasicCodec implementation for JpgImage. 7099func (ji JpgImage) AsCopyAudio() (*CopyAudio, bool) { 7100 return nil, false 7101} 7102 7103// AsH264Video is the BasicCodec implementation for JpgImage. 7104func (ji JpgImage) AsH264Video() (*H264Video, bool) { 7105 return nil, false 7106} 7107 7108// AsJpgImage is the BasicCodec implementation for JpgImage. 7109func (ji JpgImage) AsJpgImage() (*JpgImage, bool) { 7110 return &ji, true 7111} 7112 7113// AsPngImage is the BasicCodec implementation for JpgImage. 7114func (ji JpgImage) AsPngImage() (*PngImage, bool) { 7115 return nil, false 7116} 7117 7118// AsCodec is the BasicCodec implementation for JpgImage. 7119func (ji JpgImage) AsCodec() (*Codec, bool) { 7120 return nil, false 7121} 7122 7123// AsBasicCodec is the BasicCodec implementation for JpgImage. 7124func (ji JpgImage) AsBasicCodec() (BasicCodec, bool) { 7125 return &ji, true 7126} 7127 7128// JpgLayer describes the settings to produce a JPEG image from the input video. 7129type JpgLayer struct { 7130 // Quality - The compression quality of the JPEG output. Range is from 0-100 and the default is 70. 7131 Quality *int32 `json:"quality,omitempty"` 7132 // 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. 7133 Width *string `json:"width,omitempty"` 7134 // 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. 7135 Height *string `json:"height,omitempty"` 7136 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 7137 Label *string `json:"label,omitempty"` 7138 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 7139 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 7140} 7141 7142// MarshalJSON is the custom marshaler for JpgLayer. 7143func (jl JpgLayer) MarshalJSON() ([]byte, error) { 7144 jl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer 7145 objectMap := make(map[string]interface{}) 7146 if jl.Quality != nil { 7147 objectMap["quality"] = jl.Quality 7148 } 7149 if jl.Width != nil { 7150 objectMap["width"] = jl.Width 7151 } 7152 if jl.Height != nil { 7153 objectMap["height"] = jl.Height 7154 } 7155 if jl.Label != nil { 7156 objectMap["label"] = jl.Label 7157 } 7158 if jl.OdataType != "" { 7159 objectMap["@odata.type"] = jl.OdataType 7160 } 7161 return json.Marshal(objectMap) 7162} 7163 7164// AsH265VideoLayer is the BasicLayer implementation for JpgLayer. 7165func (jl JpgLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 7166 return nil, false 7167} 7168 7169// AsBasicH265VideoLayer is the BasicLayer implementation for JpgLayer. 7170func (jl JpgLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 7171 return nil, false 7172} 7173 7174// AsH265Layer is the BasicLayer implementation for JpgLayer. 7175func (jl JpgLayer) AsH265Layer() (*H265Layer, bool) { 7176 return nil, false 7177} 7178 7179// AsVideoLayer is the BasicLayer implementation for JpgLayer. 7180func (jl JpgLayer) AsVideoLayer() (*VideoLayer, bool) { 7181 return nil, false 7182} 7183 7184// AsBasicVideoLayer is the BasicLayer implementation for JpgLayer. 7185func (jl JpgLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 7186 return nil, false 7187} 7188 7189// AsH264Layer is the BasicLayer implementation for JpgLayer. 7190func (jl JpgLayer) AsH264Layer() (*H264Layer, bool) { 7191 return nil, false 7192} 7193 7194// AsJpgLayer is the BasicLayer implementation for JpgLayer. 7195func (jl JpgLayer) AsJpgLayer() (*JpgLayer, bool) { 7196 return &jl, true 7197} 7198 7199// AsPngLayer is the BasicLayer implementation for JpgLayer. 7200func (jl JpgLayer) AsPngLayer() (*PngLayer, bool) { 7201 return nil, false 7202} 7203 7204// AsLayer is the BasicLayer implementation for JpgLayer. 7205func (jl JpgLayer) AsLayer() (*Layer, bool) { 7206 return nil, false 7207} 7208 7209// AsBasicLayer is the BasicLayer implementation for JpgLayer. 7210func (jl JpgLayer) AsBasicLayer() (BasicLayer, bool) { 7211 return &jl, true 7212} 7213 7214// KeyDelivery ... 7215type KeyDelivery struct { 7216 // AccessControl - The access control properties for Key Delivery. 7217 AccessControl *AccessControl `json:"accessControl,omitempty"` 7218} 7219 7220// KeyVaultProperties ... 7221type KeyVaultProperties struct { 7222 // 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). 7223 KeyIdentifier *string `json:"keyIdentifier,omitempty"` 7224 // CurrentKeyIdentifier - READ-ONLY; The current key used to encrypt the Media Services account, including the key version. 7225 CurrentKeyIdentifier *string `json:"currentKeyIdentifier,omitempty"` 7226} 7227 7228// MarshalJSON is the custom marshaler for KeyVaultProperties. 7229func (kvp KeyVaultProperties) MarshalJSON() ([]byte, error) { 7230 objectMap := make(map[string]interface{}) 7231 if kvp.KeyIdentifier != nil { 7232 objectMap["keyIdentifier"] = kvp.KeyIdentifier 7233 } 7234 return json.Marshal(objectMap) 7235} 7236 7237// BasicLayer the encoder can be configured to produce video and/or images (thumbnails) at different resolutions, by 7238// specifying a layer for each desired resolution. A layer represents the properties for the video or image at a 7239// resolution. 7240type BasicLayer interface { 7241 AsH265VideoLayer() (*H265VideoLayer, bool) 7242 AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) 7243 AsH265Layer() (*H265Layer, bool) 7244 AsVideoLayer() (*VideoLayer, bool) 7245 AsBasicVideoLayer() (BasicVideoLayer, bool) 7246 AsH264Layer() (*H264Layer, bool) 7247 AsJpgLayer() (*JpgLayer, bool) 7248 AsPngLayer() (*PngLayer, bool) 7249 AsLayer() (*Layer, bool) 7250} 7251 7252// Layer the encoder can be configured to produce video and/or images (thumbnails) at different resolutions, by 7253// specifying a layer for each desired resolution. A layer represents the properties for the video or image at 7254// a resolution. 7255type Layer struct { 7256 // 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. 7257 Width *string `json:"width,omitempty"` 7258 // 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. 7259 Height *string `json:"height,omitempty"` 7260 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 7261 Label *string `json:"label,omitempty"` 7262 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 7263 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 7264} 7265 7266func unmarshalBasicLayer(body []byte) (BasicLayer, error) { 7267 var m map[string]interface{} 7268 err := json.Unmarshal(body, &m) 7269 if err != nil { 7270 return nil, err 7271 } 7272 7273 switch m["@odata.type"] { 7274 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer): 7275 var hvl H265VideoLayer 7276 err := json.Unmarshal(body, &hvl) 7277 return hvl, err 7278 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer): 7279 var hl H265Layer 7280 err := json.Unmarshal(body, &hl) 7281 return hl, err 7282 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer): 7283 var vl VideoLayer 7284 err := json.Unmarshal(body, &vl) 7285 return vl, err 7286 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer): 7287 var hl H264Layer 7288 err := json.Unmarshal(body, &hl) 7289 return hl, err 7290 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer): 7291 var jl JpgLayer 7292 err := json.Unmarshal(body, &jl) 7293 return jl, err 7294 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer): 7295 var pl PngLayer 7296 err := json.Unmarshal(body, &pl) 7297 return pl, err 7298 default: 7299 var l Layer 7300 err := json.Unmarshal(body, &l) 7301 return l, err 7302 } 7303} 7304func unmarshalBasicLayerArray(body []byte) ([]BasicLayer, error) { 7305 var rawMessages []*json.RawMessage 7306 err := json.Unmarshal(body, &rawMessages) 7307 if err != nil { 7308 return nil, err 7309 } 7310 7311 lArray := make([]BasicLayer, len(rawMessages)) 7312 7313 for index, rawMessage := range rawMessages { 7314 l, err := unmarshalBasicLayer(*rawMessage) 7315 if err != nil { 7316 return nil, err 7317 } 7318 lArray[index] = l 7319 } 7320 return lArray, nil 7321} 7322 7323// MarshalJSON is the custom marshaler for Layer. 7324func (l Layer) MarshalJSON() ([]byte, error) { 7325 l.OdataType = OdataTypeBasicLayerOdataTypeLayer 7326 objectMap := make(map[string]interface{}) 7327 if l.Width != nil { 7328 objectMap["width"] = l.Width 7329 } 7330 if l.Height != nil { 7331 objectMap["height"] = l.Height 7332 } 7333 if l.Label != nil { 7334 objectMap["label"] = l.Label 7335 } 7336 if l.OdataType != "" { 7337 objectMap["@odata.type"] = l.OdataType 7338 } 7339 return json.Marshal(objectMap) 7340} 7341 7342// AsH265VideoLayer is the BasicLayer implementation for Layer. 7343func (l Layer) AsH265VideoLayer() (*H265VideoLayer, bool) { 7344 return nil, false 7345} 7346 7347// AsBasicH265VideoLayer is the BasicLayer implementation for Layer. 7348func (l Layer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 7349 return nil, false 7350} 7351 7352// AsH265Layer is the BasicLayer implementation for Layer. 7353func (l Layer) AsH265Layer() (*H265Layer, bool) { 7354 return nil, false 7355} 7356 7357// AsVideoLayer is the BasicLayer implementation for Layer. 7358func (l Layer) AsVideoLayer() (*VideoLayer, bool) { 7359 return nil, false 7360} 7361 7362// AsBasicVideoLayer is the BasicLayer implementation for Layer. 7363func (l Layer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 7364 return nil, false 7365} 7366 7367// AsH264Layer is the BasicLayer implementation for Layer. 7368func (l Layer) AsH264Layer() (*H264Layer, bool) { 7369 return nil, false 7370} 7371 7372// AsJpgLayer is the BasicLayer implementation for Layer. 7373func (l Layer) AsJpgLayer() (*JpgLayer, bool) { 7374 return nil, false 7375} 7376 7377// AsPngLayer is the BasicLayer implementation for Layer. 7378func (l Layer) AsPngLayer() (*PngLayer, bool) { 7379 return nil, false 7380} 7381 7382// AsLayer is the BasicLayer implementation for Layer. 7383func (l Layer) AsLayer() (*Layer, bool) { 7384 return &l, true 7385} 7386 7387// AsBasicLayer is the BasicLayer implementation for Layer. 7388func (l Layer) AsBasicLayer() (BasicLayer, bool) { 7389 return &l, true 7390} 7391 7392// ListContainerSasInput the parameters to the list SAS request. 7393type ListContainerSasInput struct { 7394 // Permissions - The permissions to set on the SAS URL. Possible values include: 'AssetContainerPermissionRead', 'AssetContainerPermissionReadWrite', 'AssetContainerPermissionReadWriteDelete' 7395 Permissions AssetContainerPermission `json:"permissions,omitempty"` 7396 // ExpiryTime - The SAS URL expiration time. This must be less than 24 hours from the current time. 7397 ExpiryTime *date.Time `json:"expiryTime,omitempty"` 7398} 7399 7400// ListContentKeysResponse class of response for listContentKeys action 7401type ListContentKeysResponse struct { 7402 autorest.Response `json:"-"` 7403 // ContentKeys - ContentKeys used by current Streaming Locator 7404 ContentKeys *[]StreamingLocatorContentKey `json:"contentKeys,omitempty"` 7405} 7406 7407// ListEdgePoliciesInput ... 7408type ListEdgePoliciesInput struct { 7409 // DeviceID - Unique identifier of the edge device. 7410 DeviceID *string `json:"deviceId,omitempty"` 7411} 7412 7413// ListPathsResponse class of response for listPaths action 7414type ListPathsResponse struct { 7415 autorest.Response `json:"-"` 7416 // StreamingPaths - Streaming Paths supported by current Streaming Locator 7417 StreamingPaths *[]StreamingPath `json:"streamingPaths,omitempty"` 7418 // DownloadPaths - Download Paths supported by current Streaming Locator 7419 DownloadPaths *[]string `json:"downloadPaths,omitempty"` 7420} 7421 7422// ListStreamingLocatorsResponse the Streaming Locators associated with this Asset. 7423type ListStreamingLocatorsResponse struct { 7424 autorest.Response `json:"-"` 7425 // StreamingLocators - READ-ONLY; The list of Streaming Locators. 7426 StreamingLocators *[]AssetStreamingLocator `json:"streamingLocators,omitempty"` 7427} 7428 7429// MarshalJSON is the custom marshaler for ListStreamingLocatorsResponse. 7430func (lslr ListStreamingLocatorsResponse) MarshalJSON() ([]byte, error) { 7431 objectMap := make(map[string]interface{}) 7432 return json.Marshal(objectMap) 7433} 7434 7435// LiveEvent the live event. 7436type LiveEvent struct { 7437 autorest.Response `json:"-"` 7438 // LiveEventProperties - The live event properties. 7439 *LiveEventProperties `json:"properties,omitempty"` 7440 // SystemData - READ-ONLY; The system metadata relating to this resource. 7441 SystemData *SystemData `json:"systemData,omitempty"` 7442 // Tags - Resource tags. 7443 Tags map[string]*string `json:"tags"` 7444 // Location - The geo-location where the resource lives 7445 Location *string `json:"location,omitempty"` 7446 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 7447 ID *string `json:"id,omitempty"` 7448 // Name - READ-ONLY; The name of the resource 7449 Name *string `json:"name,omitempty"` 7450 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 7451 Type *string `json:"type,omitempty"` 7452} 7453 7454// MarshalJSON is the custom marshaler for LiveEvent. 7455func (le LiveEvent) MarshalJSON() ([]byte, error) { 7456 objectMap := make(map[string]interface{}) 7457 if le.LiveEventProperties != nil { 7458 objectMap["properties"] = le.LiveEventProperties 7459 } 7460 if le.Tags != nil { 7461 objectMap["tags"] = le.Tags 7462 } 7463 if le.Location != nil { 7464 objectMap["location"] = le.Location 7465 } 7466 return json.Marshal(objectMap) 7467} 7468 7469// UnmarshalJSON is the custom unmarshaler for LiveEvent struct. 7470func (le *LiveEvent) UnmarshalJSON(body []byte) error { 7471 var m map[string]*json.RawMessage 7472 err := json.Unmarshal(body, &m) 7473 if err != nil { 7474 return err 7475 } 7476 for k, v := range m { 7477 switch k { 7478 case "properties": 7479 if v != nil { 7480 var liveEventProperties LiveEventProperties 7481 err = json.Unmarshal(*v, &liveEventProperties) 7482 if err != nil { 7483 return err 7484 } 7485 le.LiveEventProperties = &liveEventProperties 7486 } 7487 case "systemData": 7488 if v != nil { 7489 var systemData SystemData 7490 err = json.Unmarshal(*v, &systemData) 7491 if err != nil { 7492 return err 7493 } 7494 le.SystemData = &systemData 7495 } 7496 case "tags": 7497 if v != nil { 7498 var tags map[string]*string 7499 err = json.Unmarshal(*v, &tags) 7500 if err != nil { 7501 return err 7502 } 7503 le.Tags = tags 7504 } 7505 case "location": 7506 if v != nil { 7507 var location string 7508 err = json.Unmarshal(*v, &location) 7509 if err != nil { 7510 return err 7511 } 7512 le.Location = &location 7513 } 7514 case "id": 7515 if v != nil { 7516 var ID string 7517 err = json.Unmarshal(*v, &ID) 7518 if err != nil { 7519 return err 7520 } 7521 le.ID = &ID 7522 } 7523 case "name": 7524 if v != nil { 7525 var name string 7526 err = json.Unmarshal(*v, &name) 7527 if err != nil { 7528 return err 7529 } 7530 le.Name = &name 7531 } 7532 case "type": 7533 if v != nil { 7534 var typeVar string 7535 err = json.Unmarshal(*v, &typeVar) 7536 if err != nil { 7537 return err 7538 } 7539 le.Type = &typeVar 7540 } 7541 } 7542 } 7543 7544 return nil 7545} 7546 7547// LiveEventActionInput the LiveEvent action input parameter definition. 7548type LiveEventActionInput struct { 7549 // 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. 7550 RemoveOutputsOnStop *bool `json:"removeOutputsOnStop,omitempty"` 7551} 7552 7553// LiveEventEncoding specifies the live event type and optional encoding settings for encoding live events. 7554type LiveEventEncoding struct { 7555 // 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' 7556 EncodingType LiveEventEncodingType `json:"encodingType,omitempty"` 7557 // 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’. 7558 PresetName *string `json:"presetName,omitempty"` 7559 // 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' 7560 StretchMode StretchMode `json:"stretchMode,omitempty"` 7561 // 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. 7562 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 7563} 7564 7565// LiveEventEndpoint the live event endpoint. 7566type LiveEventEndpoint struct { 7567 // Protocol - The endpoint protocol. 7568 Protocol *string `json:"protocol,omitempty"` 7569 // URL - The endpoint URL. 7570 URL *string `json:"url,omitempty"` 7571} 7572 7573// LiveEventInput the live event input. 7574type LiveEventInput struct { 7575 // StreamingProtocol - The input protocol for the live event. This is specified at creation time and cannot be updated. Possible values include: 'LiveEventInputProtocolFragmentedMP4', 'LiveEventInputProtocolRTMP' 7576 StreamingProtocol LiveEventInputProtocol `json:"streamingProtocol,omitempty"` 7577 // AccessControl - Access control for live event input. 7578 AccessControl *LiveEventInputAccessControl `json:"accessControl,omitempty"` 7579 // 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. 7580 KeyFrameIntervalDuration *string `json:"keyFrameIntervalDuration,omitempty"` 7581 // 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. 7582 AccessToken *string `json:"accessToken,omitempty"` 7583 // Endpoints - The input endpoints for the live event. 7584 Endpoints *[]LiveEventEndpoint `json:"endpoints,omitempty"` 7585} 7586 7587// LiveEventInputAccessControl the IP access control for live event input. 7588type LiveEventInputAccessControl struct { 7589 // IP - The IP access control properties. 7590 IP *IPAccessControl `json:"ip,omitempty"` 7591} 7592 7593// LiveEventInputTrackSelection a track selection condition. This property is reserved for future use, any 7594// value set on this property will be ignored. 7595type LiveEventInputTrackSelection struct { 7596 // Property - Property name to select. This property is reserved for future use, any value set on this property will be ignored. 7597 Property *string `json:"property,omitempty"` 7598 // Operation - Comparing operation. This property is reserved for future use, any value set on this property will be ignored. 7599 Operation *string `json:"operation,omitempty"` 7600 // Value - Property value to select. This property is reserved for future use, any value set on this property will be ignored. 7601 Value *string `json:"value,omitempty"` 7602} 7603 7604// LiveEventListResult the LiveEvent list result. 7605type LiveEventListResult struct { 7606 autorest.Response `json:"-"` 7607 // Value - The result of the List Live Event operation. 7608 Value *[]LiveEvent `json:"value,omitempty"` 7609 // OdataCount - The number of result. 7610 OdataCount *int32 `json:"@odata.count,omitempty"` 7611 // OdataNextLink - The link to the next set of results. Not empty if value contains incomplete list of live outputs. 7612 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 7613} 7614 7615// LiveEventListResultIterator provides access to a complete listing of LiveEvent values. 7616type LiveEventListResultIterator struct { 7617 i int 7618 page LiveEventListResultPage 7619} 7620 7621// NextWithContext advances to the next value. If there was an error making 7622// the request the iterator does not advance and the error is returned. 7623func (iter *LiveEventListResultIterator) NextWithContext(ctx context.Context) (err error) { 7624 if tracing.IsEnabled() { 7625 ctx = tracing.StartSpan(ctx, fqdn+"/LiveEventListResultIterator.NextWithContext") 7626 defer func() { 7627 sc := -1 7628 if iter.Response().Response.Response != nil { 7629 sc = iter.Response().Response.Response.StatusCode 7630 } 7631 tracing.EndSpan(ctx, sc, err) 7632 }() 7633 } 7634 iter.i++ 7635 if iter.i < len(iter.page.Values()) { 7636 return nil 7637 } 7638 err = iter.page.NextWithContext(ctx) 7639 if err != nil { 7640 iter.i-- 7641 return err 7642 } 7643 iter.i = 0 7644 return nil 7645} 7646 7647// Next advances to the next value. If there was an error making 7648// the request the iterator does not advance and the error is returned. 7649// Deprecated: Use NextWithContext() instead. 7650func (iter *LiveEventListResultIterator) Next() error { 7651 return iter.NextWithContext(context.Background()) 7652} 7653 7654// NotDone returns true if the enumeration should be started or is not yet complete. 7655func (iter LiveEventListResultIterator) NotDone() bool { 7656 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 7657} 7658 7659// Response returns the raw server response from the last page request. 7660func (iter LiveEventListResultIterator) Response() LiveEventListResult { 7661 return iter.page.Response() 7662} 7663 7664// Value returns the current value or a zero-initialized value if the 7665// iterator has advanced beyond the end of the collection. 7666func (iter LiveEventListResultIterator) Value() LiveEvent { 7667 if !iter.page.NotDone() { 7668 return LiveEvent{} 7669 } 7670 return iter.page.Values()[iter.i] 7671} 7672 7673// Creates a new instance of the LiveEventListResultIterator type. 7674func NewLiveEventListResultIterator(page LiveEventListResultPage) LiveEventListResultIterator { 7675 return LiveEventListResultIterator{page: page} 7676} 7677 7678// IsEmpty returns true if the ListResult contains no values. 7679func (lelr LiveEventListResult) IsEmpty() bool { 7680 return lelr.Value == nil || len(*lelr.Value) == 0 7681} 7682 7683// hasNextLink returns true if the NextLink is not empty. 7684func (lelr LiveEventListResult) hasNextLink() bool { 7685 return lelr.OdataNextLink != nil && len(*lelr.OdataNextLink) != 0 7686} 7687 7688// liveEventListResultPreparer prepares a request to retrieve the next set of results. 7689// It returns nil if no more results exist. 7690func (lelr LiveEventListResult) liveEventListResultPreparer(ctx context.Context) (*http.Request, error) { 7691 if !lelr.hasNextLink() { 7692 return nil, nil 7693 } 7694 return autorest.Prepare((&http.Request{}).WithContext(ctx), 7695 autorest.AsJSON(), 7696 autorest.AsGet(), 7697 autorest.WithBaseURL(to.String(lelr.OdataNextLink))) 7698} 7699 7700// LiveEventListResultPage contains a page of LiveEvent values. 7701type LiveEventListResultPage struct { 7702 fn func(context.Context, LiveEventListResult) (LiveEventListResult, error) 7703 lelr LiveEventListResult 7704} 7705 7706// NextWithContext advances to the next page of values. If there was an error making 7707// the request the page does not advance and the error is returned. 7708func (page *LiveEventListResultPage) NextWithContext(ctx context.Context) (err error) { 7709 if tracing.IsEnabled() { 7710 ctx = tracing.StartSpan(ctx, fqdn+"/LiveEventListResultPage.NextWithContext") 7711 defer func() { 7712 sc := -1 7713 if page.Response().Response.Response != nil { 7714 sc = page.Response().Response.Response.StatusCode 7715 } 7716 tracing.EndSpan(ctx, sc, err) 7717 }() 7718 } 7719 for { 7720 next, err := page.fn(ctx, page.lelr) 7721 if err != nil { 7722 return err 7723 } 7724 page.lelr = next 7725 if !next.hasNextLink() || !next.IsEmpty() { 7726 break 7727 } 7728 } 7729 return nil 7730} 7731 7732// Next advances to the next page of values. If there was an error making 7733// the request the page does not advance and the error is returned. 7734// Deprecated: Use NextWithContext() instead. 7735func (page *LiveEventListResultPage) Next() error { 7736 return page.NextWithContext(context.Background()) 7737} 7738 7739// NotDone returns true if the page enumeration should be started or is not yet complete. 7740func (page LiveEventListResultPage) NotDone() bool { 7741 return !page.lelr.IsEmpty() 7742} 7743 7744// Response returns the raw server response from the last page request. 7745func (page LiveEventListResultPage) Response() LiveEventListResult { 7746 return page.lelr 7747} 7748 7749// Values returns the slice of values for the current page or nil if there are no values. 7750func (page LiveEventListResultPage) Values() []LiveEvent { 7751 if page.lelr.IsEmpty() { 7752 return nil 7753 } 7754 return *page.lelr.Value 7755} 7756 7757// Creates a new instance of the LiveEventListResultPage type. 7758func NewLiveEventListResultPage(cur LiveEventListResult, getNextPage func(context.Context, LiveEventListResult) (LiveEventListResult, error)) LiveEventListResultPage { 7759 return LiveEventListResultPage{ 7760 fn: getNextPage, 7761 lelr: cur, 7762 } 7763} 7764 7765// LiveEventOutputTranscriptionTrack describes a transcription track in the output of a live event, 7766// generated using speech-to-text transcription. This property is reserved for future use, any value set on 7767// this property will be ignored. 7768type LiveEventOutputTranscriptionTrack struct { 7769 // TrackName - The output track name. This property is reserved for future use, any value set on this property will be ignored. 7770 TrackName *string `json:"trackName,omitempty"` 7771} 7772 7773// LiveEventPreview live event preview settings. 7774type LiveEventPreview struct { 7775 // Endpoints - The endpoints for preview. Do not share the preview URL with the live event audience. 7776 Endpoints *[]LiveEventEndpoint `json:"endpoints,omitempty"` 7777 // AccessControl - The access control for live event preview. 7778 AccessControl *LiveEventPreviewAccessControl `json:"accessControl,omitempty"` 7779 // 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. 7780 PreviewLocator *string `json:"previewLocator,omitempty"` 7781 // StreamingPolicyName - The name of streaming policy used for the live event preview. This value is specified at creation time and cannot be updated. 7782 StreamingPolicyName *string `json:"streamingPolicyName,omitempty"` 7783 // 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. 7784 AlternativeMediaID *string `json:"alternativeMediaId,omitempty"` 7785} 7786 7787// LiveEventPreviewAccessControl the IP access control for the live event preview endpoint. 7788type LiveEventPreviewAccessControl struct { 7789 // IP - The IP access control properties. 7790 IP *IPAccessControl `json:"ip,omitempty"` 7791} 7792 7793// LiveEventProperties the live event properties. 7794type LiveEventProperties struct { 7795 // Description - A description for the live event. 7796 Description *string `json:"description,omitempty"` 7797 // Input - Live event input settings. It defines how the live event receives input from a contribution encoder. 7798 Input *LiveEventInput `json:"input,omitempty"` 7799 // Preview - Live event preview settings. Preview allows live event producers to preview the live streaming content without creating any live output. 7800 Preview *LiveEventPreview `json:"preview,omitempty"` 7801 // 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. 7802 Encoding *LiveEventEncoding `json:"encoding,omitempty"` 7803 // Transcriptions - Live transcription settings for the live event. See https://go.microsoft.com/fwlink/?linkid=2133742 for more information about the live transcription feature. 7804 Transcriptions *[]LiveEventTranscription `json:"transcriptions,omitempty"` 7805 // ProvisioningState - READ-ONLY; The provisioning state of the live event. 7806 ProvisioningState *string `json:"provisioningState,omitempty"` 7807 // 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' 7808 ResourceState LiveEventResourceState `json:"resourceState,omitempty"` 7809 // CrossSiteAccessPolicies - Live event cross site access policies. 7810 CrossSiteAccessPolicies *CrossSiteAccessPolicies `json:"crossSiteAccessPolicies,omitempty"` 7811 // 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 7812 UseStaticHostname *bool `json:"useStaticHostname,omitempty"` 7813 // 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. 7814 HostnamePrefix *string `json:"hostnamePrefix,omitempty"` 7815 // 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'. 7816 StreamOptions *[]StreamOptionsFlag `json:"streamOptions,omitempty"` 7817 // Created - READ-ONLY; The creation time for the live event 7818 Created *date.Time `json:"created,omitempty"` 7819 // LastModified - READ-ONLY; The last modified time of the live event. 7820 LastModified *date.Time `json:"lastModified,omitempty"` 7821} 7822 7823// MarshalJSON is the custom marshaler for LiveEventProperties. 7824func (lep LiveEventProperties) MarshalJSON() ([]byte, error) { 7825 objectMap := make(map[string]interface{}) 7826 if lep.Description != nil { 7827 objectMap["description"] = lep.Description 7828 } 7829 if lep.Input != nil { 7830 objectMap["input"] = lep.Input 7831 } 7832 if lep.Preview != nil { 7833 objectMap["preview"] = lep.Preview 7834 } 7835 if lep.Encoding != nil { 7836 objectMap["encoding"] = lep.Encoding 7837 } 7838 if lep.Transcriptions != nil { 7839 objectMap["transcriptions"] = lep.Transcriptions 7840 } 7841 if lep.CrossSiteAccessPolicies != nil { 7842 objectMap["crossSiteAccessPolicies"] = lep.CrossSiteAccessPolicies 7843 } 7844 if lep.UseStaticHostname != nil { 7845 objectMap["useStaticHostname"] = lep.UseStaticHostname 7846 } 7847 if lep.HostnamePrefix != nil { 7848 objectMap["hostnamePrefix"] = lep.HostnamePrefix 7849 } 7850 if lep.StreamOptions != nil { 7851 objectMap["streamOptions"] = lep.StreamOptions 7852 } 7853 return json.Marshal(objectMap) 7854} 7855 7856// LiveEventsAllocateFuture an abstraction for monitoring and retrieving the results of a long-running 7857// operation. 7858type LiveEventsAllocateFuture struct { 7859 azure.FutureAPI 7860 // Result returns the result of the asynchronous operation. 7861 // If the operation has not completed it will return an error. 7862 Result func(LiveEventsClient) (autorest.Response, error) 7863} 7864 7865// UnmarshalJSON is the custom unmarshaller for CreateFuture. 7866func (future *LiveEventsAllocateFuture) UnmarshalJSON(body []byte) error { 7867 var azFuture azure.Future 7868 if err := json.Unmarshal(body, &azFuture); err != nil { 7869 return err 7870 } 7871 future.FutureAPI = &azFuture 7872 future.Result = future.result 7873 return nil 7874} 7875 7876// result is the default implementation for LiveEventsAllocateFuture.Result. 7877func (future *LiveEventsAllocateFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 7878 var done bool 7879 done, err = future.DoneWithContext(context.Background(), client) 7880 if err != nil { 7881 err = autorest.NewErrorWithError(err, "media.LiveEventsAllocateFuture", "Result", future.Response(), "Polling failure") 7882 return 7883 } 7884 if !done { 7885 ar.Response = future.Response() 7886 err = azure.NewAsyncOpIncompleteError("media.LiveEventsAllocateFuture") 7887 return 7888 } 7889 ar.Response = future.Response() 7890 return 7891} 7892 7893// LiveEventsCreateFuture an abstraction for monitoring and retrieving the results of a long-running 7894// operation. 7895type LiveEventsCreateFuture struct { 7896 azure.FutureAPI 7897 // Result returns the result of the asynchronous operation. 7898 // If the operation has not completed it will return an error. 7899 Result func(LiveEventsClient) (LiveEvent, error) 7900} 7901 7902// UnmarshalJSON is the custom unmarshaller for CreateFuture. 7903func (future *LiveEventsCreateFuture) UnmarshalJSON(body []byte) error { 7904 var azFuture azure.Future 7905 if err := json.Unmarshal(body, &azFuture); err != nil { 7906 return err 7907 } 7908 future.FutureAPI = &azFuture 7909 future.Result = future.result 7910 return nil 7911} 7912 7913// result is the default implementation for LiveEventsCreateFuture.Result. 7914func (future *LiveEventsCreateFuture) result(client LiveEventsClient) (le LiveEvent, err error) { 7915 var done bool 7916 done, err = future.DoneWithContext(context.Background(), client) 7917 if err != nil { 7918 err = autorest.NewErrorWithError(err, "media.LiveEventsCreateFuture", "Result", future.Response(), "Polling failure") 7919 return 7920 } 7921 if !done { 7922 le.Response.Response = future.Response() 7923 err = azure.NewAsyncOpIncompleteError("media.LiveEventsCreateFuture") 7924 return 7925 } 7926 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 7927 if le.Response.Response, err = future.GetResult(sender); err == nil && le.Response.Response.StatusCode != http.StatusNoContent { 7928 le, err = client.CreateResponder(le.Response.Response) 7929 if err != nil { 7930 err = autorest.NewErrorWithError(err, "media.LiveEventsCreateFuture", "Result", le.Response.Response, "Failure responding to request") 7931 } 7932 } 7933 return 7934} 7935 7936// LiveEventsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running 7937// operation. 7938type LiveEventsDeleteFuture struct { 7939 azure.FutureAPI 7940 // Result returns the result of the asynchronous operation. 7941 // If the operation has not completed it will return an error. 7942 Result func(LiveEventsClient) (autorest.Response, error) 7943} 7944 7945// UnmarshalJSON is the custom unmarshaller for CreateFuture. 7946func (future *LiveEventsDeleteFuture) UnmarshalJSON(body []byte) error { 7947 var azFuture azure.Future 7948 if err := json.Unmarshal(body, &azFuture); err != nil { 7949 return err 7950 } 7951 future.FutureAPI = &azFuture 7952 future.Result = future.result 7953 return nil 7954} 7955 7956// result is the default implementation for LiveEventsDeleteFuture.Result. 7957func (future *LiveEventsDeleteFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 7958 var done bool 7959 done, err = future.DoneWithContext(context.Background(), client) 7960 if err != nil { 7961 err = autorest.NewErrorWithError(err, "media.LiveEventsDeleteFuture", "Result", future.Response(), "Polling failure") 7962 return 7963 } 7964 if !done { 7965 ar.Response = future.Response() 7966 err = azure.NewAsyncOpIncompleteError("media.LiveEventsDeleteFuture") 7967 return 7968 } 7969 ar.Response = future.Response() 7970 return 7971} 7972 7973// LiveEventsResetFuture an abstraction for monitoring and retrieving the results of a long-running 7974// operation. 7975type LiveEventsResetFuture struct { 7976 azure.FutureAPI 7977 // Result returns the result of the asynchronous operation. 7978 // If the operation has not completed it will return an error. 7979 Result func(LiveEventsClient) (autorest.Response, error) 7980} 7981 7982// UnmarshalJSON is the custom unmarshaller for CreateFuture. 7983func (future *LiveEventsResetFuture) UnmarshalJSON(body []byte) error { 7984 var azFuture azure.Future 7985 if err := json.Unmarshal(body, &azFuture); err != nil { 7986 return err 7987 } 7988 future.FutureAPI = &azFuture 7989 future.Result = future.result 7990 return nil 7991} 7992 7993// result is the default implementation for LiveEventsResetFuture.Result. 7994func (future *LiveEventsResetFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 7995 var done bool 7996 done, err = future.DoneWithContext(context.Background(), client) 7997 if err != nil { 7998 err = autorest.NewErrorWithError(err, "media.LiveEventsResetFuture", "Result", future.Response(), "Polling failure") 7999 return 8000 } 8001 if !done { 8002 ar.Response = future.Response() 8003 err = azure.NewAsyncOpIncompleteError("media.LiveEventsResetFuture") 8004 return 8005 } 8006 ar.Response = future.Response() 8007 return 8008} 8009 8010// LiveEventsStartFuture an abstraction for monitoring and retrieving the results of a long-running 8011// operation. 8012type LiveEventsStartFuture struct { 8013 azure.FutureAPI 8014 // Result returns the result of the asynchronous operation. 8015 // If the operation has not completed it will return an error. 8016 Result func(LiveEventsClient) (autorest.Response, error) 8017} 8018 8019// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8020func (future *LiveEventsStartFuture) UnmarshalJSON(body []byte) error { 8021 var azFuture azure.Future 8022 if err := json.Unmarshal(body, &azFuture); err != nil { 8023 return err 8024 } 8025 future.FutureAPI = &azFuture 8026 future.Result = future.result 8027 return nil 8028} 8029 8030// result is the default implementation for LiveEventsStartFuture.Result. 8031func (future *LiveEventsStartFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8032 var done bool 8033 done, err = future.DoneWithContext(context.Background(), client) 8034 if err != nil { 8035 err = autorest.NewErrorWithError(err, "media.LiveEventsStartFuture", "Result", future.Response(), "Polling failure") 8036 return 8037 } 8038 if !done { 8039 ar.Response = future.Response() 8040 err = azure.NewAsyncOpIncompleteError("media.LiveEventsStartFuture") 8041 return 8042 } 8043 ar.Response = future.Response() 8044 return 8045} 8046 8047// LiveEventsStopFuture an abstraction for monitoring and retrieving the results of a long-running 8048// operation. 8049type LiveEventsStopFuture struct { 8050 azure.FutureAPI 8051 // Result returns the result of the asynchronous operation. 8052 // If the operation has not completed it will return an error. 8053 Result func(LiveEventsClient) (autorest.Response, error) 8054} 8055 8056// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8057func (future *LiveEventsStopFuture) UnmarshalJSON(body []byte) error { 8058 var azFuture azure.Future 8059 if err := json.Unmarshal(body, &azFuture); err != nil { 8060 return err 8061 } 8062 future.FutureAPI = &azFuture 8063 future.Result = future.result 8064 return nil 8065} 8066 8067// result is the default implementation for LiveEventsStopFuture.Result. 8068func (future *LiveEventsStopFuture) result(client LiveEventsClient) (ar autorest.Response, err error) { 8069 var done bool 8070 done, err = future.DoneWithContext(context.Background(), client) 8071 if err != nil { 8072 err = autorest.NewErrorWithError(err, "media.LiveEventsStopFuture", "Result", future.Response(), "Polling failure") 8073 return 8074 } 8075 if !done { 8076 ar.Response = future.Response() 8077 err = azure.NewAsyncOpIncompleteError("media.LiveEventsStopFuture") 8078 return 8079 } 8080 ar.Response = future.Response() 8081 return 8082} 8083 8084// LiveEventsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running 8085// operation. 8086type LiveEventsUpdateFuture struct { 8087 azure.FutureAPI 8088 // Result returns the result of the asynchronous operation. 8089 // If the operation has not completed it will return an error. 8090 Result func(LiveEventsClient) (LiveEvent, error) 8091} 8092 8093// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8094func (future *LiveEventsUpdateFuture) UnmarshalJSON(body []byte) error { 8095 var azFuture azure.Future 8096 if err := json.Unmarshal(body, &azFuture); err != nil { 8097 return err 8098 } 8099 future.FutureAPI = &azFuture 8100 future.Result = future.result 8101 return nil 8102} 8103 8104// result is the default implementation for LiveEventsUpdateFuture.Result. 8105func (future *LiveEventsUpdateFuture) result(client LiveEventsClient) (le LiveEvent, err error) { 8106 var done bool 8107 done, err = future.DoneWithContext(context.Background(), client) 8108 if err != nil { 8109 err = autorest.NewErrorWithError(err, "media.LiveEventsUpdateFuture", "Result", future.Response(), "Polling failure") 8110 return 8111 } 8112 if !done { 8113 le.Response.Response = future.Response() 8114 err = azure.NewAsyncOpIncompleteError("media.LiveEventsUpdateFuture") 8115 return 8116 } 8117 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 8118 if le.Response.Response, err = future.GetResult(sender); err == nil && le.Response.Response.StatusCode != http.StatusNoContent { 8119 le, err = client.UpdateResponder(le.Response.Response) 8120 if err != nil { 8121 err = autorest.NewErrorWithError(err, "media.LiveEventsUpdateFuture", "Result", le.Response.Response, "Failure responding to request") 8122 } 8123 } 8124 return 8125} 8126 8127// LiveEventTranscription describes the transcription tracks in the output of a live event, generated using 8128// speech-to-text transcription. This property is reserved for future use, any value set on this property 8129// will be ignored. 8130type LiveEventTranscription struct { 8131 // 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. 8132 Language *string `json:"language,omitempty"` 8133 // 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. 8134 InputTrackSelection *[]LiveEventInputTrackSelection `json:"inputTrackSelection,omitempty"` 8135 // 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. 8136 OutputTranscriptionTrack *LiveEventOutputTranscriptionTrack `json:"outputTranscriptionTrack,omitempty"` 8137} 8138 8139// LiveOutput the Live Output. 8140type LiveOutput struct { 8141 autorest.Response `json:"-"` 8142 // LiveOutputProperties - Live output properties. 8143 *LiveOutputProperties `json:"properties,omitempty"` 8144 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 8145 ID *string `json:"id,omitempty"` 8146 // Name - READ-ONLY; The name of the resource 8147 Name *string `json:"name,omitempty"` 8148 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 8149 Type *string `json:"type,omitempty"` 8150} 8151 8152// MarshalJSON is the custom marshaler for LiveOutput. 8153func (lo LiveOutput) MarshalJSON() ([]byte, error) { 8154 objectMap := make(map[string]interface{}) 8155 if lo.LiveOutputProperties != nil { 8156 objectMap["properties"] = lo.LiveOutputProperties 8157 } 8158 return json.Marshal(objectMap) 8159} 8160 8161// UnmarshalJSON is the custom unmarshaler for LiveOutput struct. 8162func (lo *LiveOutput) UnmarshalJSON(body []byte) error { 8163 var m map[string]*json.RawMessage 8164 err := json.Unmarshal(body, &m) 8165 if err != nil { 8166 return err 8167 } 8168 for k, v := range m { 8169 switch k { 8170 case "properties": 8171 if v != nil { 8172 var liveOutputProperties LiveOutputProperties 8173 err = json.Unmarshal(*v, &liveOutputProperties) 8174 if err != nil { 8175 return err 8176 } 8177 lo.LiveOutputProperties = &liveOutputProperties 8178 } 8179 case "id": 8180 if v != nil { 8181 var ID string 8182 err = json.Unmarshal(*v, &ID) 8183 if err != nil { 8184 return err 8185 } 8186 lo.ID = &ID 8187 } 8188 case "name": 8189 if v != nil { 8190 var name string 8191 err = json.Unmarshal(*v, &name) 8192 if err != nil { 8193 return err 8194 } 8195 lo.Name = &name 8196 } 8197 case "type": 8198 if v != nil { 8199 var typeVar string 8200 err = json.Unmarshal(*v, &typeVar) 8201 if err != nil { 8202 return err 8203 } 8204 lo.Type = &typeVar 8205 } 8206 } 8207 } 8208 8209 return nil 8210} 8211 8212// LiveOutputListResult the LiveOutput list result. 8213type LiveOutputListResult struct { 8214 autorest.Response `json:"-"` 8215 // Value - The result of the List LiveOutput operation. 8216 Value *[]LiveOutput `json:"value,omitempty"` 8217 // OdataCount - The number of result. 8218 OdataCount *int32 `json:"@odata.count,omitempty"` 8219 // OdataNextLink - The link to the next set of results. Not empty if value contains incomplete list of live outputs. 8220 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 8221} 8222 8223// LiveOutputListResultIterator provides access to a complete listing of LiveOutput values. 8224type LiveOutputListResultIterator struct { 8225 i int 8226 page LiveOutputListResultPage 8227} 8228 8229// NextWithContext advances to the next value. If there was an error making 8230// the request the iterator does not advance and the error is returned. 8231func (iter *LiveOutputListResultIterator) NextWithContext(ctx context.Context) (err error) { 8232 if tracing.IsEnabled() { 8233 ctx = tracing.StartSpan(ctx, fqdn+"/LiveOutputListResultIterator.NextWithContext") 8234 defer func() { 8235 sc := -1 8236 if iter.Response().Response.Response != nil { 8237 sc = iter.Response().Response.Response.StatusCode 8238 } 8239 tracing.EndSpan(ctx, sc, err) 8240 }() 8241 } 8242 iter.i++ 8243 if iter.i < len(iter.page.Values()) { 8244 return nil 8245 } 8246 err = iter.page.NextWithContext(ctx) 8247 if err != nil { 8248 iter.i-- 8249 return err 8250 } 8251 iter.i = 0 8252 return nil 8253} 8254 8255// Next advances to the next value. If there was an error making 8256// the request the iterator does not advance and the error is returned. 8257// Deprecated: Use NextWithContext() instead. 8258func (iter *LiveOutputListResultIterator) Next() error { 8259 return iter.NextWithContext(context.Background()) 8260} 8261 8262// NotDone returns true if the enumeration should be started or is not yet complete. 8263func (iter LiveOutputListResultIterator) NotDone() bool { 8264 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 8265} 8266 8267// Response returns the raw server response from the last page request. 8268func (iter LiveOutputListResultIterator) Response() LiveOutputListResult { 8269 return iter.page.Response() 8270} 8271 8272// Value returns the current value or a zero-initialized value if the 8273// iterator has advanced beyond the end of the collection. 8274func (iter LiveOutputListResultIterator) Value() LiveOutput { 8275 if !iter.page.NotDone() { 8276 return LiveOutput{} 8277 } 8278 return iter.page.Values()[iter.i] 8279} 8280 8281// Creates a new instance of the LiveOutputListResultIterator type. 8282func NewLiveOutputListResultIterator(page LiveOutputListResultPage) LiveOutputListResultIterator { 8283 return LiveOutputListResultIterator{page: page} 8284} 8285 8286// IsEmpty returns true if the ListResult contains no values. 8287func (lolr LiveOutputListResult) IsEmpty() bool { 8288 return lolr.Value == nil || len(*lolr.Value) == 0 8289} 8290 8291// hasNextLink returns true if the NextLink is not empty. 8292func (lolr LiveOutputListResult) hasNextLink() bool { 8293 return lolr.OdataNextLink != nil && len(*lolr.OdataNextLink) != 0 8294} 8295 8296// liveOutputListResultPreparer prepares a request to retrieve the next set of results. 8297// It returns nil if no more results exist. 8298func (lolr LiveOutputListResult) liveOutputListResultPreparer(ctx context.Context) (*http.Request, error) { 8299 if !lolr.hasNextLink() { 8300 return nil, nil 8301 } 8302 return autorest.Prepare((&http.Request{}).WithContext(ctx), 8303 autorest.AsJSON(), 8304 autorest.AsGet(), 8305 autorest.WithBaseURL(to.String(lolr.OdataNextLink))) 8306} 8307 8308// LiveOutputListResultPage contains a page of LiveOutput values. 8309type LiveOutputListResultPage struct { 8310 fn func(context.Context, LiveOutputListResult) (LiveOutputListResult, error) 8311 lolr LiveOutputListResult 8312} 8313 8314// NextWithContext advances to the next page of values. If there was an error making 8315// the request the page does not advance and the error is returned. 8316func (page *LiveOutputListResultPage) NextWithContext(ctx context.Context) (err error) { 8317 if tracing.IsEnabled() { 8318 ctx = tracing.StartSpan(ctx, fqdn+"/LiveOutputListResultPage.NextWithContext") 8319 defer func() { 8320 sc := -1 8321 if page.Response().Response.Response != nil { 8322 sc = page.Response().Response.Response.StatusCode 8323 } 8324 tracing.EndSpan(ctx, sc, err) 8325 }() 8326 } 8327 for { 8328 next, err := page.fn(ctx, page.lolr) 8329 if err != nil { 8330 return err 8331 } 8332 page.lolr = next 8333 if !next.hasNextLink() || !next.IsEmpty() { 8334 break 8335 } 8336 } 8337 return nil 8338} 8339 8340// Next advances to the next page of values. If there was an error making 8341// the request the page does not advance and the error is returned. 8342// Deprecated: Use NextWithContext() instead. 8343func (page *LiveOutputListResultPage) Next() error { 8344 return page.NextWithContext(context.Background()) 8345} 8346 8347// NotDone returns true if the page enumeration should be started or is not yet complete. 8348func (page LiveOutputListResultPage) NotDone() bool { 8349 return !page.lolr.IsEmpty() 8350} 8351 8352// Response returns the raw server response from the last page request. 8353func (page LiveOutputListResultPage) Response() LiveOutputListResult { 8354 return page.lolr 8355} 8356 8357// Values returns the slice of values for the current page or nil if there are no values. 8358func (page LiveOutputListResultPage) Values() []LiveOutput { 8359 if page.lolr.IsEmpty() { 8360 return nil 8361 } 8362 return *page.lolr.Value 8363} 8364 8365// Creates a new instance of the LiveOutputListResultPage type. 8366func NewLiveOutputListResultPage(cur LiveOutputListResult, getNextPage func(context.Context, LiveOutputListResult) (LiveOutputListResult, error)) LiveOutputListResultPage { 8367 return LiveOutputListResultPage{ 8368 fn: getNextPage, 8369 lolr: cur, 8370 } 8371} 8372 8373// LiveOutputProperties the JSON object that contains the properties required to create a live output. 8374type LiveOutputProperties struct { 8375 // Description - The description of the live output. 8376 Description *string `json:"description,omitempty"` 8377 // AssetName - The asset that the live output will write to. 8378 AssetName *string `json:"assetName,omitempty"` 8379 // 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. 8380 ArchiveWindowLength *string `json:"archiveWindowLength,omitempty"` 8381 // ManifestName - The manifest file name. If not provided, the service will generate one automatically. 8382 ManifestName *string `json:"manifestName,omitempty"` 8383 // Hls - HTTP Live Streaming (HLS) packing setting for the live output. 8384 Hls *Hls `json:"hls,omitempty"` 8385 // OutputSnapTime - The initial timestamp that the live output will start at, any content before this value will not be archived. 8386 OutputSnapTime *int64 `json:"outputSnapTime,omitempty"` 8387 // Created - READ-ONLY; The creation time the live output. 8388 Created *date.Time `json:"created,omitempty"` 8389 // LastModified - READ-ONLY; The time the live output was last modified. 8390 LastModified *date.Time `json:"lastModified,omitempty"` 8391 // ProvisioningState - READ-ONLY; The provisioning state of the live output. 8392 ProvisioningState *string `json:"provisioningState,omitempty"` 8393 // ResourceState - READ-ONLY; The resource state of the live output. Possible values include: 'LiveOutputResourceStateCreating', 'LiveOutputResourceStateRunning', 'LiveOutputResourceStateDeleting' 8394 ResourceState LiveOutputResourceState `json:"resourceState,omitempty"` 8395} 8396 8397// MarshalJSON is the custom marshaler for LiveOutputProperties. 8398func (lop LiveOutputProperties) MarshalJSON() ([]byte, error) { 8399 objectMap := make(map[string]interface{}) 8400 if lop.Description != nil { 8401 objectMap["description"] = lop.Description 8402 } 8403 if lop.AssetName != nil { 8404 objectMap["assetName"] = lop.AssetName 8405 } 8406 if lop.ArchiveWindowLength != nil { 8407 objectMap["archiveWindowLength"] = lop.ArchiveWindowLength 8408 } 8409 if lop.ManifestName != nil { 8410 objectMap["manifestName"] = lop.ManifestName 8411 } 8412 if lop.Hls != nil { 8413 objectMap["hls"] = lop.Hls 8414 } 8415 if lop.OutputSnapTime != nil { 8416 objectMap["outputSnapTime"] = lop.OutputSnapTime 8417 } 8418 return json.Marshal(objectMap) 8419} 8420 8421// LiveOutputsCreateFuture an abstraction for monitoring and retrieving the results of a long-running 8422// operation. 8423type LiveOutputsCreateFuture struct { 8424 azure.FutureAPI 8425 // Result returns the result of the asynchronous operation. 8426 // If the operation has not completed it will return an error. 8427 Result func(LiveOutputsClient) (LiveOutput, error) 8428} 8429 8430// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8431func (future *LiveOutputsCreateFuture) UnmarshalJSON(body []byte) error { 8432 var azFuture azure.Future 8433 if err := json.Unmarshal(body, &azFuture); err != nil { 8434 return err 8435 } 8436 future.FutureAPI = &azFuture 8437 future.Result = future.result 8438 return nil 8439} 8440 8441// result is the default implementation for LiveOutputsCreateFuture.Result. 8442func (future *LiveOutputsCreateFuture) result(client LiveOutputsClient) (lo LiveOutput, err error) { 8443 var done bool 8444 done, err = future.DoneWithContext(context.Background(), client) 8445 if err != nil { 8446 err = autorest.NewErrorWithError(err, "media.LiveOutputsCreateFuture", "Result", future.Response(), "Polling failure") 8447 return 8448 } 8449 if !done { 8450 lo.Response.Response = future.Response() 8451 err = azure.NewAsyncOpIncompleteError("media.LiveOutputsCreateFuture") 8452 return 8453 } 8454 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 8455 if lo.Response.Response, err = future.GetResult(sender); err == nil && lo.Response.Response.StatusCode != http.StatusNoContent { 8456 lo, err = client.CreateResponder(lo.Response.Response) 8457 if err != nil { 8458 err = autorest.NewErrorWithError(err, "media.LiveOutputsCreateFuture", "Result", lo.Response.Response, "Failure responding to request") 8459 } 8460 } 8461 return 8462} 8463 8464// LiveOutputsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running 8465// operation. 8466type LiveOutputsDeleteFuture struct { 8467 azure.FutureAPI 8468 // Result returns the result of the asynchronous operation. 8469 // If the operation has not completed it will return an error. 8470 Result func(LiveOutputsClient) (autorest.Response, error) 8471} 8472 8473// UnmarshalJSON is the custom unmarshaller for CreateFuture. 8474func (future *LiveOutputsDeleteFuture) UnmarshalJSON(body []byte) error { 8475 var azFuture azure.Future 8476 if err := json.Unmarshal(body, &azFuture); err != nil { 8477 return err 8478 } 8479 future.FutureAPI = &azFuture 8480 future.Result = future.result 8481 return nil 8482} 8483 8484// result is the default implementation for LiveOutputsDeleteFuture.Result. 8485func (future *LiveOutputsDeleteFuture) result(client LiveOutputsClient) (ar autorest.Response, err error) { 8486 var done bool 8487 done, err = future.DoneWithContext(context.Background(), client) 8488 if err != nil { 8489 err = autorest.NewErrorWithError(err, "media.LiveOutputsDeleteFuture", "Result", future.Response(), "Polling failure") 8490 return 8491 } 8492 if !done { 8493 ar.Response = future.Response() 8494 err = azure.NewAsyncOpIncompleteError("media.LiveOutputsDeleteFuture") 8495 return 8496 } 8497 ar.Response = future.Response() 8498 return 8499} 8500 8501// Location ... 8502type Location struct { 8503 Name *string `json:"name,omitempty"` 8504} 8505 8506// LogSpecification a diagnostic log emitted by service. 8507type LogSpecification struct { 8508 // Name - READ-ONLY; The diagnostic log category name. 8509 Name *string `json:"name,omitempty"` 8510 // DisplayName - READ-ONLY; The diagnostic log category display name. 8511 DisplayName *string `json:"displayName,omitempty"` 8512 // BlobDuration - READ-ONLY; The time range for requests in each blob. 8513 BlobDuration *string `json:"blobDuration,omitempty"` 8514} 8515 8516// MarshalJSON is the custom marshaler for LogSpecification. 8517func (ls LogSpecification) MarshalJSON() ([]byte, error) { 8518 objectMap := make(map[string]interface{}) 8519 return json.Marshal(objectMap) 8520} 8521 8522// MetricDimension a metric dimension. 8523type MetricDimension struct { 8524 // Name - READ-ONLY; The metric dimension name. 8525 Name *string `json:"name,omitempty"` 8526 // DisplayName - READ-ONLY; The display name for the dimension. 8527 DisplayName *string `json:"displayName,omitempty"` 8528 // ToBeExportedForShoebox - READ-ONLY; Whether to export metric to shoebox. 8529 ToBeExportedForShoebox *bool `json:"toBeExportedForShoebox,omitempty"` 8530} 8531 8532// MarshalJSON is the custom marshaler for MetricDimension. 8533func (md MetricDimension) MarshalJSON() ([]byte, error) { 8534 objectMap := make(map[string]interface{}) 8535 return json.Marshal(objectMap) 8536} 8537 8538// MetricSpecification a metric emitted by service. 8539type MetricSpecification struct { 8540 // Name - READ-ONLY; The metric name. 8541 Name *string `json:"name,omitempty"` 8542 // DisplayName - READ-ONLY; The metric display name. 8543 DisplayName *string `json:"displayName,omitempty"` 8544 // DisplayDescription - READ-ONLY; The metric display description. 8545 DisplayDescription *string `json:"displayDescription,omitempty"` 8546 // Unit - READ-ONLY; The metric unit. Possible values include: 'MetricUnitBytes', 'MetricUnitCount', 'MetricUnitMilliseconds' 8547 Unit MetricUnit `json:"unit,omitempty"` 8548 // AggregationType - READ-ONLY; The metric aggregation type. Possible values include: 'MetricAggregationTypeAverage', 'MetricAggregationTypeCount', 'MetricAggregationTypeTotal' 8549 AggregationType MetricAggregationType `json:"aggregationType,omitempty"` 8550 // LockAggregationType - READ-ONLY; The metric lock aggregation type. Possible values include: 'MetricAggregationTypeAverage', 'MetricAggregationTypeCount', 'MetricAggregationTypeTotal' 8551 LockAggregationType MetricAggregationType `json:"lockAggregationType,omitempty"` 8552 // SupportedAggregationTypes - Supported aggregation types. 8553 SupportedAggregationTypes *[]string `json:"supportedAggregationTypes,omitempty"` 8554 // Dimensions - READ-ONLY; The metric dimensions. 8555 Dimensions *[]MetricDimension `json:"dimensions,omitempty"` 8556 // EnableRegionalMdmAccount - READ-ONLY; Indicates whether regional MDM account is enabled. 8557 EnableRegionalMdmAccount *bool `json:"enableRegionalMdmAccount,omitempty"` 8558 // SourceMdmAccount - READ-ONLY; The source MDM account. 8559 SourceMdmAccount *string `json:"sourceMdmAccount,omitempty"` 8560 // SourceMdmNamespace - READ-ONLY; The source MDM namespace. 8561 SourceMdmNamespace *string `json:"sourceMdmNamespace,omitempty"` 8562 // SupportedTimeGrainTypes - READ-ONLY; The supported time grain types. 8563 SupportedTimeGrainTypes *[]string `json:"supportedTimeGrainTypes,omitempty"` 8564} 8565 8566// MarshalJSON is the custom marshaler for MetricSpecification. 8567func (ms MetricSpecification) MarshalJSON() ([]byte, error) { 8568 objectMap := make(map[string]interface{}) 8569 if ms.SupportedAggregationTypes != nil { 8570 objectMap["supportedAggregationTypes"] = ms.SupportedAggregationTypes 8571 } 8572 return json.Marshal(objectMap) 8573} 8574 8575// Mp4Format describes the properties for an output ISO MP4 file. 8576type Mp4Format struct { 8577 // 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 . 8578 OutputFiles *[]OutputFile `json:"outputFiles,omitempty"` 8579 // 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. 8580 FilenamePattern *string `json:"filenamePattern,omitempty"` 8581 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 8582 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 8583} 8584 8585// MarshalJSON is the custom marshaler for Mp4Format. 8586func (m4f Mp4Format) MarshalJSON() ([]byte, error) { 8587 m4f.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format 8588 objectMap := make(map[string]interface{}) 8589 if m4f.OutputFiles != nil { 8590 objectMap["outputFiles"] = m4f.OutputFiles 8591 } 8592 if m4f.FilenamePattern != nil { 8593 objectMap["filenamePattern"] = m4f.FilenamePattern 8594 } 8595 if m4f.OdataType != "" { 8596 objectMap["@odata.type"] = m4f.OdataType 8597 } 8598 return json.Marshal(objectMap) 8599} 8600 8601// AsImageFormat is the BasicFormat implementation for Mp4Format. 8602func (m4f Mp4Format) AsImageFormat() (*ImageFormat, bool) { 8603 return nil, false 8604} 8605 8606// AsBasicImageFormat is the BasicFormat implementation for Mp4Format. 8607func (m4f Mp4Format) AsBasicImageFormat() (BasicImageFormat, bool) { 8608 return nil, false 8609} 8610 8611// AsJpgFormat is the BasicFormat implementation for Mp4Format. 8612func (m4f Mp4Format) AsJpgFormat() (*JpgFormat, bool) { 8613 return nil, false 8614} 8615 8616// AsPngFormat is the BasicFormat implementation for Mp4Format. 8617func (m4f Mp4Format) AsPngFormat() (*PngFormat, bool) { 8618 return nil, false 8619} 8620 8621// AsMultiBitrateFormat is the BasicFormat implementation for Mp4Format. 8622func (m4f Mp4Format) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 8623 return nil, false 8624} 8625 8626// AsBasicMultiBitrateFormat is the BasicFormat implementation for Mp4Format. 8627func (m4f Mp4Format) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 8628 return &m4f, true 8629} 8630 8631// AsMp4Format is the BasicFormat implementation for Mp4Format. 8632func (m4f Mp4Format) AsMp4Format() (*Mp4Format, bool) { 8633 return &m4f, true 8634} 8635 8636// AsTransportStreamFormat is the BasicFormat implementation for Mp4Format. 8637func (m4f Mp4Format) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 8638 return nil, false 8639} 8640 8641// AsFormat is the BasicFormat implementation for Mp4Format. 8642func (m4f Mp4Format) AsFormat() (*Format, bool) { 8643 return nil, false 8644} 8645 8646// AsBasicFormat is the BasicFormat implementation for Mp4Format. 8647func (m4f Mp4Format) AsBasicFormat() (BasicFormat, bool) { 8648 return &m4f, true 8649} 8650 8651// BasicMultiBitrateFormat describes the properties for producing a collection of GOP aligned multi-bitrate files. The 8652// default behavior is to produce one output file for each video layer which is muxed together with all the audios. The 8653// exact output files produced can be controlled by specifying the outputFiles collection. 8654type BasicMultiBitrateFormat interface { 8655 AsMp4Format() (*Mp4Format, bool) 8656 AsTransportStreamFormat() (*TransportStreamFormat, bool) 8657 AsMultiBitrateFormat() (*MultiBitrateFormat, bool) 8658} 8659 8660// MultiBitrateFormat describes the properties for producing a collection of GOP aligned multi-bitrate files. 8661// The default behavior is to produce one output file for each video layer which is muxed together with all the 8662// audios. The exact output files produced can be controlled by specifying the outputFiles collection. 8663type MultiBitrateFormat struct { 8664 // 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 . 8665 OutputFiles *[]OutputFile `json:"outputFiles,omitempty"` 8666 // 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. 8667 FilenamePattern *string `json:"filenamePattern,omitempty"` 8668 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 8669 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 8670} 8671 8672func unmarshalBasicMultiBitrateFormat(body []byte) (BasicMultiBitrateFormat, error) { 8673 var m map[string]interface{} 8674 err := json.Unmarshal(body, &m) 8675 if err != nil { 8676 return nil, err 8677 } 8678 8679 switch m["@odata.type"] { 8680 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format): 8681 var m4f Mp4Format 8682 err := json.Unmarshal(body, &m4f) 8683 return m4f, err 8684 case string(OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat): 8685 var tsf TransportStreamFormat 8686 err := json.Unmarshal(body, &tsf) 8687 return tsf, err 8688 default: 8689 var mbf MultiBitrateFormat 8690 err := json.Unmarshal(body, &mbf) 8691 return mbf, err 8692 } 8693} 8694func unmarshalBasicMultiBitrateFormatArray(body []byte) ([]BasicMultiBitrateFormat, error) { 8695 var rawMessages []*json.RawMessage 8696 err := json.Unmarshal(body, &rawMessages) 8697 if err != nil { 8698 return nil, err 8699 } 8700 8701 mbfArray := make([]BasicMultiBitrateFormat, len(rawMessages)) 8702 8703 for index, rawMessage := range rawMessages { 8704 mbf, err := unmarshalBasicMultiBitrateFormat(*rawMessage) 8705 if err != nil { 8706 return nil, err 8707 } 8708 mbfArray[index] = mbf 8709 } 8710 return mbfArray, nil 8711} 8712 8713// MarshalJSON is the custom marshaler for MultiBitrateFormat. 8714func (mbf MultiBitrateFormat) MarshalJSON() ([]byte, error) { 8715 mbf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat 8716 objectMap := make(map[string]interface{}) 8717 if mbf.OutputFiles != nil { 8718 objectMap["outputFiles"] = mbf.OutputFiles 8719 } 8720 if mbf.FilenamePattern != nil { 8721 objectMap["filenamePattern"] = mbf.FilenamePattern 8722 } 8723 if mbf.OdataType != "" { 8724 objectMap["@odata.type"] = mbf.OdataType 8725 } 8726 return json.Marshal(objectMap) 8727} 8728 8729// AsImageFormat is the BasicFormat implementation for MultiBitrateFormat. 8730func (mbf MultiBitrateFormat) AsImageFormat() (*ImageFormat, bool) { 8731 return nil, false 8732} 8733 8734// AsBasicImageFormat is the BasicFormat implementation for MultiBitrateFormat. 8735func (mbf MultiBitrateFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 8736 return nil, false 8737} 8738 8739// AsJpgFormat is the BasicFormat implementation for MultiBitrateFormat. 8740func (mbf MultiBitrateFormat) AsJpgFormat() (*JpgFormat, bool) { 8741 return nil, false 8742} 8743 8744// AsPngFormat is the BasicFormat implementation for MultiBitrateFormat. 8745func (mbf MultiBitrateFormat) AsPngFormat() (*PngFormat, bool) { 8746 return nil, false 8747} 8748 8749// AsMultiBitrateFormat is the BasicFormat implementation for MultiBitrateFormat. 8750func (mbf MultiBitrateFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 8751 return &mbf, true 8752} 8753 8754// AsBasicMultiBitrateFormat is the BasicFormat implementation for MultiBitrateFormat. 8755func (mbf MultiBitrateFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 8756 return &mbf, true 8757} 8758 8759// AsMp4Format is the BasicFormat implementation for MultiBitrateFormat. 8760func (mbf MultiBitrateFormat) AsMp4Format() (*Mp4Format, bool) { 8761 return nil, false 8762} 8763 8764// AsTransportStreamFormat is the BasicFormat implementation for MultiBitrateFormat. 8765func (mbf MultiBitrateFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 8766 return nil, false 8767} 8768 8769// AsFormat is the BasicFormat implementation for MultiBitrateFormat. 8770func (mbf MultiBitrateFormat) AsFormat() (*Format, bool) { 8771 return nil, false 8772} 8773 8774// AsBasicFormat is the BasicFormat implementation for MultiBitrateFormat. 8775func (mbf MultiBitrateFormat) AsBasicFormat() (BasicFormat, bool) { 8776 return &mbf, true 8777} 8778 8779// NoEncryption class for NoEncryption scheme 8780type NoEncryption struct { 8781 // EnabledProtocols - Representing supported protocols 8782 EnabledProtocols *EnabledProtocols `json:"enabledProtocols,omitempty"` 8783} 8784 8785// ODataError information about an error. 8786type ODataError struct { 8787 // Code - A language-independent error name. 8788 Code *string `json:"code,omitempty"` 8789 // Message - The error message. 8790 Message *string `json:"message,omitempty"` 8791 // Target - The target of the error (for example, the name of the property in error). 8792 Target *string `json:"target,omitempty"` 8793 // Details - The error details. 8794 Details *[]ODataError `json:"details,omitempty"` 8795} 8796 8797// Operation an operation. 8798type Operation struct { 8799 // Name - The operation name. 8800 Name *string `json:"name,omitempty"` 8801 // Display - The operation display name. 8802 Display *OperationDisplay `json:"display,omitempty"` 8803 // Origin - Origin of the operation. 8804 Origin *string `json:"origin,omitempty"` 8805 // Properties - Operation properties format. 8806 Properties *Properties `json:"properties,omitempty"` 8807 // IsDataAction - Whether the operation applies to data-plane. 8808 IsDataAction *bool `json:"isDataAction,omitempty"` 8809 // ActionType - Indicates the action type. Possible values include: 'ActionTypeInternal' 8810 ActionType ActionType `json:"actionType,omitempty"` 8811} 8812 8813// OperationCollection a collection of Operation items. 8814type OperationCollection struct { 8815 autorest.Response `json:"-"` 8816 // Value - A collection of Operation items. 8817 Value *[]Operation `json:"value,omitempty"` 8818 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 8819 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 8820} 8821 8822// OperationCollectionIterator provides access to a complete listing of Operation values. 8823type OperationCollectionIterator struct { 8824 i int 8825 page OperationCollectionPage 8826} 8827 8828// NextWithContext advances to the next value. If there was an error making 8829// the request the iterator does not advance and the error is returned. 8830func (iter *OperationCollectionIterator) NextWithContext(ctx context.Context) (err error) { 8831 if tracing.IsEnabled() { 8832 ctx = tracing.StartSpan(ctx, fqdn+"/OperationCollectionIterator.NextWithContext") 8833 defer func() { 8834 sc := -1 8835 if iter.Response().Response.Response != nil { 8836 sc = iter.Response().Response.Response.StatusCode 8837 } 8838 tracing.EndSpan(ctx, sc, err) 8839 }() 8840 } 8841 iter.i++ 8842 if iter.i < len(iter.page.Values()) { 8843 return nil 8844 } 8845 err = iter.page.NextWithContext(ctx) 8846 if err != nil { 8847 iter.i-- 8848 return err 8849 } 8850 iter.i = 0 8851 return nil 8852} 8853 8854// Next advances to the next value. If there was an error making 8855// the request the iterator does not advance and the error is returned. 8856// Deprecated: Use NextWithContext() instead. 8857func (iter *OperationCollectionIterator) Next() error { 8858 return iter.NextWithContext(context.Background()) 8859} 8860 8861// NotDone returns true if the enumeration should be started or is not yet complete. 8862func (iter OperationCollectionIterator) NotDone() bool { 8863 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 8864} 8865 8866// Response returns the raw server response from the last page request. 8867func (iter OperationCollectionIterator) Response() OperationCollection { 8868 return iter.page.Response() 8869} 8870 8871// Value returns the current value or a zero-initialized value if the 8872// iterator has advanced beyond the end of the collection. 8873func (iter OperationCollectionIterator) Value() Operation { 8874 if !iter.page.NotDone() { 8875 return Operation{} 8876 } 8877 return iter.page.Values()[iter.i] 8878} 8879 8880// Creates a new instance of the OperationCollectionIterator type. 8881func NewOperationCollectionIterator(page OperationCollectionPage) OperationCollectionIterator { 8882 return OperationCollectionIterator{page: page} 8883} 8884 8885// IsEmpty returns true if the ListResult contains no values. 8886func (oc OperationCollection) IsEmpty() bool { 8887 return oc.Value == nil || len(*oc.Value) == 0 8888} 8889 8890// hasNextLink returns true if the NextLink is not empty. 8891func (oc OperationCollection) hasNextLink() bool { 8892 return oc.OdataNextLink != nil && len(*oc.OdataNextLink) != 0 8893} 8894 8895// operationCollectionPreparer prepares a request to retrieve the next set of results. 8896// It returns nil if no more results exist. 8897func (oc OperationCollection) operationCollectionPreparer(ctx context.Context) (*http.Request, error) { 8898 if !oc.hasNextLink() { 8899 return nil, nil 8900 } 8901 return autorest.Prepare((&http.Request{}).WithContext(ctx), 8902 autorest.AsJSON(), 8903 autorest.AsGet(), 8904 autorest.WithBaseURL(to.String(oc.OdataNextLink))) 8905} 8906 8907// OperationCollectionPage contains a page of Operation values. 8908type OperationCollectionPage struct { 8909 fn func(context.Context, OperationCollection) (OperationCollection, error) 8910 oc OperationCollection 8911} 8912 8913// NextWithContext advances to the next page of values. If there was an error making 8914// the request the page does not advance and the error is returned. 8915func (page *OperationCollectionPage) NextWithContext(ctx context.Context) (err error) { 8916 if tracing.IsEnabled() { 8917 ctx = tracing.StartSpan(ctx, fqdn+"/OperationCollectionPage.NextWithContext") 8918 defer func() { 8919 sc := -1 8920 if page.Response().Response.Response != nil { 8921 sc = page.Response().Response.Response.StatusCode 8922 } 8923 tracing.EndSpan(ctx, sc, err) 8924 }() 8925 } 8926 for { 8927 next, err := page.fn(ctx, page.oc) 8928 if err != nil { 8929 return err 8930 } 8931 page.oc = next 8932 if !next.hasNextLink() || !next.IsEmpty() { 8933 break 8934 } 8935 } 8936 return nil 8937} 8938 8939// Next advances to the next page of values. If there was an error making 8940// the request the page does not advance and the error is returned. 8941// Deprecated: Use NextWithContext() instead. 8942func (page *OperationCollectionPage) Next() error { 8943 return page.NextWithContext(context.Background()) 8944} 8945 8946// NotDone returns true if the page enumeration should be started or is not yet complete. 8947func (page OperationCollectionPage) NotDone() bool { 8948 return !page.oc.IsEmpty() 8949} 8950 8951// Response returns the raw server response from the last page request. 8952func (page OperationCollectionPage) Response() OperationCollection { 8953 return page.oc 8954} 8955 8956// Values returns the slice of values for the current page or nil if there are no values. 8957func (page OperationCollectionPage) Values() []Operation { 8958 if page.oc.IsEmpty() { 8959 return nil 8960 } 8961 return *page.oc.Value 8962} 8963 8964// Creates a new instance of the OperationCollectionPage type. 8965func NewOperationCollectionPage(cur OperationCollection, getNextPage func(context.Context, OperationCollection) (OperationCollection, error)) OperationCollectionPage { 8966 return OperationCollectionPage{ 8967 fn: getNextPage, 8968 oc: cur, 8969 } 8970} 8971 8972// OperationDisplay operation details. 8973type OperationDisplay struct { 8974 // Provider - The service provider. 8975 Provider *string `json:"provider,omitempty"` 8976 // Resource - Resource on which the operation is performed. 8977 Resource *string `json:"resource,omitempty"` 8978 // Operation - The operation type. 8979 Operation *string `json:"operation,omitempty"` 8980 // Description - The operation description. 8981 Description *string `json:"description,omitempty"` 8982} 8983 8984// OutputFile represents an output file produced. 8985type OutputFile struct { 8986 // 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. 8987 Labels *[]string `json:"labels,omitempty"` 8988} 8989 8990// BasicOverlay base type for all overlays - image, audio or video. 8991type BasicOverlay interface { 8992 AsAudioOverlay() (*AudioOverlay, bool) 8993 AsVideoOverlay() (*VideoOverlay, bool) 8994 AsOverlay() (*Overlay, bool) 8995} 8996 8997// Overlay base type for all overlays - image, audio or video. 8998type Overlay struct { 8999 // 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. 9000 InputLabel *string `json:"inputLabel,omitempty"` 9001 // 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. 9002 Start *string `json:"start,omitempty"` 9003 // 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. 9004 End *string `json:"end,omitempty"` 9005 // 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). 9006 FadeInDuration *string `json:"fadeInDuration,omitempty"` 9007 // 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). 9008 FadeOutDuration *string `json:"fadeOutDuration,omitempty"` 9009 // AudioGainLevel - The gain level of audio in the overlay. The value should be in the range [0, 1.0]. The default is 1.0. 9010 AudioGainLevel *float64 `json:"audioGainLevel,omitempty"` 9011 // OdataType - Possible values include: 'OdataTypeBasicOverlayOdataTypeOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay' 9012 OdataType OdataTypeBasicOverlay `json:"@odata.type,omitempty"` 9013} 9014 9015func unmarshalBasicOverlay(body []byte) (BasicOverlay, error) { 9016 var m map[string]interface{} 9017 err := json.Unmarshal(body, &m) 9018 if err != nil { 9019 return nil, err 9020 } 9021 9022 switch m["@odata.type"] { 9023 case string(OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay): 9024 var ao AudioOverlay 9025 err := json.Unmarshal(body, &ao) 9026 return ao, err 9027 case string(OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay): 9028 var vo VideoOverlay 9029 err := json.Unmarshal(body, &vo) 9030 return vo, err 9031 default: 9032 var o Overlay 9033 err := json.Unmarshal(body, &o) 9034 return o, err 9035 } 9036} 9037func unmarshalBasicOverlayArray(body []byte) ([]BasicOverlay, error) { 9038 var rawMessages []*json.RawMessage 9039 err := json.Unmarshal(body, &rawMessages) 9040 if err != nil { 9041 return nil, err 9042 } 9043 9044 oArray := make([]BasicOverlay, len(rawMessages)) 9045 9046 for index, rawMessage := range rawMessages { 9047 o, err := unmarshalBasicOverlay(*rawMessage) 9048 if err != nil { 9049 return nil, err 9050 } 9051 oArray[index] = o 9052 } 9053 return oArray, nil 9054} 9055 9056// MarshalJSON is the custom marshaler for Overlay. 9057func (o Overlay) MarshalJSON() ([]byte, error) { 9058 o.OdataType = OdataTypeBasicOverlayOdataTypeOverlay 9059 objectMap := make(map[string]interface{}) 9060 if o.InputLabel != nil { 9061 objectMap["inputLabel"] = o.InputLabel 9062 } 9063 if o.Start != nil { 9064 objectMap["start"] = o.Start 9065 } 9066 if o.End != nil { 9067 objectMap["end"] = o.End 9068 } 9069 if o.FadeInDuration != nil { 9070 objectMap["fadeInDuration"] = o.FadeInDuration 9071 } 9072 if o.FadeOutDuration != nil { 9073 objectMap["fadeOutDuration"] = o.FadeOutDuration 9074 } 9075 if o.AudioGainLevel != nil { 9076 objectMap["audioGainLevel"] = o.AudioGainLevel 9077 } 9078 if o.OdataType != "" { 9079 objectMap["@odata.type"] = o.OdataType 9080 } 9081 return json.Marshal(objectMap) 9082} 9083 9084// AsAudioOverlay is the BasicOverlay implementation for Overlay. 9085func (o Overlay) AsAudioOverlay() (*AudioOverlay, bool) { 9086 return nil, false 9087} 9088 9089// AsVideoOverlay is the BasicOverlay implementation for Overlay. 9090func (o Overlay) AsVideoOverlay() (*VideoOverlay, bool) { 9091 return nil, false 9092} 9093 9094// AsOverlay is the BasicOverlay implementation for Overlay. 9095func (o Overlay) AsOverlay() (*Overlay, bool) { 9096 return &o, true 9097} 9098 9099// AsBasicOverlay is the BasicOverlay implementation for Overlay. 9100func (o Overlay) AsBasicOverlay() (BasicOverlay, bool) { 9101 return &o, true 9102} 9103 9104// PngFormat describes the settings for producing PNG thumbnails. 9105type PngFormat struct { 9106 // 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. 9107 FilenamePattern *string `json:"filenamePattern,omitempty"` 9108 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 9109 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 9110} 9111 9112// MarshalJSON is the custom marshaler for PngFormat. 9113func (pf PngFormat) MarshalJSON() ([]byte, error) { 9114 pf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat 9115 objectMap := make(map[string]interface{}) 9116 if pf.FilenamePattern != nil { 9117 objectMap["filenamePattern"] = pf.FilenamePattern 9118 } 9119 if pf.OdataType != "" { 9120 objectMap["@odata.type"] = pf.OdataType 9121 } 9122 return json.Marshal(objectMap) 9123} 9124 9125// AsImageFormat is the BasicFormat implementation for PngFormat. 9126func (pf PngFormat) AsImageFormat() (*ImageFormat, bool) { 9127 return nil, false 9128} 9129 9130// AsBasicImageFormat is the BasicFormat implementation for PngFormat. 9131func (pf PngFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 9132 return &pf, true 9133} 9134 9135// AsJpgFormat is the BasicFormat implementation for PngFormat. 9136func (pf PngFormat) AsJpgFormat() (*JpgFormat, bool) { 9137 return nil, false 9138} 9139 9140// AsPngFormat is the BasicFormat implementation for PngFormat. 9141func (pf PngFormat) AsPngFormat() (*PngFormat, bool) { 9142 return &pf, true 9143} 9144 9145// AsMultiBitrateFormat is the BasicFormat implementation for PngFormat. 9146func (pf PngFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 9147 return nil, false 9148} 9149 9150// AsBasicMultiBitrateFormat is the BasicFormat implementation for PngFormat. 9151func (pf PngFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 9152 return nil, false 9153} 9154 9155// AsMp4Format is the BasicFormat implementation for PngFormat. 9156func (pf PngFormat) AsMp4Format() (*Mp4Format, bool) { 9157 return nil, false 9158} 9159 9160// AsTransportStreamFormat is the BasicFormat implementation for PngFormat. 9161func (pf PngFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 9162 return nil, false 9163} 9164 9165// AsFormat is the BasicFormat implementation for PngFormat. 9166func (pf PngFormat) AsFormat() (*Format, bool) { 9167 return nil, false 9168} 9169 9170// AsBasicFormat is the BasicFormat implementation for PngFormat. 9171func (pf PngFormat) AsBasicFormat() (BasicFormat, bool) { 9172 return &pf, true 9173} 9174 9175// PngImage describes the properties for producing a series of PNG images from the input video. 9176type PngImage struct { 9177 // Layers - A collection of output PNG image layers to be produced by the encoder. 9178 Layers *[]PngLayer `json:"layers,omitempty"` 9179 // 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}. 9180 Start *string `json:"start,omitempty"` 9181 // 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. 9182 Step *string `json:"step,omitempty"` 9183 // 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. 9184 Range *string `json:"range,omitempty"` 9185 // 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. 9186 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 9187 // 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' 9188 StretchMode StretchMode `json:"stretchMode,omitempty"` 9189 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 9190 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 9191 // Label - An optional label for the codec. The label can be used to control muxing behavior. 9192 Label *string `json:"label,omitempty"` 9193 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 9194 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 9195} 9196 9197// MarshalJSON is the custom marshaler for PngImage. 9198func (pi PngImage) MarshalJSON() ([]byte, error) { 9199 pi.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage 9200 objectMap := make(map[string]interface{}) 9201 if pi.Layers != nil { 9202 objectMap["layers"] = pi.Layers 9203 } 9204 if pi.Start != nil { 9205 objectMap["start"] = pi.Start 9206 } 9207 if pi.Step != nil { 9208 objectMap["step"] = pi.Step 9209 } 9210 if pi.Range != nil { 9211 objectMap["range"] = pi.Range 9212 } 9213 if pi.KeyFrameInterval != nil { 9214 objectMap["keyFrameInterval"] = pi.KeyFrameInterval 9215 } 9216 if pi.StretchMode != "" { 9217 objectMap["stretchMode"] = pi.StretchMode 9218 } 9219 if pi.SyncMode != "" { 9220 objectMap["syncMode"] = pi.SyncMode 9221 } 9222 if pi.Label != nil { 9223 objectMap["label"] = pi.Label 9224 } 9225 if pi.OdataType != "" { 9226 objectMap["@odata.type"] = pi.OdataType 9227 } 9228 return json.Marshal(objectMap) 9229} 9230 9231// AsAudio is the BasicCodec implementation for PngImage. 9232func (pi PngImage) AsAudio() (*Audio, bool) { 9233 return nil, false 9234} 9235 9236// AsBasicAudio is the BasicCodec implementation for PngImage. 9237func (pi PngImage) AsBasicAudio() (BasicAudio, bool) { 9238 return nil, false 9239} 9240 9241// AsAacAudio is the BasicCodec implementation for PngImage. 9242func (pi PngImage) AsAacAudio() (*AacAudio, bool) { 9243 return nil, false 9244} 9245 9246// AsVideo is the BasicCodec implementation for PngImage. 9247func (pi PngImage) AsVideo() (*Video, bool) { 9248 return nil, false 9249} 9250 9251// AsBasicVideo is the BasicCodec implementation for PngImage. 9252func (pi PngImage) AsBasicVideo() (BasicVideo, bool) { 9253 return &pi, true 9254} 9255 9256// AsH265Video is the BasicCodec implementation for PngImage. 9257func (pi PngImage) AsH265Video() (*H265Video, bool) { 9258 return nil, false 9259} 9260 9261// AsCopyVideo is the BasicCodec implementation for PngImage. 9262func (pi PngImage) AsCopyVideo() (*CopyVideo, bool) { 9263 return nil, false 9264} 9265 9266// AsImage is the BasicCodec implementation for PngImage. 9267func (pi PngImage) AsImage() (*Image, bool) { 9268 return nil, false 9269} 9270 9271// AsBasicImage is the BasicCodec implementation for PngImage. 9272func (pi PngImage) AsBasicImage() (BasicImage, bool) { 9273 return &pi, true 9274} 9275 9276// AsCopyAudio is the BasicCodec implementation for PngImage. 9277func (pi PngImage) AsCopyAudio() (*CopyAudio, bool) { 9278 return nil, false 9279} 9280 9281// AsH264Video is the BasicCodec implementation for PngImage. 9282func (pi PngImage) AsH264Video() (*H264Video, bool) { 9283 return nil, false 9284} 9285 9286// AsJpgImage is the BasicCodec implementation for PngImage. 9287func (pi PngImage) AsJpgImage() (*JpgImage, bool) { 9288 return nil, false 9289} 9290 9291// AsPngImage is the BasicCodec implementation for PngImage. 9292func (pi PngImage) AsPngImage() (*PngImage, bool) { 9293 return &pi, true 9294} 9295 9296// AsCodec is the BasicCodec implementation for PngImage. 9297func (pi PngImage) AsCodec() (*Codec, bool) { 9298 return nil, false 9299} 9300 9301// AsBasicCodec is the BasicCodec implementation for PngImage. 9302func (pi PngImage) AsBasicCodec() (BasicCodec, bool) { 9303 return &pi, true 9304} 9305 9306// PngLayer describes the settings to produce a PNG image from the input video. 9307type PngLayer struct { 9308 // 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. 9309 Width *string `json:"width,omitempty"` 9310 // 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. 9311 Height *string `json:"height,omitempty"` 9312 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 9313 Label *string `json:"label,omitempty"` 9314 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 9315 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 9316} 9317 9318// MarshalJSON is the custom marshaler for PngLayer. 9319func (pl PngLayer) MarshalJSON() ([]byte, error) { 9320 pl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer 9321 objectMap := make(map[string]interface{}) 9322 if pl.Width != nil { 9323 objectMap["width"] = pl.Width 9324 } 9325 if pl.Height != nil { 9326 objectMap["height"] = pl.Height 9327 } 9328 if pl.Label != nil { 9329 objectMap["label"] = pl.Label 9330 } 9331 if pl.OdataType != "" { 9332 objectMap["@odata.type"] = pl.OdataType 9333 } 9334 return json.Marshal(objectMap) 9335} 9336 9337// AsH265VideoLayer is the BasicLayer implementation for PngLayer. 9338func (pl PngLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 9339 return nil, false 9340} 9341 9342// AsBasicH265VideoLayer is the BasicLayer implementation for PngLayer. 9343func (pl PngLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 9344 return nil, false 9345} 9346 9347// AsH265Layer is the BasicLayer implementation for PngLayer. 9348func (pl PngLayer) AsH265Layer() (*H265Layer, bool) { 9349 return nil, false 9350} 9351 9352// AsVideoLayer is the BasicLayer implementation for PngLayer. 9353func (pl PngLayer) AsVideoLayer() (*VideoLayer, bool) { 9354 return nil, false 9355} 9356 9357// AsBasicVideoLayer is the BasicLayer implementation for PngLayer. 9358func (pl PngLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 9359 return nil, false 9360} 9361 9362// AsH264Layer is the BasicLayer implementation for PngLayer. 9363func (pl PngLayer) AsH264Layer() (*H264Layer, bool) { 9364 return nil, false 9365} 9366 9367// AsJpgLayer is the BasicLayer implementation for PngLayer. 9368func (pl PngLayer) AsJpgLayer() (*JpgLayer, bool) { 9369 return nil, false 9370} 9371 9372// AsPngLayer is the BasicLayer implementation for PngLayer. 9373func (pl PngLayer) AsPngLayer() (*PngLayer, bool) { 9374 return &pl, true 9375} 9376 9377// AsLayer is the BasicLayer implementation for PngLayer. 9378func (pl PngLayer) AsLayer() (*Layer, bool) { 9379 return nil, false 9380} 9381 9382// AsBasicLayer is the BasicLayer implementation for PngLayer. 9383func (pl PngLayer) AsBasicLayer() (BasicLayer, bool) { 9384 return &pl, true 9385} 9386 9387// PresentationTimeRange the presentation time range, this is asset related and not recommended for Account 9388// Filter. 9389type PresentationTimeRange struct { 9390 // StartTimestamp - The absolute start time boundary. 9391 StartTimestamp *int64 `json:"startTimestamp,omitempty"` 9392 // EndTimestamp - The absolute end time boundary. 9393 EndTimestamp *int64 `json:"endTimestamp,omitempty"` 9394 // PresentationWindowDuration - The relative to end sliding window. 9395 PresentationWindowDuration *int64 `json:"presentationWindowDuration,omitempty"` 9396 // LiveBackoffDuration - The relative to end right edge. 9397 LiveBackoffDuration *int64 `json:"liveBackoffDuration,omitempty"` 9398 // Timescale - The time scale of time stamps. 9399 Timescale *int64 `json:"timescale,omitempty"` 9400 // ForceEndTimestamp - The indicator of forcing existing of end time stamp. 9401 ForceEndTimestamp *bool `json:"forceEndTimestamp,omitempty"` 9402} 9403 9404// BasicPreset base type for all Presets, which define the recipe or instructions on how the input media files should 9405// be processed. 9406type BasicPreset interface { 9407 AsFaceDetectorPreset() (*FaceDetectorPreset, bool) 9408 AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) 9409 AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) 9410 AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) 9411 AsStandardEncoderPreset() (*StandardEncoderPreset, bool) 9412 AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) 9413 AsPreset() (*Preset, bool) 9414} 9415 9416// Preset base type for all Presets, which define the recipe or instructions on how the input media files 9417// should be processed. 9418type Preset struct { 9419 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 9420 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 9421} 9422 9423func unmarshalBasicPreset(body []byte) (BasicPreset, error) { 9424 var m map[string]interface{} 9425 err := json.Unmarshal(body, &m) 9426 if err != nil { 9427 return nil, err 9428 } 9429 9430 switch m["@odata.type"] { 9431 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset): 9432 var fdp FaceDetectorPreset 9433 err := json.Unmarshal(body, &fdp) 9434 return fdp, err 9435 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset): 9436 var aap AudioAnalyzerPreset 9437 err := json.Unmarshal(body, &aap) 9438 return aap, err 9439 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset): 9440 var bisep BuiltInStandardEncoderPreset 9441 err := json.Unmarshal(body, &bisep) 9442 return bisep, err 9443 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset): 9444 var sep StandardEncoderPreset 9445 err := json.Unmarshal(body, &sep) 9446 return sep, err 9447 case string(OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset): 9448 var vap VideoAnalyzerPreset 9449 err := json.Unmarshal(body, &vap) 9450 return vap, err 9451 default: 9452 var p Preset 9453 err := json.Unmarshal(body, &p) 9454 return p, err 9455 } 9456} 9457func unmarshalBasicPresetArray(body []byte) ([]BasicPreset, error) { 9458 var rawMessages []*json.RawMessage 9459 err := json.Unmarshal(body, &rawMessages) 9460 if err != nil { 9461 return nil, err 9462 } 9463 9464 pArray := make([]BasicPreset, len(rawMessages)) 9465 9466 for index, rawMessage := range rawMessages { 9467 p, err := unmarshalBasicPreset(*rawMessage) 9468 if err != nil { 9469 return nil, err 9470 } 9471 pArray[index] = p 9472 } 9473 return pArray, nil 9474} 9475 9476// MarshalJSON is the custom marshaler for Preset. 9477func (p Preset) MarshalJSON() ([]byte, error) { 9478 p.OdataType = OdataTypeBasicPresetOdataTypePreset 9479 objectMap := make(map[string]interface{}) 9480 if p.OdataType != "" { 9481 objectMap["@odata.type"] = p.OdataType 9482 } 9483 return json.Marshal(objectMap) 9484} 9485 9486// AsFaceDetectorPreset is the BasicPreset implementation for Preset. 9487func (p Preset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 9488 return nil, false 9489} 9490 9491// AsAudioAnalyzerPreset is the BasicPreset implementation for Preset. 9492func (p Preset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 9493 return nil, false 9494} 9495 9496// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for Preset. 9497func (p Preset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 9498 return nil, false 9499} 9500 9501// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for Preset. 9502func (p Preset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 9503 return nil, false 9504} 9505 9506// AsStandardEncoderPreset is the BasicPreset implementation for Preset. 9507func (p Preset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 9508 return nil, false 9509} 9510 9511// AsVideoAnalyzerPreset is the BasicPreset implementation for Preset. 9512func (p Preset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 9513 return nil, false 9514} 9515 9516// AsPreset is the BasicPreset implementation for Preset. 9517func (p Preset) AsPreset() (*Preset, bool) { 9518 return &p, true 9519} 9520 9521// AsBasicPreset is the BasicPreset implementation for Preset. 9522func (p Preset) AsBasicPreset() (BasicPreset, bool) { 9523 return &p, true 9524} 9525 9526// PrivateEndpoint the Private Endpoint resource. 9527type PrivateEndpoint struct { 9528 // ID - READ-ONLY; The ARM identifier for Private Endpoint 9529 ID *string `json:"id,omitempty"` 9530} 9531 9532// MarshalJSON is the custom marshaler for PrivateEndpoint. 9533func (peVar PrivateEndpoint) MarshalJSON() ([]byte, error) { 9534 objectMap := make(map[string]interface{}) 9535 return json.Marshal(objectMap) 9536} 9537 9538// PrivateEndpointConnection the Private Endpoint Connection resource. 9539type PrivateEndpointConnection struct { 9540 autorest.Response `json:"-"` 9541 // PrivateEndpointConnectionProperties - Resource properties. 9542 *PrivateEndpointConnectionProperties `json:"properties,omitempty"` 9543 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9544 ID *string `json:"id,omitempty"` 9545 // Name - READ-ONLY; The name of the resource 9546 Name *string `json:"name,omitempty"` 9547 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9548 Type *string `json:"type,omitempty"` 9549} 9550 9551// MarshalJSON is the custom marshaler for PrivateEndpointConnection. 9552func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) { 9553 objectMap := make(map[string]interface{}) 9554 if pec.PrivateEndpointConnectionProperties != nil { 9555 objectMap["properties"] = pec.PrivateEndpointConnectionProperties 9556 } 9557 return json.Marshal(objectMap) 9558} 9559 9560// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnection struct. 9561func (pec *PrivateEndpointConnection) UnmarshalJSON(body []byte) error { 9562 var m map[string]*json.RawMessage 9563 err := json.Unmarshal(body, &m) 9564 if err != nil { 9565 return err 9566 } 9567 for k, v := range m { 9568 switch k { 9569 case "properties": 9570 if v != nil { 9571 var privateEndpointConnectionProperties PrivateEndpointConnectionProperties 9572 err = json.Unmarshal(*v, &privateEndpointConnectionProperties) 9573 if err != nil { 9574 return err 9575 } 9576 pec.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties 9577 } 9578 case "id": 9579 if v != nil { 9580 var ID string 9581 err = json.Unmarshal(*v, &ID) 9582 if err != nil { 9583 return err 9584 } 9585 pec.ID = &ID 9586 } 9587 case "name": 9588 if v != nil { 9589 var name string 9590 err = json.Unmarshal(*v, &name) 9591 if err != nil { 9592 return err 9593 } 9594 pec.Name = &name 9595 } 9596 case "type": 9597 if v != nil { 9598 var typeVar string 9599 err = json.Unmarshal(*v, &typeVar) 9600 if err != nil { 9601 return err 9602 } 9603 pec.Type = &typeVar 9604 } 9605 } 9606 } 9607 9608 return nil 9609} 9610 9611// PrivateEndpointConnectionListResult list of private endpoint connection associated with the specified 9612// storage account 9613type PrivateEndpointConnectionListResult struct { 9614 autorest.Response `json:"-"` 9615 // Value - Array of private endpoint connections 9616 Value *[]PrivateEndpointConnection `json:"value,omitempty"` 9617} 9618 9619// PrivateEndpointConnectionProperties properties of the PrivateEndpointConnectProperties. 9620type PrivateEndpointConnectionProperties struct { 9621 // PrivateEndpoint - The resource of private end point. 9622 PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"` 9623 // PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer and provider. 9624 PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"` 9625 // ProvisioningState - The provisioning state of the private endpoint connection resource. Possible values include: 'PrivateEndpointConnectionProvisioningStateSucceeded', 'PrivateEndpointConnectionProvisioningStateCreating', 'PrivateEndpointConnectionProvisioningStateDeleting', 'PrivateEndpointConnectionProvisioningStateFailed' 9626 ProvisioningState PrivateEndpointConnectionProvisioningState `json:"provisioningState,omitempty"` 9627} 9628 9629// PrivateLinkResource a private link resource 9630type PrivateLinkResource struct { 9631 autorest.Response `json:"-"` 9632 // PrivateLinkResourceProperties - Resource properties. 9633 *PrivateLinkResourceProperties `json:"properties,omitempty"` 9634 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9635 ID *string `json:"id,omitempty"` 9636 // Name - READ-ONLY; The name of the resource 9637 Name *string `json:"name,omitempty"` 9638 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9639 Type *string `json:"type,omitempty"` 9640} 9641 9642// MarshalJSON is the custom marshaler for PrivateLinkResource. 9643func (plr PrivateLinkResource) MarshalJSON() ([]byte, error) { 9644 objectMap := make(map[string]interface{}) 9645 if plr.PrivateLinkResourceProperties != nil { 9646 objectMap["properties"] = plr.PrivateLinkResourceProperties 9647 } 9648 return json.Marshal(objectMap) 9649} 9650 9651// UnmarshalJSON is the custom unmarshaler for PrivateLinkResource struct. 9652func (plr *PrivateLinkResource) UnmarshalJSON(body []byte) error { 9653 var m map[string]*json.RawMessage 9654 err := json.Unmarshal(body, &m) 9655 if err != nil { 9656 return err 9657 } 9658 for k, v := range m { 9659 switch k { 9660 case "properties": 9661 if v != nil { 9662 var privateLinkResourceProperties PrivateLinkResourceProperties 9663 err = json.Unmarshal(*v, &privateLinkResourceProperties) 9664 if err != nil { 9665 return err 9666 } 9667 plr.PrivateLinkResourceProperties = &privateLinkResourceProperties 9668 } 9669 case "id": 9670 if v != nil { 9671 var ID string 9672 err = json.Unmarshal(*v, &ID) 9673 if err != nil { 9674 return err 9675 } 9676 plr.ID = &ID 9677 } 9678 case "name": 9679 if v != nil { 9680 var name string 9681 err = json.Unmarshal(*v, &name) 9682 if err != nil { 9683 return err 9684 } 9685 plr.Name = &name 9686 } 9687 case "type": 9688 if v != nil { 9689 var typeVar string 9690 err = json.Unmarshal(*v, &typeVar) 9691 if err != nil { 9692 return err 9693 } 9694 plr.Type = &typeVar 9695 } 9696 } 9697 } 9698 9699 return nil 9700} 9701 9702// PrivateLinkResourceListResult a list of private link resources 9703type PrivateLinkResourceListResult struct { 9704 autorest.Response `json:"-"` 9705 // Value - Array of private link resources 9706 Value *[]PrivateLinkResource `json:"value,omitempty"` 9707} 9708 9709// PrivateLinkResourceProperties properties of a private link resource. 9710type PrivateLinkResourceProperties struct { 9711 // GroupID - READ-ONLY; The private link resource group id. 9712 GroupID *string `json:"groupId,omitempty"` 9713 // RequiredMembers - READ-ONLY; The private link resource required member names. 9714 RequiredMembers *[]string `json:"requiredMembers,omitempty"` 9715 // RequiredZoneNames - The private link resource Private link DNS zone name. 9716 RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"` 9717} 9718 9719// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties. 9720func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) { 9721 objectMap := make(map[string]interface{}) 9722 if plrp.RequiredZoneNames != nil { 9723 objectMap["requiredZoneNames"] = plrp.RequiredZoneNames 9724 } 9725 return json.Marshal(objectMap) 9726} 9727 9728// PrivateLinkServiceConnectionState a collection of information about the state of the connection between 9729// service consumer and provider. 9730type PrivateLinkServiceConnectionState struct { 9731 // Status - Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. Possible values include: 'PrivateEndpointServiceConnectionStatusPending', 'PrivateEndpointServiceConnectionStatusApproved', 'PrivateEndpointServiceConnectionStatusRejected' 9732 Status PrivateEndpointServiceConnectionStatus `json:"status,omitempty"` 9733 // Description - The reason for approval/rejection of the connection. 9734 Description *string `json:"description,omitempty"` 9735 // ActionsRequired - A message indicating if changes on the service provider require any updates on the consumer. 9736 ActionsRequired *string `json:"actionsRequired,omitempty"` 9737} 9738 9739// Properties the service specification property. 9740type Properties struct { 9741 // ServiceSpecification - READ-ONLY; The service specifications. 9742 ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"` 9743} 9744 9745// MarshalJSON is the custom marshaler for Properties. 9746func (p Properties) MarshalJSON() ([]byte, error) { 9747 objectMap := make(map[string]interface{}) 9748 return json.Marshal(objectMap) 9749} 9750 9751// Provider a resource provider. 9752type Provider struct { 9753 // ProviderName - The provider name. 9754 ProviderName *string `json:"providerName,omitempty"` 9755} 9756 9757// ProxyResource the resource model definition for a Azure Resource Manager proxy resource. It will not 9758// have tags and a location 9759type ProxyResource struct { 9760 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9761 ID *string `json:"id,omitempty"` 9762 // Name - READ-ONLY; The name of the resource 9763 Name *string `json:"name,omitempty"` 9764 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9765 Type *string `json:"type,omitempty"` 9766} 9767 9768// MarshalJSON is the custom marshaler for ProxyResource. 9769func (pr ProxyResource) MarshalJSON() ([]byte, error) { 9770 objectMap := make(map[string]interface{}) 9771 return json.Marshal(objectMap) 9772} 9773 9774// Rectangle describes the properties of a rectangular window applied to the input media before processing 9775// it. 9776type Rectangle struct { 9777 // 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%). 9778 Left *string `json:"left,omitempty"` 9779 // 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%). 9780 Top *string `json:"top,omitempty"` 9781 // 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%). 9782 Width *string `json:"width,omitempty"` 9783 // 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%). 9784 Height *string `json:"height,omitempty"` 9785} 9786 9787// Resource common fields that are returned in the response for all Azure Resource Manager resources 9788type Resource struct { 9789 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 9790 ID *string `json:"id,omitempty"` 9791 // Name - READ-ONLY; The name of the resource 9792 Name *string `json:"name,omitempty"` 9793 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 9794 Type *string `json:"type,omitempty"` 9795} 9796 9797// MarshalJSON is the custom marshaler for Resource. 9798func (r Resource) MarshalJSON() ([]byte, error) { 9799 objectMap := make(map[string]interface{}) 9800 return json.Marshal(objectMap) 9801} 9802 9803// SelectAudioTrackByAttribute select audio tracks from the input by specifying an attribute and an 9804// attribute filter. 9805type SelectAudioTrackByAttribute struct { 9806 // Attribute - The TrackAttribute to filter the tracks by. Possible values include: 'TrackAttributeBitrate', 'TrackAttributeLanguage' 9807 Attribute TrackAttribute `json:"attribute,omitempty"` 9808 // Filter - The type of AttributeFilter to apply to the TrackAttribute in order to select the tracks. Possible values include: 'AttributeFilterAll', 'AttributeFilterTop', 'AttributeFilterBottom', 'AttributeFilterValueEquals' 9809 Filter AttributeFilter `json:"filter,omitempty"` 9810 // FilterValue - The value to filter the tracks by. Only used when AttributeFilter.ValueEquals is specified for the Filter property. 9811 FilterValue *string `json:"filterValue,omitempty"` 9812 // 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' 9813 ChannelMapping ChannelMapping `json:"channelMapping,omitempty"` 9814 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 9815 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 9816} 9817 9818// MarshalJSON is the custom marshaler for SelectAudioTrackByAttribute. 9819func (satba SelectAudioTrackByAttribute) MarshalJSON() ([]byte, error) { 9820 satba.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute 9821 objectMap := make(map[string]interface{}) 9822 if satba.Attribute != "" { 9823 objectMap["attribute"] = satba.Attribute 9824 } 9825 if satba.Filter != "" { 9826 objectMap["filter"] = satba.Filter 9827 } 9828 if satba.FilterValue != nil { 9829 objectMap["filterValue"] = satba.FilterValue 9830 } 9831 if satba.ChannelMapping != "" { 9832 objectMap["channelMapping"] = satba.ChannelMapping 9833 } 9834 if satba.OdataType != "" { 9835 objectMap["@odata.type"] = satba.OdataType 9836 } 9837 return json.Marshal(objectMap) 9838} 9839 9840// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9841func (satba SelectAudioTrackByAttribute) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 9842 return nil, false 9843} 9844 9845// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9846func (satba SelectAudioTrackByAttribute) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 9847 return &satba, true 9848} 9849 9850// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9851func (satba SelectAudioTrackByAttribute) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 9852 return &satba, true 9853} 9854 9855// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9856func (satba SelectAudioTrackByAttribute) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 9857 return nil, false 9858} 9859 9860// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9861func (satba SelectAudioTrackByAttribute) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 9862 return nil, false 9863} 9864 9865// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9866func (satba SelectAudioTrackByAttribute) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 9867 return nil, false 9868} 9869 9870// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9871func (satba SelectAudioTrackByAttribute) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 9872 return nil, false 9873} 9874 9875// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9876func (satba SelectAudioTrackByAttribute) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 9877 return nil, false 9878} 9879 9880// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9881func (satba SelectAudioTrackByAttribute) AsTrackDescriptor() (*TrackDescriptor, bool) { 9882 return nil, false 9883} 9884 9885// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByAttribute. 9886func (satba SelectAudioTrackByAttribute) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 9887 return &satba, true 9888} 9889 9890// SelectAudioTrackByID select audio tracks from the input by specifying a track identifier. 9891type SelectAudioTrackByID struct { 9892 // TrackID - Track identifier to select 9893 TrackID *int64 `json:"trackId,omitempty"` 9894 // 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' 9895 ChannelMapping ChannelMapping `json:"channelMapping,omitempty"` 9896 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 9897 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 9898} 9899 9900// MarshalJSON is the custom marshaler for SelectAudioTrackByID. 9901func (satbi SelectAudioTrackByID) MarshalJSON() ([]byte, error) { 9902 satbi.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID 9903 objectMap := make(map[string]interface{}) 9904 if satbi.TrackID != nil { 9905 objectMap["trackId"] = satbi.TrackID 9906 } 9907 if satbi.ChannelMapping != "" { 9908 objectMap["channelMapping"] = satbi.ChannelMapping 9909 } 9910 if satbi.OdataType != "" { 9911 objectMap["@odata.type"] = satbi.OdataType 9912 } 9913 return json.Marshal(objectMap) 9914} 9915 9916// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9917func (satbi SelectAudioTrackByID) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 9918 return nil, false 9919} 9920 9921// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9922func (satbi SelectAudioTrackByID) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 9923 return &satbi, true 9924} 9925 9926// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9927func (satbi SelectAudioTrackByID) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 9928 return nil, false 9929} 9930 9931// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9932func (satbi SelectAudioTrackByID) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 9933 return &satbi, true 9934} 9935 9936// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9937func (satbi SelectAudioTrackByID) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 9938 return nil, false 9939} 9940 9941// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9942func (satbi SelectAudioTrackByID) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 9943 return nil, false 9944} 9945 9946// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9947func (satbi SelectAudioTrackByID) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 9948 return nil, false 9949} 9950 9951// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9952func (satbi SelectAudioTrackByID) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 9953 return nil, false 9954} 9955 9956// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9957func (satbi SelectAudioTrackByID) AsTrackDescriptor() (*TrackDescriptor, bool) { 9958 return nil, false 9959} 9960 9961// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectAudioTrackByID. 9962func (satbi SelectAudioTrackByID) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 9963 return &satbi, true 9964} 9965 9966// SelectVideoTrackByAttribute select video tracks from the input by specifying an attribute and an 9967// attribute filter. 9968type SelectVideoTrackByAttribute struct { 9969 // Attribute - The TrackAttribute to filter the tracks by. Possible values include: 'TrackAttributeBitrate', 'TrackAttributeLanguage' 9970 Attribute TrackAttribute `json:"attribute,omitempty"` 9971 // Filter - The type of AttributeFilter to apply to the TrackAttribute in order to select the tracks. Possible values include: 'AttributeFilterAll', 'AttributeFilterTop', 'AttributeFilterBottom', 'AttributeFilterValueEquals' 9972 Filter AttributeFilter `json:"filter,omitempty"` 9973 // 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. 9974 FilterValue *string `json:"filterValue,omitempty"` 9975 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 9976 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 9977} 9978 9979// MarshalJSON is the custom marshaler for SelectVideoTrackByAttribute. 9980func (svtba SelectVideoTrackByAttribute) MarshalJSON() ([]byte, error) { 9981 svtba.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute 9982 objectMap := make(map[string]interface{}) 9983 if svtba.Attribute != "" { 9984 objectMap["attribute"] = svtba.Attribute 9985 } 9986 if svtba.Filter != "" { 9987 objectMap["filter"] = svtba.Filter 9988 } 9989 if svtba.FilterValue != nil { 9990 objectMap["filterValue"] = svtba.FilterValue 9991 } 9992 if svtba.OdataType != "" { 9993 objectMap["@odata.type"] = svtba.OdataType 9994 } 9995 return json.Marshal(objectMap) 9996} 9997 9998// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 9999func (svtba SelectVideoTrackByAttribute) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 10000 return nil, false 10001} 10002 10003// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10004func (svtba SelectVideoTrackByAttribute) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 10005 return nil, false 10006} 10007 10008// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10009func (svtba SelectVideoTrackByAttribute) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 10010 return nil, false 10011} 10012 10013// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10014func (svtba SelectVideoTrackByAttribute) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 10015 return nil, false 10016} 10017 10018// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10019func (svtba SelectVideoTrackByAttribute) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 10020 return nil, false 10021} 10022 10023// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10024func (svtba SelectVideoTrackByAttribute) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 10025 return &svtba, true 10026} 10027 10028// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10029func (svtba SelectVideoTrackByAttribute) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 10030 return &svtba, true 10031} 10032 10033// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10034func (svtba SelectVideoTrackByAttribute) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 10035 return nil, false 10036} 10037 10038// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10039func (svtba SelectVideoTrackByAttribute) AsTrackDescriptor() (*TrackDescriptor, bool) { 10040 return nil, false 10041} 10042 10043// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByAttribute. 10044func (svtba SelectVideoTrackByAttribute) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 10045 return &svtba, true 10046} 10047 10048// SelectVideoTrackByID select video tracks from the input by specifying a track identifier. 10049type SelectVideoTrackByID struct { 10050 // TrackID - Track identifier to select 10051 TrackID *int64 `json:"trackId,omitempty"` 10052 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 10053 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 10054} 10055 10056// MarshalJSON is the custom marshaler for SelectVideoTrackByID. 10057func (svtbi SelectVideoTrackByID) MarshalJSON() ([]byte, error) { 10058 svtbi.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID 10059 objectMap := make(map[string]interface{}) 10060 if svtbi.TrackID != nil { 10061 objectMap["trackId"] = svtbi.TrackID 10062 } 10063 if svtbi.OdataType != "" { 10064 objectMap["@odata.type"] = svtbi.OdataType 10065 } 10066 return json.Marshal(objectMap) 10067} 10068 10069// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10070func (svtbi SelectVideoTrackByID) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 10071 return nil, false 10072} 10073 10074// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10075func (svtbi SelectVideoTrackByID) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 10076 return nil, false 10077} 10078 10079// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10080func (svtbi SelectVideoTrackByID) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 10081 return nil, false 10082} 10083 10084// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10085func (svtbi SelectVideoTrackByID) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 10086 return nil, false 10087} 10088 10089// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10090func (svtbi SelectVideoTrackByID) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 10091 return nil, false 10092} 10093 10094// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10095func (svtbi SelectVideoTrackByID) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 10096 return &svtbi, true 10097} 10098 10099// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10100func (svtbi SelectVideoTrackByID) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 10101 return nil, false 10102} 10103 10104// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10105func (svtbi SelectVideoTrackByID) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 10106 return &svtbi, true 10107} 10108 10109// AsTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10110func (svtbi SelectVideoTrackByID) AsTrackDescriptor() (*TrackDescriptor, bool) { 10111 return nil, false 10112} 10113 10114// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for SelectVideoTrackByID. 10115func (svtbi SelectVideoTrackByID) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 10116 return &svtbi, true 10117} 10118 10119// Service a Media Services account. 10120type Service struct { 10121 autorest.Response `json:"-"` 10122 // ServiceProperties - The resource properties. 10123 *ServiceProperties `json:"properties,omitempty"` 10124 // Identity - The Managed Identity for the Media Services account. 10125 Identity *ServiceIdentity `json:"identity,omitempty"` 10126 // SystemData - READ-ONLY; The system metadata relating to this resource. 10127 SystemData *SystemData `json:"systemData,omitempty"` 10128 // Tags - Resource tags. 10129 Tags map[string]*string `json:"tags"` 10130 // Location - The geo-location where the resource lives 10131 Location *string `json:"location,omitempty"` 10132 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 10133 ID *string `json:"id,omitempty"` 10134 // Name - READ-ONLY; The name of the resource 10135 Name *string `json:"name,omitempty"` 10136 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 10137 Type *string `json:"type,omitempty"` 10138} 10139 10140// MarshalJSON is the custom marshaler for Service. 10141func (s Service) MarshalJSON() ([]byte, error) { 10142 objectMap := make(map[string]interface{}) 10143 if s.ServiceProperties != nil { 10144 objectMap["properties"] = s.ServiceProperties 10145 } 10146 if s.Identity != nil { 10147 objectMap["identity"] = s.Identity 10148 } 10149 if s.Tags != nil { 10150 objectMap["tags"] = s.Tags 10151 } 10152 if s.Location != nil { 10153 objectMap["location"] = s.Location 10154 } 10155 return json.Marshal(objectMap) 10156} 10157 10158// UnmarshalJSON is the custom unmarshaler for Service struct. 10159func (s *Service) UnmarshalJSON(body []byte) error { 10160 var m map[string]*json.RawMessage 10161 err := json.Unmarshal(body, &m) 10162 if err != nil { 10163 return err 10164 } 10165 for k, v := range m { 10166 switch k { 10167 case "properties": 10168 if v != nil { 10169 var serviceProperties ServiceProperties 10170 err = json.Unmarshal(*v, &serviceProperties) 10171 if err != nil { 10172 return err 10173 } 10174 s.ServiceProperties = &serviceProperties 10175 } 10176 case "identity": 10177 if v != nil { 10178 var identity ServiceIdentity 10179 err = json.Unmarshal(*v, &identity) 10180 if err != nil { 10181 return err 10182 } 10183 s.Identity = &identity 10184 } 10185 case "systemData": 10186 if v != nil { 10187 var systemData SystemData 10188 err = json.Unmarshal(*v, &systemData) 10189 if err != nil { 10190 return err 10191 } 10192 s.SystemData = &systemData 10193 } 10194 case "tags": 10195 if v != nil { 10196 var tags map[string]*string 10197 err = json.Unmarshal(*v, &tags) 10198 if err != nil { 10199 return err 10200 } 10201 s.Tags = tags 10202 } 10203 case "location": 10204 if v != nil { 10205 var location string 10206 err = json.Unmarshal(*v, &location) 10207 if err != nil { 10208 return err 10209 } 10210 s.Location = &location 10211 } 10212 case "id": 10213 if v != nil { 10214 var ID string 10215 err = json.Unmarshal(*v, &ID) 10216 if err != nil { 10217 return err 10218 } 10219 s.ID = &ID 10220 } 10221 case "name": 10222 if v != nil { 10223 var name string 10224 err = json.Unmarshal(*v, &name) 10225 if err != nil { 10226 return err 10227 } 10228 s.Name = &name 10229 } 10230 case "type": 10231 if v != nil { 10232 var typeVar string 10233 err = json.Unmarshal(*v, &typeVar) 10234 if err != nil { 10235 return err 10236 } 10237 s.Type = &typeVar 10238 } 10239 } 10240 } 10241 10242 return nil 10243} 10244 10245// ServiceCollection a collection of MediaService items. 10246type ServiceCollection struct { 10247 autorest.Response `json:"-"` 10248 // Value - A collection of MediaService items. 10249 Value *[]Service `json:"value,omitempty"` 10250 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 10251 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 10252} 10253 10254// ServiceCollectionIterator provides access to a complete listing of Service values. 10255type ServiceCollectionIterator struct { 10256 i int 10257 page ServiceCollectionPage 10258} 10259 10260// NextWithContext advances to the next value. If there was an error making 10261// the request the iterator does not advance and the error is returned. 10262func (iter *ServiceCollectionIterator) NextWithContext(ctx context.Context) (err error) { 10263 if tracing.IsEnabled() { 10264 ctx = tracing.StartSpan(ctx, fqdn+"/ServiceCollectionIterator.NextWithContext") 10265 defer func() { 10266 sc := -1 10267 if iter.Response().Response.Response != nil { 10268 sc = iter.Response().Response.Response.StatusCode 10269 } 10270 tracing.EndSpan(ctx, sc, err) 10271 }() 10272 } 10273 iter.i++ 10274 if iter.i < len(iter.page.Values()) { 10275 return nil 10276 } 10277 err = iter.page.NextWithContext(ctx) 10278 if err != nil { 10279 iter.i-- 10280 return err 10281 } 10282 iter.i = 0 10283 return nil 10284} 10285 10286// Next advances to the next value. If there was an error making 10287// the request the iterator does not advance and the error is returned. 10288// Deprecated: Use NextWithContext() instead. 10289func (iter *ServiceCollectionIterator) Next() error { 10290 return iter.NextWithContext(context.Background()) 10291} 10292 10293// NotDone returns true if the enumeration should be started or is not yet complete. 10294func (iter ServiceCollectionIterator) NotDone() bool { 10295 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 10296} 10297 10298// Response returns the raw server response from the last page request. 10299func (iter ServiceCollectionIterator) Response() ServiceCollection { 10300 return iter.page.Response() 10301} 10302 10303// Value returns the current value or a zero-initialized value if the 10304// iterator has advanced beyond the end of the collection. 10305func (iter ServiceCollectionIterator) Value() Service { 10306 if !iter.page.NotDone() { 10307 return Service{} 10308 } 10309 return iter.page.Values()[iter.i] 10310} 10311 10312// Creates a new instance of the ServiceCollectionIterator type. 10313func NewServiceCollectionIterator(page ServiceCollectionPage) ServiceCollectionIterator { 10314 return ServiceCollectionIterator{page: page} 10315} 10316 10317// IsEmpty returns true if the ListResult contains no values. 10318func (sc ServiceCollection) IsEmpty() bool { 10319 return sc.Value == nil || len(*sc.Value) == 0 10320} 10321 10322// hasNextLink returns true if the NextLink is not empty. 10323func (sc ServiceCollection) hasNextLink() bool { 10324 return sc.OdataNextLink != nil && len(*sc.OdataNextLink) != 0 10325} 10326 10327// serviceCollectionPreparer prepares a request to retrieve the next set of results. 10328// It returns nil if no more results exist. 10329func (sc ServiceCollection) serviceCollectionPreparer(ctx context.Context) (*http.Request, error) { 10330 if !sc.hasNextLink() { 10331 return nil, nil 10332 } 10333 return autorest.Prepare((&http.Request{}).WithContext(ctx), 10334 autorest.AsJSON(), 10335 autorest.AsGet(), 10336 autorest.WithBaseURL(to.String(sc.OdataNextLink))) 10337} 10338 10339// ServiceCollectionPage contains a page of Service values. 10340type ServiceCollectionPage struct { 10341 fn func(context.Context, ServiceCollection) (ServiceCollection, error) 10342 sc ServiceCollection 10343} 10344 10345// NextWithContext advances to the next page of values. If there was an error making 10346// the request the page does not advance and the error is returned. 10347func (page *ServiceCollectionPage) NextWithContext(ctx context.Context) (err error) { 10348 if tracing.IsEnabled() { 10349 ctx = tracing.StartSpan(ctx, fqdn+"/ServiceCollectionPage.NextWithContext") 10350 defer func() { 10351 sc := -1 10352 if page.Response().Response.Response != nil { 10353 sc = page.Response().Response.Response.StatusCode 10354 } 10355 tracing.EndSpan(ctx, sc, err) 10356 }() 10357 } 10358 for { 10359 next, err := page.fn(ctx, page.sc) 10360 if err != nil { 10361 return err 10362 } 10363 page.sc = next 10364 if !next.hasNextLink() || !next.IsEmpty() { 10365 break 10366 } 10367 } 10368 return nil 10369} 10370 10371// Next advances to the next page of values. If there was an error making 10372// the request the page does not advance and the error is returned. 10373// Deprecated: Use NextWithContext() instead. 10374func (page *ServiceCollectionPage) Next() error { 10375 return page.NextWithContext(context.Background()) 10376} 10377 10378// NotDone returns true if the page enumeration should be started or is not yet complete. 10379func (page ServiceCollectionPage) NotDone() bool { 10380 return !page.sc.IsEmpty() 10381} 10382 10383// Response returns the raw server response from the last page request. 10384func (page ServiceCollectionPage) Response() ServiceCollection { 10385 return page.sc 10386} 10387 10388// Values returns the slice of values for the current page or nil if there are no values. 10389func (page ServiceCollectionPage) Values() []Service { 10390 if page.sc.IsEmpty() { 10391 return nil 10392 } 10393 return *page.sc.Value 10394} 10395 10396// Creates a new instance of the ServiceCollectionPage type. 10397func NewServiceCollectionPage(cur ServiceCollection, getNextPage func(context.Context, ServiceCollection) (ServiceCollection, error)) ServiceCollectionPage { 10398 return ServiceCollectionPage{ 10399 fn: getNextPage, 10400 sc: cur, 10401 } 10402} 10403 10404// ServiceIdentity ... 10405type ServiceIdentity struct { 10406 // Type - The identity type. Possible values include: 'ManagedIdentityTypeSystemAssigned', 'ManagedIdentityTypeNone' 10407 Type ManagedIdentityType `json:"type,omitempty"` 10408 // PrincipalID - READ-ONLY; The Principal ID of the identity. 10409 PrincipalID *string `json:"principalId,omitempty"` 10410 // TenantID - READ-ONLY; The Tenant ID of the identity. 10411 TenantID *string `json:"tenantId,omitempty"` 10412} 10413 10414// MarshalJSON is the custom marshaler for ServiceIdentity. 10415func (si ServiceIdentity) MarshalJSON() ([]byte, error) { 10416 objectMap := make(map[string]interface{}) 10417 if si.Type != "" { 10418 objectMap["type"] = si.Type 10419 } 10420 return json.Marshal(objectMap) 10421} 10422 10423// ServiceProperties properties of the Media Services account. 10424type ServiceProperties struct { 10425 // MediaServiceID - READ-ONLY; The Media Services account ID. 10426 MediaServiceID *uuid.UUID `json:"mediaServiceId,omitempty"` 10427 // StorageAccounts - The storage accounts for this resource. 10428 StorageAccounts *[]StorageAccount `json:"storageAccounts,omitempty"` 10429 // StorageAuthentication - Possible values include: 'StorageAuthenticationSystem', 'StorageAuthenticationManagedIdentity' 10430 StorageAuthentication StorageAuthentication `json:"storageAuthentication,omitempty"` 10431 // Encryption - The account encryption properties. 10432 Encryption *AccountEncryption `json:"encryption,omitempty"` 10433 // KeyDelivery - The Key Delivery properties for Media Services account. 10434 KeyDelivery *KeyDelivery `json:"keyDelivery,omitempty"` 10435} 10436 10437// MarshalJSON is the custom marshaler for ServiceProperties. 10438func (sp ServiceProperties) MarshalJSON() ([]byte, error) { 10439 objectMap := make(map[string]interface{}) 10440 if sp.StorageAccounts != nil { 10441 objectMap["storageAccounts"] = sp.StorageAccounts 10442 } 10443 if sp.StorageAuthentication != "" { 10444 objectMap["storageAuthentication"] = sp.StorageAuthentication 10445 } 10446 if sp.Encryption != nil { 10447 objectMap["encryption"] = sp.Encryption 10448 } 10449 if sp.KeyDelivery != nil { 10450 objectMap["keyDelivery"] = sp.KeyDelivery 10451 } 10452 return json.Marshal(objectMap) 10453} 10454 10455// ServiceSpecification the service metric specifications. 10456type ServiceSpecification struct { 10457 // LogSpecifications - READ-ONLY; List of log specifications. 10458 LogSpecifications *[]LogSpecification `json:"logSpecifications,omitempty"` 10459 // MetricSpecifications - READ-ONLY; List of metric specifications. 10460 MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"` 10461} 10462 10463// MarshalJSON is the custom marshaler for ServiceSpecification. 10464func (ss ServiceSpecification) MarshalJSON() ([]byte, error) { 10465 objectMap := make(map[string]interface{}) 10466 return json.Marshal(objectMap) 10467} 10468 10469// ServiceUpdate a Media Services account update. 10470type ServiceUpdate struct { 10471 // Tags - Resource tags. 10472 Tags map[string]*string `json:"tags"` 10473 // ServiceProperties - The resource properties. 10474 *ServiceProperties `json:"properties,omitempty"` 10475 // Identity - The Managed Identity for the Media Services account. 10476 Identity *ServiceIdentity `json:"identity,omitempty"` 10477} 10478 10479// MarshalJSON is the custom marshaler for ServiceUpdate. 10480func (su ServiceUpdate) MarshalJSON() ([]byte, error) { 10481 objectMap := make(map[string]interface{}) 10482 if su.Tags != nil { 10483 objectMap["tags"] = su.Tags 10484 } 10485 if su.ServiceProperties != nil { 10486 objectMap["properties"] = su.ServiceProperties 10487 } 10488 if su.Identity != nil { 10489 objectMap["identity"] = su.Identity 10490 } 10491 return json.Marshal(objectMap) 10492} 10493 10494// UnmarshalJSON is the custom unmarshaler for ServiceUpdate struct. 10495func (su *ServiceUpdate) UnmarshalJSON(body []byte) error { 10496 var m map[string]*json.RawMessage 10497 err := json.Unmarshal(body, &m) 10498 if err != nil { 10499 return err 10500 } 10501 for k, v := range m { 10502 switch k { 10503 case "tags": 10504 if v != nil { 10505 var tags map[string]*string 10506 err = json.Unmarshal(*v, &tags) 10507 if err != nil { 10508 return err 10509 } 10510 su.Tags = tags 10511 } 10512 case "properties": 10513 if v != nil { 10514 var serviceProperties ServiceProperties 10515 err = json.Unmarshal(*v, &serviceProperties) 10516 if err != nil { 10517 return err 10518 } 10519 su.ServiceProperties = &serviceProperties 10520 } 10521 case "identity": 10522 if v != nil { 10523 var identity ServiceIdentity 10524 err = json.Unmarshal(*v, &identity) 10525 if err != nil { 10526 return err 10527 } 10528 su.Identity = &identity 10529 } 10530 } 10531 } 10532 10533 return nil 10534} 10535 10536// StandardEncoderPreset describes all the settings to be used when encoding the input video with the 10537// Standard Encoder. 10538type StandardEncoderPreset struct { 10539 // Filters - One or more filtering operations that are applied to the input media before encoding. 10540 Filters *Filters `json:"filters,omitempty"` 10541 // Codecs - The list of codecs to be used when encoding the input video. 10542 Codecs *[]BasicCodec `json:"codecs,omitempty"` 10543 // Formats - The list of outputs to be produced by the encoder. 10544 Formats *[]BasicFormat `json:"formats,omitempty"` 10545 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 10546 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 10547} 10548 10549// MarshalJSON is the custom marshaler for StandardEncoderPreset. 10550func (sep StandardEncoderPreset) MarshalJSON() ([]byte, error) { 10551 sep.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset 10552 objectMap := make(map[string]interface{}) 10553 if sep.Filters != nil { 10554 objectMap["filters"] = sep.Filters 10555 } 10556 if sep.Codecs != nil { 10557 objectMap["codecs"] = sep.Codecs 10558 } 10559 if sep.Formats != nil { 10560 objectMap["formats"] = sep.Formats 10561 } 10562 if sep.OdataType != "" { 10563 objectMap["@odata.type"] = sep.OdataType 10564 } 10565 return json.Marshal(objectMap) 10566} 10567 10568// AsFaceDetectorPreset is the BasicPreset implementation for StandardEncoderPreset. 10569func (sep StandardEncoderPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 10570 return nil, false 10571} 10572 10573// AsAudioAnalyzerPreset is the BasicPreset implementation for StandardEncoderPreset. 10574func (sep StandardEncoderPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 10575 return nil, false 10576} 10577 10578// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for StandardEncoderPreset. 10579func (sep StandardEncoderPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 10580 return nil, false 10581} 10582 10583// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for StandardEncoderPreset. 10584func (sep StandardEncoderPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 10585 return nil, false 10586} 10587 10588// AsStandardEncoderPreset is the BasicPreset implementation for StandardEncoderPreset. 10589func (sep StandardEncoderPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 10590 return &sep, true 10591} 10592 10593// AsVideoAnalyzerPreset is the BasicPreset implementation for StandardEncoderPreset. 10594func (sep StandardEncoderPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 10595 return nil, false 10596} 10597 10598// AsPreset is the BasicPreset implementation for StandardEncoderPreset. 10599func (sep StandardEncoderPreset) AsPreset() (*Preset, bool) { 10600 return nil, false 10601} 10602 10603// AsBasicPreset is the BasicPreset implementation for StandardEncoderPreset. 10604func (sep StandardEncoderPreset) AsBasicPreset() (BasicPreset, bool) { 10605 return &sep, true 10606} 10607 10608// UnmarshalJSON is the custom unmarshaler for StandardEncoderPreset struct. 10609func (sep *StandardEncoderPreset) UnmarshalJSON(body []byte) error { 10610 var m map[string]*json.RawMessage 10611 err := json.Unmarshal(body, &m) 10612 if err != nil { 10613 return err 10614 } 10615 for k, v := range m { 10616 switch k { 10617 case "filters": 10618 if v != nil { 10619 var filters Filters 10620 err = json.Unmarshal(*v, &filters) 10621 if err != nil { 10622 return err 10623 } 10624 sep.Filters = &filters 10625 } 10626 case "codecs": 10627 if v != nil { 10628 codecs, err := unmarshalBasicCodecArray(*v) 10629 if err != nil { 10630 return err 10631 } 10632 sep.Codecs = &codecs 10633 } 10634 case "formats": 10635 if v != nil { 10636 formats, err := unmarshalBasicFormatArray(*v) 10637 if err != nil { 10638 return err 10639 } 10640 sep.Formats = &formats 10641 } 10642 case "@odata.type": 10643 if v != nil { 10644 var odataType OdataTypeBasicPreset 10645 err = json.Unmarshal(*v, &odataType) 10646 if err != nil { 10647 return err 10648 } 10649 sep.OdataType = odataType 10650 } 10651 } 10652 } 10653 10654 return nil 10655} 10656 10657// StorageAccount the storage account details. 10658type StorageAccount struct { 10659 // 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. 10660 ID *string `json:"id,omitempty"` 10661 // Type - The type of the storage account. Possible values include: 'StorageAccountTypePrimary', 'StorageAccountTypeSecondary' 10662 Type StorageAccountType `json:"type,omitempty"` 10663} 10664 10665// StorageEncryptedAssetDecryptionData data needed to decrypt asset files encrypted with legacy storage 10666// encryption. 10667type StorageEncryptedAssetDecryptionData struct { 10668 autorest.Response `json:"-"` 10669 // Key - The Asset File storage encryption key. 10670 Key *[]byte `json:"key,omitempty"` 10671 // AssetFileEncryptionMetadata - Asset File encryption metadata. 10672 AssetFileEncryptionMetadata *[]AssetFileEncryptionMetadata `json:"assetFileEncryptionMetadata,omitempty"` 10673} 10674 10675// StreamingEndpoint the streaming endpoint. 10676type StreamingEndpoint struct { 10677 autorest.Response `json:"-"` 10678 // StreamingEndpointProperties - The streaming endpoint properties. 10679 *StreamingEndpointProperties `json:"properties,omitempty"` 10680 // SystemData - READ-ONLY; The system metadata relating to this resource. 10681 SystemData *SystemData `json:"systemData,omitempty"` 10682 // Tags - Resource tags. 10683 Tags map[string]*string `json:"tags"` 10684 // Location - The geo-location where the resource lives 10685 Location *string `json:"location,omitempty"` 10686 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 10687 ID *string `json:"id,omitempty"` 10688 // Name - READ-ONLY; The name of the resource 10689 Name *string `json:"name,omitempty"` 10690 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 10691 Type *string `json:"type,omitempty"` 10692} 10693 10694// MarshalJSON is the custom marshaler for StreamingEndpoint. 10695func (se StreamingEndpoint) MarshalJSON() ([]byte, error) { 10696 objectMap := make(map[string]interface{}) 10697 if se.StreamingEndpointProperties != nil { 10698 objectMap["properties"] = se.StreamingEndpointProperties 10699 } 10700 if se.Tags != nil { 10701 objectMap["tags"] = se.Tags 10702 } 10703 if se.Location != nil { 10704 objectMap["location"] = se.Location 10705 } 10706 return json.Marshal(objectMap) 10707} 10708 10709// UnmarshalJSON is the custom unmarshaler for StreamingEndpoint struct. 10710func (se *StreamingEndpoint) UnmarshalJSON(body []byte) error { 10711 var m map[string]*json.RawMessage 10712 err := json.Unmarshal(body, &m) 10713 if err != nil { 10714 return err 10715 } 10716 for k, v := range m { 10717 switch k { 10718 case "properties": 10719 if v != nil { 10720 var streamingEndpointProperties StreamingEndpointProperties 10721 err = json.Unmarshal(*v, &streamingEndpointProperties) 10722 if err != nil { 10723 return err 10724 } 10725 se.StreamingEndpointProperties = &streamingEndpointProperties 10726 } 10727 case "systemData": 10728 if v != nil { 10729 var systemData SystemData 10730 err = json.Unmarshal(*v, &systemData) 10731 if err != nil { 10732 return err 10733 } 10734 se.SystemData = &systemData 10735 } 10736 case "tags": 10737 if v != nil { 10738 var tags map[string]*string 10739 err = json.Unmarshal(*v, &tags) 10740 if err != nil { 10741 return err 10742 } 10743 se.Tags = tags 10744 } 10745 case "location": 10746 if v != nil { 10747 var location string 10748 err = json.Unmarshal(*v, &location) 10749 if err != nil { 10750 return err 10751 } 10752 se.Location = &location 10753 } 10754 case "id": 10755 if v != nil { 10756 var ID string 10757 err = json.Unmarshal(*v, &ID) 10758 if err != nil { 10759 return err 10760 } 10761 se.ID = &ID 10762 } 10763 case "name": 10764 if v != nil { 10765 var name string 10766 err = json.Unmarshal(*v, &name) 10767 if err != nil { 10768 return err 10769 } 10770 se.Name = &name 10771 } 10772 case "type": 10773 if v != nil { 10774 var typeVar string 10775 err = json.Unmarshal(*v, &typeVar) 10776 if err != nil { 10777 return err 10778 } 10779 se.Type = &typeVar 10780 } 10781 } 10782 } 10783 10784 return nil 10785} 10786 10787// StreamingEndpointAccessControl streaming endpoint access control definition. 10788type StreamingEndpointAccessControl struct { 10789 // Akamai - The access control of Akamai 10790 Akamai *AkamaiAccessControl `json:"akamai,omitempty"` 10791 // IP - The IP access control of the streaming endpoint. 10792 IP *IPAccessControl `json:"ip,omitempty"` 10793} 10794 10795// StreamingEndpointListResult the streaming endpoint list result. 10796type StreamingEndpointListResult struct { 10797 autorest.Response `json:"-"` 10798 // Value - The result of the List StreamingEndpoint operation. 10799 Value *[]StreamingEndpoint `json:"value,omitempty"` 10800 // OdataCount - The number of result. 10801 OdataCount *int32 `json:"@odata.count,omitempty"` 10802 // OdataNextLink - The link to the next set of results. Not empty if value contains incomplete list of streaming endpoints. 10803 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 10804} 10805 10806// StreamingEndpointListResultIterator provides access to a complete listing of StreamingEndpoint values. 10807type StreamingEndpointListResultIterator struct { 10808 i int 10809 page StreamingEndpointListResultPage 10810} 10811 10812// NextWithContext advances to the next value. If there was an error making 10813// the request the iterator does not advance and the error is returned. 10814func (iter *StreamingEndpointListResultIterator) NextWithContext(ctx context.Context) (err error) { 10815 if tracing.IsEnabled() { 10816 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingEndpointListResultIterator.NextWithContext") 10817 defer func() { 10818 sc := -1 10819 if iter.Response().Response.Response != nil { 10820 sc = iter.Response().Response.Response.StatusCode 10821 } 10822 tracing.EndSpan(ctx, sc, err) 10823 }() 10824 } 10825 iter.i++ 10826 if iter.i < len(iter.page.Values()) { 10827 return nil 10828 } 10829 err = iter.page.NextWithContext(ctx) 10830 if err != nil { 10831 iter.i-- 10832 return err 10833 } 10834 iter.i = 0 10835 return nil 10836} 10837 10838// Next advances to the next value. If there was an error making 10839// the request the iterator does not advance and the error is returned. 10840// Deprecated: Use NextWithContext() instead. 10841func (iter *StreamingEndpointListResultIterator) Next() error { 10842 return iter.NextWithContext(context.Background()) 10843} 10844 10845// NotDone returns true if the enumeration should be started or is not yet complete. 10846func (iter StreamingEndpointListResultIterator) NotDone() bool { 10847 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 10848} 10849 10850// Response returns the raw server response from the last page request. 10851func (iter StreamingEndpointListResultIterator) Response() StreamingEndpointListResult { 10852 return iter.page.Response() 10853} 10854 10855// Value returns the current value or a zero-initialized value if the 10856// iterator has advanced beyond the end of the collection. 10857func (iter StreamingEndpointListResultIterator) Value() StreamingEndpoint { 10858 if !iter.page.NotDone() { 10859 return StreamingEndpoint{} 10860 } 10861 return iter.page.Values()[iter.i] 10862} 10863 10864// Creates a new instance of the StreamingEndpointListResultIterator type. 10865func NewStreamingEndpointListResultIterator(page StreamingEndpointListResultPage) StreamingEndpointListResultIterator { 10866 return StreamingEndpointListResultIterator{page: page} 10867} 10868 10869// IsEmpty returns true if the ListResult contains no values. 10870func (selr StreamingEndpointListResult) IsEmpty() bool { 10871 return selr.Value == nil || len(*selr.Value) == 0 10872} 10873 10874// hasNextLink returns true if the NextLink is not empty. 10875func (selr StreamingEndpointListResult) hasNextLink() bool { 10876 return selr.OdataNextLink != nil && len(*selr.OdataNextLink) != 0 10877} 10878 10879// streamingEndpointListResultPreparer prepares a request to retrieve the next set of results. 10880// It returns nil if no more results exist. 10881func (selr StreamingEndpointListResult) streamingEndpointListResultPreparer(ctx context.Context) (*http.Request, error) { 10882 if !selr.hasNextLink() { 10883 return nil, nil 10884 } 10885 return autorest.Prepare((&http.Request{}).WithContext(ctx), 10886 autorest.AsJSON(), 10887 autorest.AsGet(), 10888 autorest.WithBaseURL(to.String(selr.OdataNextLink))) 10889} 10890 10891// StreamingEndpointListResultPage contains a page of StreamingEndpoint values. 10892type StreamingEndpointListResultPage struct { 10893 fn func(context.Context, StreamingEndpointListResult) (StreamingEndpointListResult, error) 10894 selr StreamingEndpointListResult 10895} 10896 10897// NextWithContext advances to the next page of values. If there was an error making 10898// the request the page does not advance and the error is returned. 10899func (page *StreamingEndpointListResultPage) NextWithContext(ctx context.Context) (err error) { 10900 if tracing.IsEnabled() { 10901 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingEndpointListResultPage.NextWithContext") 10902 defer func() { 10903 sc := -1 10904 if page.Response().Response.Response != nil { 10905 sc = page.Response().Response.Response.StatusCode 10906 } 10907 tracing.EndSpan(ctx, sc, err) 10908 }() 10909 } 10910 for { 10911 next, err := page.fn(ctx, page.selr) 10912 if err != nil { 10913 return err 10914 } 10915 page.selr = next 10916 if !next.hasNextLink() || !next.IsEmpty() { 10917 break 10918 } 10919 } 10920 return nil 10921} 10922 10923// Next advances to the next page of values. If there was an error making 10924// the request the page does not advance and the error is returned. 10925// Deprecated: Use NextWithContext() instead. 10926func (page *StreamingEndpointListResultPage) Next() error { 10927 return page.NextWithContext(context.Background()) 10928} 10929 10930// NotDone returns true if the page enumeration should be started or is not yet complete. 10931func (page StreamingEndpointListResultPage) NotDone() bool { 10932 return !page.selr.IsEmpty() 10933} 10934 10935// Response returns the raw server response from the last page request. 10936func (page StreamingEndpointListResultPage) Response() StreamingEndpointListResult { 10937 return page.selr 10938} 10939 10940// Values returns the slice of values for the current page or nil if there are no values. 10941func (page StreamingEndpointListResultPage) Values() []StreamingEndpoint { 10942 if page.selr.IsEmpty() { 10943 return nil 10944 } 10945 return *page.selr.Value 10946} 10947 10948// Creates a new instance of the StreamingEndpointListResultPage type. 10949func NewStreamingEndpointListResultPage(cur StreamingEndpointListResult, getNextPage func(context.Context, StreamingEndpointListResult) (StreamingEndpointListResult, error)) StreamingEndpointListResultPage { 10950 return StreamingEndpointListResultPage{ 10951 fn: getNextPage, 10952 selr: cur, 10953 } 10954} 10955 10956// StreamingEndpointProperties the streaming endpoint properties. 10957type StreamingEndpointProperties struct { 10958 // Description - The streaming endpoint description. 10959 Description *string `json:"description,omitempty"` 10960 // ScaleUnits - The number of scale units. Use the Scale operation to adjust this value. 10961 ScaleUnits *int32 `json:"scaleUnits,omitempty"` 10962 // AvailabilitySetName - This feature is deprecated, do not set a value for this property. 10963 AvailabilitySetName *string `json:"availabilitySetName,omitempty"` 10964 // AccessControl - The access control definition of the streaming endpoint. 10965 AccessControl *StreamingEndpointAccessControl `json:"accessControl,omitempty"` 10966 // MaxCacheAge - Max cache age 10967 MaxCacheAge *int64 `json:"maxCacheAge,omitempty"` 10968 // CustomHostNames - The custom host names of the streaming endpoint 10969 CustomHostNames *[]string `json:"customHostNames,omitempty"` 10970 // HostName - READ-ONLY; The streaming endpoint host name. 10971 HostName *string `json:"hostName,omitempty"` 10972 // CdnEnabled - The CDN enabled flag. 10973 CdnEnabled *bool `json:"cdnEnabled,omitempty"` 10974 // CdnProvider - The CDN provider name. 10975 CdnProvider *string `json:"cdnProvider,omitempty"` 10976 // CdnProfile - The CDN profile name. 10977 CdnProfile *string `json:"cdnProfile,omitempty"` 10978 // ProvisioningState - READ-ONLY; The provisioning state of the streaming endpoint. 10979 ProvisioningState *string `json:"provisioningState,omitempty"` 10980 // ResourceState - READ-ONLY; The resource state of the streaming endpoint. Possible values include: 'StreamingEndpointResourceStateStopped', 'StreamingEndpointResourceStateStarting', 'StreamingEndpointResourceStateRunning', 'StreamingEndpointResourceStateStopping', 'StreamingEndpointResourceStateDeleting', 'StreamingEndpointResourceStateScaling' 10981 ResourceState StreamingEndpointResourceState `json:"resourceState,omitempty"` 10982 // CrossSiteAccessPolicies - The streaming endpoint access policies. 10983 CrossSiteAccessPolicies *CrossSiteAccessPolicies `json:"crossSiteAccessPolicies,omitempty"` 10984 // FreeTrialEndTime - READ-ONLY; The free trial expiration time. 10985 FreeTrialEndTime *date.Time `json:"freeTrialEndTime,omitempty"` 10986 // Created - READ-ONLY; The exact time the streaming endpoint was created. 10987 Created *date.Time `json:"created,omitempty"` 10988 // LastModified - READ-ONLY; The exact time the streaming endpoint was last modified. 10989 LastModified *date.Time `json:"lastModified,omitempty"` 10990} 10991 10992// MarshalJSON is the custom marshaler for StreamingEndpointProperties. 10993func (sep StreamingEndpointProperties) MarshalJSON() ([]byte, error) { 10994 objectMap := make(map[string]interface{}) 10995 if sep.Description != nil { 10996 objectMap["description"] = sep.Description 10997 } 10998 if sep.ScaleUnits != nil { 10999 objectMap["scaleUnits"] = sep.ScaleUnits 11000 } 11001 if sep.AvailabilitySetName != nil { 11002 objectMap["availabilitySetName"] = sep.AvailabilitySetName 11003 } 11004 if sep.AccessControl != nil { 11005 objectMap["accessControl"] = sep.AccessControl 11006 } 11007 if sep.MaxCacheAge != nil { 11008 objectMap["maxCacheAge"] = sep.MaxCacheAge 11009 } 11010 if sep.CustomHostNames != nil { 11011 objectMap["customHostNames"] = sep.CustomHostNames 11012 } 11013 if sep.CdnEnabled != nil { 11014 objectMap["cdnEnabled"] = sep.CdnEnabled 11015 } 11016 if sep.CdnProvider != nil { 11017 objectMap["cdnProvider"] = sep.CdnProvider 11018 } 11019 if sep.CdnProfile != nil { 11020 objectMap["cdnProfile"] = sep.CdnProfile 11021 } 11022 if sep.CrossSiteAccessPolicies != nil { 11023 objectMap["crossSiteAccessPolicies"] = sep.CrossSiteAccessPolicies 11024 } 11025 return json.Marshal(objectMap) 11026} 11027 11028// StreamingEndpointsCreateFuture an abstraction for monitoring and retrieving the results of a 11029// long-running operation. 11030type StreamingEndpointsCreateFuture struct { 11031 azure.FutureAPI 11032 // Result returns the result of the asynchronous operation. 11033 // If the operation has not completed it will return an error. 11034 Result func(StreamingEndpointsClient) (StreamingEndpoint, error) 11035} 11036 11037// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11038func (future *StreamingEndpointsCreateFuture) UnmarshalJSON(body []byte) error { 11039 var azFuture azure.Future 11040 if err := json.Unmarshal(body, &azFuture); err != nil { 11041 return err 11042 } 11043 future.FutureAPI = &azFuture 11044 future.Result = future.result 11045 return nil 11046} 11047 11048// result is the default implementation for StreamingEndpointsCreateFuture.Result. 11049func (future *StreamingEndpointsCreateFuture) result(client StreamingEndpointsClient) (se StreamingEndpoint, err error) { 11050 var done bool 11051 done, err = future.DoneWithContext(context.Background(), client) 11052 if err != nil { 11053 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsCreateFuture", "Result", future.Response(), "Polling failure") 11054 return 11055 } 11056 if !done { 11057 se.Response.Response = future.Response() 11058 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsCreateFuture") 11059 return 11060 } 11061 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 11062 if se.Response.Response, err = future.GetResult(sender); err == nil && se.Response.Response.StatusCode != http.StatusNoContent { 11063 se, err = client.CreateResponder(se.Response.Response) 11064 if err != nil { 11065 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsCreateFuture", "Result", se.Response.Response, "Failure responding to request") 11066 } 11067 } 11068 return 11069} 11070 11071// StreamingEndpointsDeleteFuture an abstraction for monitoring and retrieving the results of a 11072// long-running operation. 11073type StreamingEndpointsDeleteFuture struct { 11074 azure.FutureAPI 11075 // Result returns the result of the asynchronous operation. 11076 // If the operation has not completed it will return an error. 11077 Result func(StreamingEndpointsClient) (autorest.Response, error) 11078} 11079 11080// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11081func (future *StreamingEndpointsDeleteFuture) UnmarshalJSON(body []byte) error { 11082 var azFuture azure.Future 11083 if err := json.Unmarshal(body, &azFuture); err != nil { 11084 return err 11085 } 11086 future.FutureAPI = &azFuture 11087 future.Result = future.result 11088 return nil 11089} 11090 11091// result is the default implementation for StreamingEndpointsDeleteFuture.Result. 11092func (future *StreamingEndpointsDeleteFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11093 var done bool 11094 done, err = future.DoneWithContext(context.Background(), client) 11095 if err != nil { 11096 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsDeleteFuture", "Result", future.Response(), "Polling failure") 11097 return 11098 } 11099 if !done { 11100 ar.Response = future.Response() 11101 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsDeleteFuture") 11102 return 11103 } 11104 ar.Response = future.Response() 11105 return 11106} 11107 11108// StreamingEndpointsScaleFuture an abstraction for monitoring and retrieving the results of a long-running 11109// operation. 11110type StreamingEndpointsScaleFuture struct { 11111 azure.FutureAPI 11112 // Result returns the result of the asynchronous operation. 11113 // If the operation has not completed it will return an error. 11114 Result func(StreamingEndpointsClient) (autorest.Response, error) 11115} 11116 11117// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11118func (future *StreamingEndpointsScaleFuture) UnmarshalJSON(body []byte) error { 11119 var azFuture azure.Future 11120 if err := json.Unmarshal(body, &azFuture); err != nil { 11121 return err 11122 } 11123 future.FutureAPI = &azFuture 11124 future.Result = future.result 11125 return nil 11126} 11127 11128// result is the default implementation for StreamingEndpointsScaleFuture.Result. 11129func (future *StreamingEndpointsScaleFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11130 var done bool 11131 done, err = future.DoneWithContext(context.Background(), client) 11132 if err != nil { 11133 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsScaleFuture", "Result", future.Response(), "Polling failure") 11134 return 11135 } 11136 if !done { 11137 ar.Response = future.Response() 11138 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsScaleFuture") 11139 return 11140 } 11141 ar.Response = future.Response() 11142 return 11143} 11144 11145// StreamingEndpointsStartFuture an abstraction for monitoring and retrieving the results of a long-running 11146// operation. 11147type StreamingEndpointsStartFuture struct { 11148 azure.FutureAPI 11149 // Result returns the result of the asynchronous operation. 11150 // If the operation has not completed it will return an error. 11151 Result func(StreamingEndpointsClient) (autorest.Response, error) 11152} 11153 11154// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11155func (future *StreamingEndpointsStartFuture) UnmarshalJSON(body []byte) error { 11156 var azFuture azure.Future 11157 if err := json.Unmarshal(body, &azFuture); err != nil { 11158 return err 11159 } 11160 future.FutureAPI = &azFuture 11161 future.Result = future.result 11162 return nil 11163} 11164 11165// result is the default implementation for StreamingEndpointsStartFuture.Result. 11166func (future *StreamingEndpointsStartFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11167 var done bool 11168 done, err = future.DoneWithContext(context.Background(), client) 11169 if err != nil { 11170 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsStartFuture", "Result", future.Response(), "Polling failure") 11171 return 11172 } 11173 if !done { 11174 ar.Response = future.Response() 11175 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsStartFuture") 11176 return 11177 } 11178 ar.Response = future.Response() 11179 return 11180} 11181 11182// StreamingEndpointsStopFuture an abstraction for monitoring and retrieving the results of a long-running 11183// operation. 11184type StreamingEndpointsStopFuture struct { 11185 azure.FutureAPI 11186 // Result returns the result of the asynchronous operation. 11187 // If the operation has not completed it will return an error. 11188 Result func(StreamingEndpointsClient) (autorest.Response, error) 11189} 11190 11191// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11192func (future *StreamingEndpointsStopFuture) UnmarshalJSON(body []byte) error { 11193 var azFuture azure.Future 11194 if err := json.Unmarshal(body, &azFuture); err != nil { 11195 return err 11196 } 11197 future.FutureAPI = &azFuture 11198 future.Result = future.result 11199 return nil 11200} 11201 11202// result is the default implementation for StreamingEndpointsStopFuture.Result. 11203func (future *StreamingEndpointsStopFuture) result(client StreamingEndpointsClient) (ar autorest.Response, err error) { 11204 var done bool 11205 done, err = future.DoneWithContext(context.Background(), client) 11206 if err != nil { 11207 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsStopFuture", "Result", future.Response(), "Polling failure") 11208 return 11209 } 11210 if !done { 11211 ar.Response = future.Response() 11212 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsStopFuture") 11213 return 11214 } 11215 ar.Response = future.Response() 11216 return 11217} 11218 11219// StreamingEndpointsUpdateFuture an abstraction for monitoring and retrieving the results of a 11220// long-running operation. 11221type StreamingEndpointsUpdateFuture struct { 11222 azure.FutureAPI 11223 // Result returns the result of the asynchronous operation. 11224 // If the operation has not completed it will return an error. 11225 Result func(StreamingEndpointsClient) (StreamingEndpoint, error) 11226} 11227 11228// UnmarshalJSON is the custom unmarshaller for CreateFuture. 11229func (future *StreamingEndpointsUpdateFuture) UnmarshalJSON(body []byte) error { 11230 var azFuture azure.Future 11231 if err := json.Unmarshal(body, &azFuture); err != nil { 11232 return err 11233 } 11234 future.FutureAPI = &azFuture 11235 future.Result = future.result 11236 return nil 11237} 11238 11239// result is the default implementation for StreamingEndpointsUpdateFuture.Result. 11240func (future *StreamingEndpointsUpdateFuture) result(client StreamingEndpointsClient) (se StreamingEndpoint, err error) { 11241 var done bool 11242 done, err = future.DoneWithContext(context.Background(), client) 11243 if err != nil { 11244 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsUpdateFuture", "Result", future.Response(), "Polling failure") 11245 return 11246 } 11247 if !done { 11248 se.Response.Response = future.Response() 11249 err = azure.NewAsyncOpIncompleteError("media.StreamingEndpointsUpdateFuture") 11250 return 11251 } 11252 sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 11253 if se.Response.Response, err = future.GetResult(sender); err == nil && se.Response.Response.StatusCode != http.StatusNoContent { 11254 se, err = client.UpdateResponder(se.Response.Response) 11255 if err != nil { 11256 err = autorest.NewErrorWithError(err, "media.StreamingEndpointsUpdateFuture", "Result", se.Response.Response, "Failure responding to request") 11257 } 11258 } 11259 return 11260} 11261 11262// StreamingEntityScaleUnit scale units definition 11263type StreamingEntityScaleUnit struct { 11264 // ScaleUnit - The scale unit number of the streaming endpoint. 11265 ScaleUnit *int32 `json:"scaleUnit,omitempty"` 11266} 11267 11268// StreamingLocator a Streaming Locator resource 11269type StreamingLocator struct { 11270 autorest.Response `json:"-"` 11271 *StreamingLocatorProperties `json:"properties,omitempty"` 11272 // SystemData - READ-ONLY; The system metadata relating to this resource. 11273 SystemData *SystemData `json:"systemData,omitempty"` 11274 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 11275 ID *string `json:"id,omitempty"` 11276 // Name - READ-ONLY; The name of the resource 11277 Name *string `json:"name,omitempty"` 11278 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 11279 Type *string `json:"type,omitempty"` 11280} 11281 11282// MarshalJSON is the custom marshaler for StreamingLocator. 11283func (sl StreamingLocator) MarshalJSON() ([]byte, error) { 11284 objectMap := make(map[string]interface{}) 11285 if sl.StreamingLocatorProperties != nil { 11286 objectMap["properties"] = sl.StreamingLocatorProperties 11287 } 11288 return json.Marshal(objectMap) 11289} 11290 11291// UnmarshalJSON is the custom unmarshaler for StreamingLocator struct. 11292func (sl *StreamingLocator) UnmarshalJSON(body []byte) error { 11293 var m map[string]*json.RawMessage 11294 err := json.Unmarshal(body, &m) 11295 if err != nil { 11296 return err 11297 } 11298 for k, v := range m { 11299 switch k { 11300 case "properties": 11301 if v != nil { 11302 var streamingLocatorProperties StreamingLocatorProperties 11303 err = json.Unmarshal(*v, &streamingLocatorProperties) 11304 if err != nil { 11305 return err 11306 } 11307 sl.StreamingLocatorProperties = &streamingLocatorProperties 11308 } 11309 case "systemData": 11310 if v != nil { 11311 var systemData SystemData 11312 err = json.Unmarshal(*v, &systemData) 11313 if err != nil { 11314 return err 11315 } 11316 sl.SystemData = &systemData 11317 } 11318 case "id": 11319 if v != nil { 11320 var ID string 11321 err = json.Unmarshal(*v, &ID) 11322 if err != nil { 11323 return err 11324 } 11325 sl.ID = &ID 11326 } 11327 case "name": 11328 if v != nil { 11329 var name string 11330 err = json.Unmarshal(*v, &name) 11331 if err != nil { 11332 return err 11333 } 11334 sl.Name = &name 11335 } 11336 case "type": 11337 if v != nil { 11338 var typeVar string 11339 err = json.Unmarshal(*v, &typeVar) 11340 if err != nil { 11341 return err 11342 } 11343 sl.Type = &typeVar 11344 } 11345 } 11346 } 11347 11348 return nil 11349} 11350 11351// StreamingLocatorCollection a collection of StreamingLocator items. 11352type StreamingLocatorCollection struct { 11353 autorest.Response `json:"-"` 11354 // Value - A collection of StreamingLocator items. 11355 Value *[]StreamingLocator `json:"value,omitempty"` 11356 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 11357 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 11358} 11359 11360// StreamingLocatorCollectionIterator provides access to a complete listing of StreamingLocator values. 11361type StreamingLocatorCollectionIterator struct { 11362 i int 11363 page StreamingLocatorCollectionPage 11364} 11365 11366// NextWithContext advances to the next value. If there was an error making 11367// the request the iterator does not advance and the error is returned. 11368func (iter *StreamingLocatorCollectionIterator) NextWithContext(ctx context.Context) (err error) { 11369 if tracing.IsEnabled() { 11370 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingLocatorCollectionIterator.NextWithContext") 11371 defer func() { 11372 sc := -1 11373 if iter.Response().Response.Response != nil { 11374 sc = iter.Response().Response.Response.StatusCode 11375 } 11376 tracing.EndSpan(ctx, sc, err) 11377 }() 11378 } 11379 iter.i++ 11380 if iter.i < len(iter.page.Values()) { 11381 return nil 11382 } 11383 err = iter.page.NextWithContext(ctx) 11384 if err != nil { 11385 iter.i-- 11386 return err 11387 } 11388 iter.i = 0 11389 return nil 11390} 11391 11392// Next advances to the next value. If there was an error making 11393// the request the iterator does not advance and the error is returned. 11394// Deprecated: Use NextWithContext() instead. 11395func (iter *StreamingLocatorCollectionIterator) Next() error { 11396 return iter.NextWithContext(context.Background()) 11397} 11398 11399// NotDone returns true if the enumeration should be started or is not yet complete. 11400func (iter StreamingLocatorCollectionIterator) NotDone() bool { 11401 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 11402} 11403 11404// Response returns the raw server response from the last page request. 11405func (iter StreamingLocatorCollectionIterator) Response() StreamingLocatorCollection { 11406 return iter.page.Response() 11407} 11408 11409// Value returns the current value or a zero-initialized value if the 11410// iterator has advanced beyond the end of the collection. 11411func (iter StreamingLocatorCollectionIterator) Value() StreamingLocator { 11412 if !iter.page.NotDone() { 11413 return StreamingLocator{} 11414 } 11415 return iter.page.Values()[iter.i] 11416} 11417 11418// Creates a new instance of the StreamingLocatorCollectionIterator type. 11419func NewStreamingLocatorCollectionIterator(page StreamingLocatorCollectionPage) StreamingLocatorCollectionIterator { 11420 return StreamingLocatorCollectionIterator{page: page} 11421} 11422 11423// IsEmpty returns true if the ListResult contains no values. 11424func (slc StreamingLocatorCollection) IsEmpty() bool { 11425 return slc.Value == nil || len(*slc.Value) == 0 11426} 11427 11428// hasNextLink returns true if the NextLink is not empty. 11429func (slc StreamingLocatorCollection) hasNextLink() bool { 11430 return slc.OdataNextLink != nil && len(*slc.OdataNextLink) != 0 11431} 11432 11433// streamingLocatorCollectionPreparer prepares a request to retrieve the next set of results. 11434// It returns nil if no more results exist. 11435func (slc StreamingLocatorCollection) streamingLocatorCollectionPreparer(ctx context.Context) (*http.Request, error) { 11436 if !slc.hasNextLink() { 11437 return nil, nil 11438 } 11439 return autorest.Prepare((&http.Request{}).WithContext(ctx), 11440 autorest.AsJSON(), 11441 autorest.AsGet(), 11442 autorest.WithBaseURL(to.String(slc.OdataNextLink))) 11443} 11444 11445// StreamingLocatorCollectionPage contains a page of StreamingLocator values. 11446type StreamingLocatorCollectionPage struct { 11447 fn func(context.Context, StreamingLocatorCollection) (StreamingLocatorCollection, error) 11448 slc StreamingLocatorCollection 11449} 11450 11451// NextWithContext advances to the next page of values. If there was an error making 11452// the request the page does not advance and the error is returned. 11453func (page *StreamingLocatorCollectionPage) NextWithContext(ctx context.Context) (err error) { 11454 if tracing.IsEnabled() { 11455 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingLocatorCollectionPage.NextWithContext") 11456 defer func() { 11457 sc := -1 11458 if page.Response().Response.Response != nil { 11459 sc = page.Response().Response.Response.StatusCode 11460 } 11461 tracing.EndSpan(ctx, sc, err) 11462 }() 11463 } 11464 for { 11465 next, err := page.fn(ctx, page.slc) 11466 if err != nil { 11467 return err 11468 } 11469 page.slc = next 11470 if !next.hasNextLink() || !next.IsEmpty() { 11471 break 11472 } 11473 } 11474 return nil 11475} 11476 11477// Next advances to the next page of values. If there was an error making 11478// the request the page does not advance and the error is returned. 11479// Deprecated: Use NextWithContext() instead. 11480func (page *StreamingLocatorCollectionPage) Next() error { 11481 return page.NextWithContext(context.Background()) 11482} 11483 11484// NotDone returns true if the page enumeration should be started or is not yet complete. 11485func (page StreamingLocatorCollectionPage) NotDone() bool { 11486 return !page.slc.IsEmpty() 11487} 11488 11489// Response returns the raw server response from the last page request. 11490func (page StreamingLocatorCollectionPage) Response() StreamingLocatorCollection { 11491 return page.slc 11492} 11493 11494// Values returns the slice of values for the current page or nil if there are no values. 11495func (page StreamingLocatorCollectionPage) Values() []StreamingLocator { 11496 if page.slc.IsEmpty() { 11497 return nil 11498 } 11499 return *page.slc.Value 11500} 11501 11502// Creates a new instance of the StreamingLocatorCollectionPage type. 11503func NewStreamingLocatorCollectionPage(cur StreamingLocatorCollection, getNextPage func(context.Context, StreamingLocatorCollection) (StreamingLocatorCollection, error)) StreamingLocatorCollectionPage { 11504 return StreamingLocatorCollectionPage{ 11505 fn: getNextPage, 11506 slc: cur, 11507 } 11508} 11509 11510// StreamingLocatorContentKey class for content key in Streaming Locator 11511type StreamingLocatorContentKey struct { 11512 // ID - ID of Content Key 11513 ID *uuid.UUID `json:"id,omitempty"` 11514 // Type - READ-ONLY; Encryption type of Content Key. Possible values include: 'StreamingLocatorContentKeyTypeCommonEncryptionCenc', 'StreamingLocatorContentKeyTypeCommonEncryptionCbcs', 'StreamingLocatorContentKeyTypeEnvelopeEncryption' 11515 Type StreamingLocatorContentKeyType `json:"type,omitempty"` 11516 // LabelReferenceInStreamingPolicy - Label of Content Key as specified in the Streaming Policy 11517 LabelReferenceInStreamingPolicy *string `json:"labelReferenceInStreamingPolicy,omitempty"` 11518 // Value - Value of Content Key 11519 Value *string `json:"value,omitempty"` 11520 // PolicyName - READ-ONLY; ContentKeyPolicy used by Content Key 11521 PolicyName *string `json:"policyName,omitempty"` 11522 // Tracks - READ-ONLY; Tracks which use this Content Key 11523 Tracks *[]TrackSelection `json:"tracks,omitempty"` 11524} 11525 11526// MarshalJSON is the custom marshaler for StreamingLocatorContentKey. 11527func (slck StreamingLocatorContentKey) MarshalJSON() ([]byte, error) { 11528 objectMap := make(map[string]interface{}) 11529 if slck.ID != nil { 11530 objectMap["id"] = slck.ID 11531 } 11532 if slck.LabelReferenceInStreamingPolicy != nil { 11533 objectMap["labelReferenceInStreamingPolicy"] = slck.LabelReferenceInStreamingPolicy 11534 } 11535 if slck.Value != nil { 11536 objectMap["value"] = slck.Value 11537 } 11538 return json.Marshal(objectMap) 11539} 11540 11541// StreamingLocatorProperties properties of the Streaming Locator. 11542type StreamingLocatorProperties struct { 11543 // AssetName - Asset Name 11544 AssetName *string `json:"assetName,omitempty"` 11545 // Created - READ-ONLY; The creation time of the Streaming Locator. 11546 Created *date.Time `json:"created,omitempty"` 11547 // StartTime - The start time of the Streaming Locator. 11548 StartTime *date.Time `json:"startTime,omitempty"` 11549 // EndTime - The end time of the Streaming Locator. 11550 EndTime *date.Time `json:"endTime,omitempty"` 11551 // StreamingLocatorID - The StreamingLocatorId of the Streaming Locator. 11552 StreamingLocatorID *uuid.UUID `json:"streamingLocatorId,omitempty"` 11553 // 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' 11554 StreamingPolicyName *string `json:"streamingPolicyName,omitempty"` 11555 // DefaultContentKeyPolicyName - Name of the default ContentKeyPolicy used by this Streaming Locator. 11556 DefaultContentKeyPolicyName *string `json:"defaultContentKeyPolicyName,omitempty"` 11557 // ContentKeys - The ContentKeys used by this Streaming Locator. 11558 ContentKeys *[]StreamingLocatorContentKey `json:"contentKeys,omitempty"` 11559 // AlternativeMediaID - Alternative Media ID of this Streaming Locator 11560 AlternativeMediaID *string `json:"alternativeMediaId,omitempty"` 11561 // Filters - A list of asset or account filters which apply to this streaming locator 11562 Filters *[]string `json:"filters,omitempty"` 11563} 11564 11565// MarshalJSON is the custom marshaler for StreamingLocatorProperties. 11566func (slp StreamingLocatorProperties) MarshalJSON() ([]byte, error) { 11567 objectMap := make(map[string]interface{}) 11568 if slp.AssetName != nil { 11569 objectMap["assetName"] = slp.AssetName 11570 } 11571 if slp.StartTime != nil { 11572 objectMap["startTime"] = slp.StartTime 11573 } 11574 if slp.EndTime != nil { 11575 objectMap["endTime"] = slp.EndTime 11576 } 11577 if slp.StreamingLocatorID != nil { 11578 objectMap["streamingLocatorId"] = slp.StreamingLocatorID 11579 } 11580 if slp.StreamingPolicyName != nil { 11581 objectMap["streamingPolicyName"] = slp.StreamingPolicyName 11582 } 11583 if slp.DefaultContentKeyPolicyName != nil { 11584 objectMap["defaultContentKeyPolicyName"] = slp.DefaultContentKeyPolicyName 11585 } 11586 if slp.ContentKeys != nil { 11587 objectMap["contentKeys"] = slp.ContentKeys 11588 } 11589 if slp.AlternativeMediaID != nil { 11590 objectMap["alternativeMediaId"] = slp.AlternativeMediaID 11591 } 11592 if slp.Filters != nil { 11593 objectMap["filters"] = slp.Filters 11594 } 11595 return json.Marshal(objectMap) 11596} 11597 11598// StreamingPath class of paths for streaming 11599type StreamingPath struct { 11600 // StreamingProtocol - Streaming protocol. Possible values include: 'StreamingPolicyStreamingProtocolHls', 'StreamingPolicyStreamingProtocolDash', 'StreamingPolicyStreamingProtocolSmoothStreaming', 'StreamingPolicyStreamingProtocolDownload' 11601 StreamingProtocol StreamingPolicyStreamingProtocol `json:"streamingProtocol,omitempty"` 11602 // EncryptionScheme - Encryption scheme. Possible values include: 'EncryptionSchemeNoEncryption', 'EncryptionSchemeEnvelopeEncryption', 'EncryptionSchemeCommonEncryptionCenc', 'EncryptionSchemeCommonEncryptionCbcs' 11603 EncryptionScheme EncryptionScheme `json:"encryptionScheme,omitempty"` 11604 // Paths - Streaming paths for each protocol and encryptionScheme pair 11605 Paths *[]string `json:"paths,omitempty"` 11606} 11607 11608// StreamingPolicy a Streaming Policy resource 11609type StreamingPolicy struct { 11610 autorest.Response `json:"-"` 11611 *StreamingPolicyProperties `json:"properties,omitempty"` 11612 // SystemData - READ-ONLY; The system metadata relating to this resource. 11613 SystemData *SystemData `json:"systemData,omitempty"` 11614 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 11615 ID *string `json:"id,omitempty"` 11616 // Name - READ-ONLY; The name of the resource 11617 Name *string `json:"name,omitempty"` 11618 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 11619 Type *string `json:"type,omitempty"` 11620} 11621 11622// MarshalJSON is the custom marshaler for StreamingPolicy. 11623func (sp StreamingPolicy) MarshalJSON() ([]byte, error) { 11624 objectMap := make(map[string]interface{}) 11625 if sp.StreamingPolicyProperties != nil { 11626 objectMap["properties"] = sp.StreamingPolicyProperties 11627 } 11628 return json.Marshal(objectMap) 11629} 11630 11631// UnmarshalJSON is the custom unmarshaler for StreamingPolicy struct. 11632func (sp *StreamingPolicy) UnmarshalJSON(body []byte) error { 11633 var m map[string]*json.RawMessage 11634 err := json.Unmarshal(body, &m) 11635 if err != nil { 11636 return err 11637 } 11638 for k, v := range m { 11639 switch k { 11640 case "properties": 11641 if v != nil { 11642 var streamingPolicyProperties StreamingPolicyProperties 11643 err = json.Unmarshal(*v, &streamingPolicyProperties) 11644 if err != nil { 11645 return err 11646 } 11647 sp.StreamingPolicyProperties = &streamingPolicyProperties 11648 } 11649 case "systemData": 11650 if v != nil { 11651 var systemData SystemData 11652 err = json.Unmarshal(*v, &systemData) 11653 if err != nil { 11654 return err 11655 } 11656 sp.SystemData = &systemData 11657 } 11658 case "id": 11659 if v != nil { 11660 var ID string 11661 err = json.Unmarshal(*v, &ID) 11662 if err != nil { 11663 return err 11664 } 11665 sp.ID = &ID 11666 } 11667 case "name": 11668 if v != nil { 11669 var name string 11670 err = json.Unmarshal(*v, &name) 11671 if err != nil { 11672 return err 11673 } 11674 sp.Name = &name 11675 } 11676 case "type": 11677 if v != nil { 11678 var typeVar string 11679 err = json.Unmarshal(*v, &typeVar) 11680 if err != nil { 11681 return err 11682 } 11683 sp.Type = &typeVar 11684 } 11685 } 11686 } 11687 11688 return nil 11689} 11690 11691// StreamingPolicyCollection a collection of StreamingPolicy items. 11692type StreamingPolicyCollection struct { 11693 autorest.Response `json:"-"` 11694 // Value - A collection of StreamingPolicy items. 11695 Value *[]StreamingPolicy `json:"value,omitempty"` 11696 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 11697 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 11698} 11699 11700// StreamingPolicyCollectionIterator provides access to a complete listing of StreamingPolicy values. 11701type StreamingPolicyCollectionIterator struct { 11702 i int 11703 page StreamingPolicyCollectionPage 11704} 11705 11706// NextWithContext advances to the next value. If there was an error making 11707// the request the iterator does not advance and the error is returned. 11708func (iter *StreamingPolicyCollectionIterator) NextWithContext(ctx context.Context) (err error) { 11709 if tracing.IsEnabled() { 11710 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingPolicyCollectionIterator.NextWithContext") 11711 defer func() { 11712 sc := -1 11713 if iter.Response().Response.Response != nil { 11714 sc = iter.Response().Response.Response.StatusCode 11715 } 11716 tracing.EndSpan(ctx, sc, err) 11717 }() 11718 } 11719 iter.i++ 11720 if iter.i < len(iter.page.Values()) { 11721 return nil 11722 } 11723 err = iter.page.NextWithContext(ctx) 11724 if err != nil { 11725 iter.i-- 11726 return err 11727 } 11728 iter.i = 0 11729 return nil 11730} 11731 11732// Next advances to the next value. If there was an error making 11733// the request the iterator does not advance and the error is returned. 11734// Deprecated: Use NextWithContext() instead. 11735func (iter *StreamingPolicyCollectionIterator) Next() error { 11736 return iter.NextWithContext(context.Background()) 11737} 11738 11739// NotDone returns true if the enumeration should be started or is not yet complete. 11740func (iter StreamingPolicyCollectionIterator) NotDone() bool { 11741 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 11742} 11743 11744// Response returns the raw server response from the last page request. 11745func (iter StreamingPolicyCollectionIterator) Response() StreamingPolicyCollection { 11746 return iter.page.Response() 11747} 11748 11749// Value returns the current value or a zero-initialized value if the 11750// iterator has advanced beyond the end of the collection. 11751func (iter StreamingPolicyCollectionIterator) Value() StreamingPolicy { 11752 if !iter.page.NotDone() { 11753 return StreamingPolicy{} 11754 } 11755 return iter.page.Values()[iter.i] 11756} 11757 11758// Creates a new instance of the StreamingPolicyCollectionIterator type. 11759func NewStreamingPolicyCollectionIterator(page StreamingPolicyCollectionPage) StreamingPolicyCollectionIterator { 11760 return StreamingPolicyCollectionIterator{page: page} 11761} 11762 11763// IsEmpty returns true if the ListResult contains no values. 11764func (spc StreamingPolicyCollection) IsEmpty() bool { 11765 return spc.Value == nil || len(*spc.Value) == 0 11766} 11767 11768// hasNextLink returns true if the NextLink is not empty. 11769func (spc StreamingPolicyCollection) hasNextLink() bool { 11770 return spc.OdataNextLink != nil && len(*spc.OdataNextLink) != 0 11771} 11772 11773// streamingPolicyCollectionPreparer prepares a request to retrieve the next set of results. 11774// It returns nil if no more results exist. 11775func (spc StreamingPolicyCollection) streamingPolicyCollectionPreparer(ctx context.Context) (*http.Request, error) { 11776 if !spc.hasNextLink() { 11777 return nil, nil 11778 } 11779 return autorest.Prepare((&http.Request{}).WithContext(ctx), 11780 autorest.AsJSON(), 11781 autorest.AsGet(), 11782 autorest.WithBaseURL(to.String(spc.OdataNextLink))) 11783} 11784 11785// StreamingPolicyCollectionPage contains a page of StreamingPolicy values. 11786type StreamingPolicyCollectionPage struct { 11787 fn func(context.Context, StreamingPolicyCollection) (StreamingPolicyCollection, error) 11788 spc StreamingPolicyCollection 11789} 11790 11791// NextWithContext advances to the next page of values. If there was an error making 11792// the request the page does not advance and the error is returned. 11793func (page *StreamingPolicyCollectionPage) NextWithContext(ctx context.Context) (err error) { 11794 if tracing.IsEnabled() { 11795 ctx = tracing.StartSpan(ctx, fqdn+"/StreamingPolicyCollectionPage.NextWithContext") 11796 defer func() { 11797 sc := -1 11798 if page.Response().Response.Response != nil { 11799 sc = page.Response().Response.Response.StatusCode 11800 } 11801 tracing.EndSpan(ctx, sc, err) 11802 }() 11803 } 11804 for { 11805 next, err := page.fn(ctx, page.spc) 11806 if err != nil { 11807 return err 11808 } 11809 page.spc = next 11810 if !next.hasNextLink() || !next.IsEmpty() { 11811 break 11812 } 11813 } 11814 return nil 11815} 11816 11817// Next advances to the next page of values. If there was an error making 11818// the request the page does not advance and the error is returned. 11819// Deprecated: Use NextWithContext() instead. 11820func (page *StreamingPolicyCollectionPage) Next() error { 11821 return page.NextWithContext(context.Background()) 11822} 11823 11824// NotDone returns true if the page enumeration should be started or is not yet complete. 11825func (page StreamingPolicyCollectionPage) NotDone() bool { 11826 return !page.spc.IsEmpty() 11827} 11828 11829// Response returns the raw server response from the last page request. 11830func (page StreamingPolicyCollectionPage) Response() StreamingPolicyCollection { 11831 return page.spc 11832} 11833 11834// Values returns the slice of values for the current page or nil if there are no values. 11835func (page StreamingPolicyCollectionPage) Values() []StreamingPolicy { 11836 if page.spc.IsEmpty() { 11837 return nil 11838 } 11839 return *page.spc.Value 11840} 11841 11842// Creates a new instance of the StreamingPolicyCollectionPage type. 11843func NewStreamingPolicyCollectionPage(cur StreamingPolicyCollection, getNextPage func(context.Context, StreamingPolicyCollection) (StreamingPolicyCollection, error)) StreamingPolicyCollectionPage { 11844 return StreamingPolicyCollectionPage{ 11845 fn: getNextPage, 11846 spc: cur, 11847 } 11848} 11849 11850// StreamingPolicyContentKey class to specify properties of content key 11851type StreamingPolicyContentKey struct { 11852 // Label - Label can be used to specify Content Key when creating a Streaming Locator 11853 Label *string `json:"label,omitempty"` 11854 // PolicyName - Policy used by Content Key 11855 PolicyName *string `json:"policyName,omitempty"` 11856 // Tracks - Tracks which use this content key 11857 Tracks *[]TrackSelection `json:"tracks,omitempty"` 11858} 11859 11860// StreamingPolicyContentKeys class to specify properties of all content keys in Streaming Policy 11861type StreamingPolicyContentKeys struct { 11862 // DefaultKey - Default content key for an encryption scheme 11863 DefaultKey *DefaultKey `json:"defaultKey,omitempty"` 11864 // KeyToTrackMappings - Representing tracks needs separate content key 11865 KeyToTrackMappings *[]StreamingPolicyContentKey `json:"keyToTrackMappings,omitempty"` 11866} 11867 11868// StreamingPolicyFairPlayConfiguration class to specify configurations of FairPlay in Streaming Policy 11869type StreamingPolicyFairPlayConfiguration struct { 11870 // 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. 11871 CustomLicenseAcquisitionURLTemplate *string `json:"customLicenseAcquisitionUrlTemplate,omitempty"` 11872 // AllowPersistentLicense - All license to be persistent or not 11873 AllowPersistentLicense *bool `json:"allowPersistentLicense,omitempty"` 11874} 11875 11876// StreamingPolicyPlayReadyConfiguration class to specify configurations of PlayReady in Streaming Policy 11877type StreamingPolicyPlayReadyConfiguration struct { 11878 // 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. 11879 CustomLicenseAcquisitionURLTemplate *string `json:"customLicenseAcquisitionUrlTemplate,omitempty"` 11880 // PlayReadyCustomAttributes - Custom attributes for PlayReady 11881 PlayReadyCustomAttributes *string `json:"playReadyCustomAttributes,omitempty"` 11882} 11883 11884// StreamingPolicyProperties class to specify properties of Streaming Policy 11885type StreamingPolicyProperties struct { 11886 // Created - READ-ONLY; Creation time of Streaming Policy 11887 Created *date.Time `json:"created,omitempty"` 11888 // DefaultContentKeyPolicyName - Default ContentKey used by current Streaming Policy 11889 DefaultContentKeyPolicyName *string `json:"defaultContentKeyPolicyName,omitempty"` 11890 // EnvelopeEncryption - Configuration of EnvelopeEncryption 11891 EnvelopeEncryption *EnvelopeEncryption `json:"envelopeEncryption,omitempty"` 11892 // CommonEncryptionCenc - Configuration of CommonEncryptionCenc 11893 CommonEncryptionCenc *CommonEncryptionCenc `json:"commonEncryptionCenc,omitempty"` 11894 // CommonEncryptionCbcs - Configuration of CommonEncryptionCbcs 11895 CommonEncryptionCbcs *CommonEncryptionCbcs `json:"commonEncryptionCbcs,omitempty"` 11896 // NoEncryption - Configurations of NoEncryption 11897 NoEncryption *NoEncryption `json:"noEncryption,omitempty"` 11898} 11899 11900// MarshalJSON is the custom marshaler for StreamingPolicyProperties. 11901func (spp StreamingPolicyProperties) MarshalJSON() ([]byte, error) { 11902 objectMap := make(map[string]interface{}) 11903 if spp.DefaultContentKeyPolicyName != nil { 11904 objectMap["defaultContentKeyPolicyName"] = spp.DefaultContentKeyPolicyName 11905 } 11906 if spp.EnvelopeEncryption != nil { 11907 objectMap["envelopeEncryption"] = spp.EnvelopeEncryption 11908 } 11909 if spp.CommonEncryptionCenc != nil { 11910 objectMap["commonEncryptionCenc"] = spp.CommonEncryptionCenc 11911 } 11912 if spp.CommonEncryptionCbcs != nil { 11913 objectMap["commonEncryptionCbcs"] = spp.CommonEncryptionCbcs 11914 } 11915 if spp.NoEncryption != nil { 11916 objectMap["noEncryption"] = spp.NoEncryption 11917 } 11918 return json.Marshal(objectMap) 11919} 11920 11921// StreamingPolicyWidevineConfiguration class to specify configurations of Widevine in Streaming Policy 11922type StreamingPolicyWidevineConfiguration struct { 11923 // 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. 11924 CustomLicenseAcquisitionURLTemplate *string `json:"customLicenseAcquisitionUrlTemplate,omitempty"` 11925} 11926 11927// SyncStorageKeysInput the input to the sync storage keys request. 11928type SyncStorageKeysInput struct { 11929 // ID - The ID of the storage account resource. 11930 ID *string `json:"id,omitempty"` 11931} 11932 11933// SystemData metadata pertaining to creation and last modification of the resource. 11934type SystemData struct { 11935 // CreatedBy - The identity that created the resource. 11936 CreatedBy *string `json:"createdBy,omitempty"` 11937 // CreatedByType - The type of identity that created the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey' 11938 CreatedByType CreatedByType `json:"createdByType,omitempty"` 11939 // CreatedAt - The timestamp of resource creation (UTC). 11940 CreatedAt *date.Time `json:"createdAt,omitempty"` 11941 // LastModifiedBy - The identity that last modified the resource. 11942 LastModifiedBy *string `json:"lastModifiedBy,omitempty"` 11943 // LastModifiedByType - The type of identity that last modified the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey' 11944 LastModifiedByType CreatedByType `json:"lastModifiedByType,omitempty"` 11945 // LastModifiedAt - The timestamp of resource last modification (UTC) 11946 LastModifiedAt *date.Time `json:"lastModifiedAt,omitempty"` 11947} 11948 11949// BasicTrackDescriptor base type for all TrackDescriptor types, which define the metadata and selection for tracks 11950// that should be processed by a Job 11951type BasicTrackDescriptor interface { 11952 AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) 11953 AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) 11954 AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) 11955 AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) 11956 AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) 11957 AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) 11958 AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) 11959 AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) 11960 AsTrackDescriptor() (*TrackDescriptor, bool) 11961} 11962 11963// TrackDescriptor base type for all TrackDescriptor types, which define the metadata and selection for tracks 11964// that should be processed by a Job 11965type TrackDescriptor struct { 11966 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 11967 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 11968} 11969 11970func unmarshalBasicTrackDescriptor(body []byte) (BasicTrackDescriptor, error) { 11971 var m map[string]interface{} 11972 err := json.Unmarshal(body, &m) 11973 if err != nil { 11974 return nil, err 11975 } 11976 11977 switch m["@odata.type"] { 11978 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor): 11979 var atd AudioTrackDescriptor 11980 err := json.Unmarshal(body, &atd) 11981 return atd, err 11982 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute): 11983 var satba SelectAudioTrackByAttribute 11984 err := json.Unmarshal(body, &satba) 11985 return satba, err 11986 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID): 11987 var satbi SelectAudioTrackByID 11988 err := json.Unmarshal(body, &satbi) 11989 return satbi, err 11990 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor): 11991 var vtd VideoTrackDescriptor 11992 err := json.Unmarshal(body, &vtd) 11993 return vtd, err 11994 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute): 11995 var svtba SelectVideoTrackByAttribute 11996 err := json.Unmarshal(body, &svtba) 11997 return svtba, err 11998 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID): 11999 var svtbi SelectVideoTrackByID 12000 err := json.Unmarshal(body, &svtbi) 12001 return svtbi, err 12002 default: 12003 var td TrackDescriptor 12004 err := json.Unmarshal(body, &td) 12005 return td, err 12006 } 12007} 12008func unmarshalBasicTrackDescriptorArray(body []byte) ([]BasicTrackDescriptor, error) { 12009 var rawMessages []*json.RawMessage 12010 err := json.Unmarshal(body, &rawMessages) 12011 if err != nil { 12012 return nil, err 12013 } 12014 12015 tdArray := make([]BasicTrackDescriptor, len(rawMessages)) 12016 12017 for index, rawMessage := range rawMessages { 12018 td, err := unmarshalBasicTrackDescriptor(*rawMessage) 12019 if err != nil { 12020 return nil, err 12021 } 12022 tdArray[index] = td 12023 } 12024 return tdArray, nil 12025} 12026 12027// MarshalJSON is the custom marshaler for TrackDescriptor. 12028func (td TrackDescriptor) MarshalJSON() ([]byte, error) { 12029 td.OdataType = OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor 12030 objectMap := make(map[string]interface{}) 12031 if td.OdataType != "" { 12032 objectMap["@odata.type"] = td.OdataType 12033 } 12034 return json.Marshal(objectMap) 12035} 12036 12037// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12038func (td TrackDescriptor) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 12039 return nil, false 12040} 12041 12042// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12043func (td TrackDescriptor) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 12044 return nil, false 12045} 12046 12047// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for TrackDescriptor. 12048func (td TrackDescriptor) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 12049 return nil, false 12050} 12051 12052// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for TrackDescriptor. 12053func (td TrackDescriptor) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 12054 return nil, false 12055} 12056 12057// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12058func (td TrackDescriptor) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 12059 return nil, false 12060} 12061 12062// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12063func (td TrackDescriptor) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 12064 return nil, false 12065} 12066 12067// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for TrackDescriptor. 12068func (td TrackDescriptor) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 12069 return nil, false 12070} 12071 12072// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for TrackDescriptor. 12073func (td TrackDescriptor) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 12074 return nil, false 12075} 12076 12077// AsTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12078func (td TrackDescriptor) AsTrackDescriptor() (*TrackDescriptor, bool) { 12079 return &td, true 12080} 12081 12082// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for TrackDescriptor. 12083func (td TrackDescriptor) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 12084 return &td, true 12085} 12086 12087// TrackedResource the resource model definition for an Azure Resource Manager tracked top level resource 12088// which has 'tags' and a 'location' 12089type TrackedResource struct { 12090 // Tags - Resource tags. 12091 Tags map[string]*string `json:"tags"` 12092 // Location - The geo-location where the resource lives 12093 Location *string `json:"location,omitempty"` 12094 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 12095 ID *string `json:"id,omitempty"` 12096 // Name - READ-ONLY; The name of the resource 12097 Name *string `json:"name,omitempty"` 12098 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 12099 Type *string `json:"type,omitempty"` 12100} 12101 12102// MarshalJSON is the custom marshaler for TrackedResource. 12103func (tr TrackedResource) MarshalJSON() ([]byte, error) { 12104 objectMap := make(map[string]interface{}) 12105 if tr.Tags != nil { 12106 objectMap["tags"] = tr.Tags 12107 } 12108 if tr.Location != nil { 12109 objectMap["location"] = tr.Location 12110 } 12111 return json.Marshal(objectMap) 12112} 12113 12114// TrackPropertyCondition class to specify one track property condition 12115type TrackPropertyCondition struct { 12116 // Property - Track property type. Possible values include: 'TrackPropertyTypeUnknown', 'TrackPropertyTypeFourCC' 12117 Property TrackPropertyType `json:"property,omitempty"` 12118 // Operation - Track property condition operation. Possible values include: 'TrackPropertyCompareOperationUnknown', 'TrackPropertyCompareOperationEqual' 12119 Operation TrackPropertyCompareOperation `json:"operation,omitempty"` 12120 // Value - Track property value 12121 Value *string `json:"value,omitempty"` 12122} 12123 12124// TrackSelection class to select a track 12125type TrackSelection struct { 12126 // TrackSelections - TrackSelections is a track property condition list which can specify track(s) 12127 TrackSelections *[]TrackPropertyCondition `json:"trackSelections,omitempty"` 12128} 12129 12130// Transform a Transform encapsulates the rules or instructions for generating desired outputs from input 12131// media, such as by transcoding or by extracting insights. After the Transform is created, it can be 12132// applied to input media by creating Jobs. 12133type Transform struct { 12134 autorest.Response `json:"-"` 12135 // TransformProperties - The resource properties. 12136 *TransformProperties `json:"properties,omitempty"` 12137 // SystemData - READ-ONLY; The system metadata relating to this resource. 12138 SystemData *SystemData `json:"systemData,omitempty"` 12139 // ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} 12140 ID *string `json:"id,omitempty"` 12141 // Name - READ-ONLY; The name of the resource 12142 Name *string `json:"name,omitempty"` 12143 // Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" 12144 Type *string `json:"type,omitempty"` 12145} 12146 12147// MarshalJSON is the custom marshaler for Transform. 12148func (t Transform) MarshalJSON() ([]byte, error) { 12149 objectMap := make(map[string]interface{}) 12150 if t.TransformProperties != nil { 12151 objectMap["properties"] = t.TransformProperties 12152 } 12153 return json.Marshal(objectMap) 12154} 12155 12156// UnmarshalJSON is the custom unmarshaler for Transform struct. 12157func (t *Transform) UnmarshalJSON(body []byte) error { 12158 var m map[string]*json.RawMessage 12159 err := json.Unmarshal(body, &m) 12160 if err != nil { 12161 return err 12162 } 12163 for k, v := range m { 12164 switch k { 12165 case "properties": 12166 if v != nil { 12167 var transformProperties TransformProperties 12168 err = json.Unmarshal(*v, &transformProperties) 12169 if err != nil { 12170 return err 12171 } 12172 t.TransformProperties = &transformProperties 12173 } 12174 case "systemData": 12175 if v != nil { 12176 var systemData SystemData 12177 err = json.Unmarshal(*v, &systemData) 12178 if err != nil { 12179 return err 12180 } 12181 t.SystemData = &systemData 12182 } 12183 case "id": 12184 if v != nil { 12185 var ID string 12186 err = json.Unmarshal(*v, &ID) 12187 if err != nil { 12188 return err 12189 } 12190 t.ID = &ID 12191 } 12192 case "name": 12193 if v != nil { 12194 var name string 12195 err = json.Unmarshal(*v, &name) 12196 if err != nil { 12197 return err 12198 } 12199 t.Name = &name 12200 } 12201 case "type": 12202 if v != nil { 12203 var typeVar string 12204 err = json.Unmarshal(*v, &typeVar) 12205 if err != nil { 12206 return err 12207 } 12208 t.Type = &typeVar 12209 } 12210 } 12211 } 12212 12213 return nil 12214} 12215 12216// TransformCollection a collection of Transform items. 12217type TransformCollection struct { 12218 autorest.Response `json:"-"` 12219 // Value - A collection of Transform items. 12220 Value *[]Transform `json:"value,omitempty"` 12221 // OdataNextLink - A link to the next page of the collection (when the collection contains too many results to return in one response). 12222 OdataNextLink *string `json:"@odata.nextLink,omitempty"` 12223} 12224 12225// TransformCollectionIterator provides access to a complete listing of Transform values. 12226type TransformCollectionIterator struct { 12227 i int 12228 page TransformCollectionPage 12229} 12230 12231// NextWithContext advances to the next value. If there was an error making 12232// the request the iterator does not advance and the error is returned. 12233func (iter *TransformCollectionIterator) NextWithContext(ctx context.Context) (err error) { 12234 if tracing.IsEnabled() { 12235 ctx = tracing.StartSpan(ctx, fqdn+"/TransformCollectionIterator.NextWithContext") 12236 defer func() { 12237 sc := -1 12238 if iter.Response().Response.Response != nil { 12239 sc = iter.Response().Response.Response.StatusCode 12240 } 12241 tracing.EndSpan(ctx, sc, err) 12242 }() 12243 } 12244 iter.i++ 12245 if iter.i < len(iter.page.Values()) { 12246 return nil 12247 } 12248 err = iter.page.NextWithContext(ctx) 12249 if err != nil { 12250 iter.i-- 12251 return err 12252 } 12253 iter.i = 0 12254 return nil 12255} 12256 12257// Next advances to the next value. If there was an error making 12258// the request the iterator does not advance and the error is returned. 12259// Deprecated: Use NextWithContext() instead. 12260func (iter *TransformCollectionIterator) Next() error { 12261 return iter.NextWithContext(context.Background()) 12262} 12263 12264// NotDone returns true if the enumeration should be started or is not yet complete. 12265func (iter TransformCollectionIterator) NotDone() bool { 12266 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 12267} 12268 12269// Response returns the raw server response from the last page request. 12270func (iter TransformCollectionIterator) Response() TransformCollection { 12271 return iter.page.Response() 12272} 12273 12274// Value returns the current value or a zero-initialized value if the 12275// iterator has advanced beyond the end of the collection. 12276func (iter TransformCollectionIterator) Value() Transform { 12277 if !iter.page.NotDone() { 12278 return Transform{} 12279 } 12280 return iter.page.Values()[iter.i] 12281} 12282 12283// Creates a new instance of the TransformCollectionIterator type. 12284func NewTransformCollectionIterator(page TransformCollectionPage) TransformCollectionIterator { 12285 return TransformCollectionIterator{page: page} 12286} 12287 12288// IsEmpty returns true if the ListResult contains no values. 12289func (tc TransformCollection) IsEmpty() bool { 12290 return tc.Value == nil || len(*tc.Value) == 0 12291} 12292 12293// hasNextLink returns true if the NextLink is not empty. 12294func (tc TransformCollection) hasNextLink() bool { 12295 return tc.OdataNextLink != nil && len(*tc.OdataNextLink) != 0 12296} 12297 12298// transformCollectionPreparer prepares a request to retrieve the next set of results. 12299// It returns nil if no more results exist. 12300func (tc TransformCollection) transformCollectionPreparer(ctx context.Context) (*http.Request, error) { 12301 if !tc.hasNextLink() { 12302 return nil, nil 12303 } 12304 return autorest.Prepare((&http.Request{}).WithContext(ctx), 12305 autorest.AsJSON(), 12306 autorest.AsGet(), 12307 autorest.WithBaseURL(to.String(tc.OdataNextLink))) 12308} 12309 12310// TransformCollectionPage contains a page of Transform values. 12311type TransformCollectionPage struct { 12312 fn func(context.Context, TransformCollection) (TransformCollection, error) 12313 tc TransformCollection 12314} 12315 12316// NextWithContext advances to the next page of values. If there was an error making 12317// the request the page does not advance and the error is returned. 12318func (page *TransformCollectionPage) NextWithContext(ctx context.Context) (err error) { 12319 if tracing.IsEnabled() { 12320 ctx = tracing.StartSpan(ctx, fqdn+"/TransformCollectionPage.NextWithContext") 12321 defer func() { 12322 sc := -1 12323 if page.Response().Response.Response != nil { 12324 sc = page.Response().Response.Response.StatusCode 12325 } 12326 tracing.EndSpan(ctx, sc, err) 12327 }() 12328 } 12329 for { 12330 next, err := page.fn(ctx, page.tc) 12331 if err != nil { 12332 return err 12333 } 12334 page.tc = next 12335 if !next.hasNextLink() || !next.IsEmpty() { 12336 break 12337 } 12338 } 12339 return nil 12340} 12341 12342// Next advances to the next page of values. If there was an error making 12343// the request the page does not advance and the error is returned. 12344// Deprecated: Use NextWithContext() instead. 12345func (page *TransformCollectionPage) Next() error { 12346 return page.NextWithContext(context.Background()) 12347} 12348 12349// NotDone returns true if the page enumeration should be started or is not yet complete. 12350func (page TransformCollectionPage) NotDone() bool { 12351 return !page.tc.IsEmpty() 12352} 12353 12354// Response returns the raw server response from the last page request. 12355func (page TransformCollectionPage) Response() TransformCollection { 12356 return page.tc 12357} 12358 12359// Values returns the slice of values for the current page or nil if there are no values. 12360func (page TransformCollectionPage) Values() []Transform { 12361 if page.tc.IsEmpty() { 12362 return nil 12363 } 12364 return *page.tc.Value 12365} 12366 12367// Creates a new instance of the TransformCollectionPage type. 12368func NewTransformCollectionPage(cur TransformCollection, getNextPage func(context.Context, TransformCollection) (TransformCollection, error)) TransformCollectionPage { 12369 return TransformCollectionPage{ 12370 fn: getNextPage, 12371 tc: cur, 12372 } 12373} 12374 12375// TransformOutput describes the properties of a TransformOutput, which are the rules to be applied while 12376// generating the desired output. 12377type TransformOutput struct { 12378 // 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' 12379 OnError OnErrorType `json:"onError,omitempty"` 12380 // 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' 12381 RelativePriority Priority `json:"relativePriority,omitempty"` 12382 // Preset - Preset that describes the operations that will be used to modify, transcode, or extract insights from the source file to generate the output. 12383 Preset BasicPreset `json:"preset,omitempty"` 12384} 12385 12386// UnmarshalJSON is the custom unmarshaler for TransformOutput struct. 12387func (toVar *TransformOutput) UnmarshalJSON(body []byte) error { 12388 var m map[string]*json.RawMessage 12389 err := json.Unmarshal(body, &m) 12390 if err != nil { 12391 return err 12392 } 12393 for k, v := range m { 12394 switch k { 12395 case "onError": 12396 if v != nil { 12397 var onError OnErrorType 12398 err = json.Unmarshal(*v, &onError) 12399 if err != nil { 12400 return err 12401 } 12402 toVar.OnError = onError 12403 } 12404 case "relativePriority": 12405 if v != nil { 12406 var relativePriority Priority 12407 err = json.Unmarshal(*v, &relativePriority) 12408 if err != nil { 12409 return err 12410 } 12411 toVar.RelativePriority = relativePriority 12412 } 12413 case "preset": 12414 if v != nil { 12415 preset, err := unmarshalBasicPreset(*v) 12416 if err != nil { 12417 return err 12418 } 12419 toVar.Preset = preset 12420 } 12421 } 12422 } 12423 12424 return nil 12425} 12426 12427// TransformProperties a Transform. 12428type TransformProperties struct { 12429 // Created - READ-ONLY; The UTC date and time when the Transform was created, in 'YYYY-MM-DDThh:mm:ssZ' format. 12430 Created *date.Time `json:"created,omitempty"` 12431 // Description - An optional verbose description of the Transform. 12432 Description *string `json:"description,omitempty"` 12433 // LastModified - READ-ONLY; The UTC date and time when the Transform was last updated, in 'YYYY-MM-DDThh:mm:ssZ' format. 12434 LastModified *date.Time `json:"lastModified,omitempty"` 12435 // Outputs - An array of one or more TransformOutputs that the Transform should generate. 12436 Outputs *[]TransformOutput `json:"outputs,omitempty"` 12437} 12438 12439// MarshalJSON is the custom marshaler for TransformProperties. 12440func (tp TransformProperties) MarshalJSON() ([]byte, error) { 12441 objectMap := make(map[string]interface{}) 12442 if tp.Description != nil { 12443 objectMap["description"] = tp.Description 12444 } 12445 if tp.Outputs != nil { 12446 objectMap["outputs"] = tp.Outputs 12447 } 12448 return json.Marshal(objectMap) 12449} 12450 12451// TransportStreamFormat describes the properties for generating an MPEG-2 Transport Stream (ISO/IEC 12452// 13818-1) output video file(s). 12453type TransportStreamFormat struct { 12454 // 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 . 12455 OutputFiles *[]OutputFile `json:"outputFiles,omitempty"` 12456 // 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. 12457 FilenamePattern *string `json:"filenamePattern,omitempty"` 12458 // OdataType - Possible values include: 'OdataTypeBasicFormatOdataTypeFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaImageFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaJpgFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaPngFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMultiBitrateFormat', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaMp4Format', 'OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat' 12459 OdataType OdataTypeBasicFormat `json:"@odata.type,omitempty"` 12460} 12461 12462// MarshalJSON is the custom marshaler for TransportStreamFormat. 12463func (tsf TransportStreamFormat) MarshalJSON() ([]byte, error) { 12464 tsf.OdataType = OdataTypeBasicFormatOdataTypeMicrosoftMediaTransportStreamFormat 12465 objectMap := make(map[string]interface{}) 12466 if tsf.OutputFiles != nil { 12467 objectMap["outputFiles"] = tsf.OutputFiles 12468 } 12469 if tsf.FilenamePattern != nil { 12470 objectMap["filenamePattern"] = tsf.FilenamePattern 12471 } 12472 if tsf.OdataType != "" { 12473 objectMap["@odata.type"] = tsf.OdataType 12474 } 12475 return json.Marshal(objectMap) 12476} 12477 12478// AsImageFormat is the BasicFormat implementation for TransportStreamFormat. 12479func (tsf TransportStreamFormat) AsImageFormat() (*ImageFormat, bool) { 12480 return nil, false 12481} 12482 12483// AsBasicImageFormat is the BasicFormat implementation for TransportStreamFormat. 12484func (tsf TransportStreamFormat) AsBasicImageFormat() (BasicImageFormat, bool) { 12485 return nil, false 12486} 12487 12488// AsJpgFormat is the BasicFormat implementation for TransportStreamFormat. 12489func (tsf TransportStreamFormat) AsJpgFormat() (*JpgFormat, bool) { 12490 return nil, false 12491} 12492 12493// AsPngFormat is the BasicFormat implementation for TransportStreamFormat. 12494func (tsf TransportStreamFormat) AsPngFormat() (*PngFormat, bool) { 12495 return nil, false 12496} 12497 12498// AsMultiBitrateFormat is the BasicFormat implementation for TransportStreamFormat. 12499func (tsf TransportStreamFormat) AsMultiBitrateFormat() (*MultiBitrateFormat, bool) { 12500 return nil, false 12501} 12502 12503// AsBasicMultiBitrateFormat is the BasicFormat implementation for TransportStreamFormat. 12504func (tsf TransportStreamFormat) AsBasicMultiBitrateFormat() (BasicMultiBitrateFormat, bool) { 12505 return &tsf, true 12506} 12507 12508// AsMp4Format is the BasicFormat implementation for TransportStreamFormat. 12509func (tsf TransportStreamFormat) AsMp4Format() (*Mp4Format, bool) { 12510 return nil, false 12511} 12512 12513// AsTransportStreamFormat is the BasicFormat implementation for TransportStreamFormat. 12514func (tsf TransportStreamFormat) AsTransportStreamFormat() (*TransportStreamFormat, bool) { 12515 return &tsf, true 12516} 12517 12518// AsFormat is the BasicFormat implementation for TransportStreamFormat. 12519func (tsf TransportStreamFormat) AsFormat() (*Format, bool) { 12520 return nil, false 12521} 12522 12523// AsBasicFormat is the BasicFormat implementation for TransportStreamFormat. 12524func (tsf TransportStreamFormat) AsBasicFormat() (BasicFormat, bool) { 12525 return &tsf, true 12526} 12527 12528// UtcClipTime specifies the clip time as a Utc time position in the media file. The Utc time can point to 12529// a different position depending on whether the media file starts from a timestamp of zero or not. 12530type UtcClipTime struct { 12531 // Time - The time position on the timeline of the input media based on Utc time. 12532 Time *date.Time `json:"time,omitempty"` 12533 // OdataType - Possible values include: 'OdataTypeBasicClipTimeOdataTypeClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaAbsoluteClipTime', 'OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime' 12534 OdataType OdataTypeBasicClipTime `json:"@odata.type,omitempty"` 12535} 12536 12537// MarshalJSON is the custom marshaler for UtcClipTime. 12538func (uct UtcClipTime) MarshalJSON() ([]byte, error) { 12539 uct.OdataType = OdataTypeBasicClipTimeOdataTypeMicrosoftMediaUtcClipTime 12540 objectMap := make(map[string]interface{}) 12541 if uct.Time != nil { 12542 objectMap["time"] = uct.Time 12543 } 12544 if uct.OdataType != "" { 12545 objectMap["@odata.type"] = uct.OdataType 12546 } 12547 return json.Marshal(objectMap) 12548} 12549 12550// AsAbsoluteClipTime is the BasicClipTime implementation for UtcClipTime. 12551func (uct UtcClipTime) AsAbsoluteClipTime() (*AbsoluteClipTime, bool) { 12552 return nil, false 12553} 12554 12555// AsUtcClipTime is the BasicClipTime implementation for UtcClipTime. 12556func (uct UtcClipTime) AsUtcClipTime() (*UtcClipTime, bool) { 12557 return &uct, true 12558} 12559 12560// AsClipTime is the BasicClipTime implementation for UtcClipTime. 12561func (uct UtcClipTime) AsClipTime() (*ClipTime, bool) { 12562 return nil, false 12563} 12564 12565// AsBasicClipTime is the BasicClipTime implementation for UtcClipTime. 12566func (uct UtcClipTime) AsBasicClipTime() (BasicClipTime, bool) { 12567 return &uct, true 12568} 12569 12570// BasicVideo describes the basic properties for encoding the input video. 12571type BasicVideo interface { 12572 AsH265Video() (*H265Video, bool) 12573 AsImage() (*Image, bool) 12574 AsBasicImage() (BasicImage, bool) 12575 AsH264Video() (*H264Video, bool) 12576 AsJpgImage() (*JpgImage, bool) 12577 AsPngImage() (*PngImage, bool) 12578 AsVideo() (*Video, bool) 12579} 12580 12581// Video describes the basic properties for encoding the input video. 12582type Video struct { 12583 // 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. 12584 KeyFrameInterval *string `json:"keyFrameInterval,omitempty"` 12585 // 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' 12586 StretchMode StretchMode `json:"stretchMode,omitempty"` 12587 // SyncMode - The Video Sync Mode. Possible values include: 'VideoSyncModeAuto', 'VideoSyncModePassthrough', 'VideoSyncModeCfr', 'VideoSyncModeVfr' 12588 SyncMode VideoSyncMode `json:"syncMode,omitempty"` 12589 // Label - An optional label for the codec. The label can be used to control muxing behavior. 12590 Label *string `json:"label,omitempty"` 12591 // OdataType - Possible values include: 'OdataTypeBasicCodecOdataTypeCodec', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaAacAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyVideo', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaCopyAudio', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage', 'OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage' 12592 OdataType OdataTypeBasicCodec `json:"@odata.type,omitempty"` 12593} 12594 12595func unmarshalBasicVideo(body []byte) (BasicVideo, error) { 12596 var m map[string]interface{} 12597 err := json.Unmarshal(body, &m) 12598 if err != nil { 12599 return nil, err 12600 } 12601 12602 switch m["@odata.type"] { 12603 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH265Video): 12604 var hv H265Video 12605 err := json.Unmarshal(body, &hv) 12606 return hv, err 12607 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaImage): 12608 var i Image 12609 err := json.Unmarshal(body, &i) 12610 return i, err 12611 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaH264Video): 12612 var hv H264Video 12613 err := json.Unmarshal(body, &hv) 12614 return hv, err 12615 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaJpgImage): 12616 var ji JpgImage 12617 err := json.Unmarshal(body, &ji) 12618 return ji, err 12619 case string(OdataTypeBasicCodecOdataTypeMicrosoftMediaPngImage): 12620 var pi PngImage 12621 err := json.Unmarshal(body, &pi) 12622 return pi, err 12623 default: 12624 var vVar Video 12625 err := json.Unmarshal(body, &vVar) 12626 return vVar, err 12627 } 12628} 12629func unmarshalBasicVideoArray(body []byte) ([]BasicVideo, error) { 12630 var rawMessages []*json.RawMessage 12631 err := json.Unmarshal(body, &rawMessages) 12632 if err != nil { 12633 return nil, err 12634 } 12635 12636 vVarArray := make([]BasicVideo, len(rawMessages)) 12637 12638 for index, rawMessage := range rawMessages { 12639 vVar, err := unmarshalBasicVideo(*rawMessage) 12640 if err != nil { 12641 return nil, err 12642 } 12643 vVarArray[index] = vVar 12644 } 12645 return vVarArray, nil 12646} 12647 12648// MarshalJSON is the custom marshaler for Video. 12649func (vVar Video) MarshalJSON() ([]byte, error) { 12650 vVar.OdataType = OdataTypeBasicCodecOdataTypeMicrosoftMediaVideo 12651 objectMap := make(map[string]interface{}) 12652 if vVar.KeyFrameInterval != nil { 12653 objectMap["keyFrameInterval"] = vVar.KeyFrameInterval 12654 } 12655 if vVar.StretchMode != "" { 12656 objectMap["stretchMode"] = vVar.StretchMode 12657 } 12658 if vVar.SyncMode != "" { 12659 objectMap["syncMode"] = vVar.SyncMode 12660 } 12661 if vVar.Label != nil { 12662 objectMap["label"] = vVar.Label 12663 } 12664 if vVar.OdataType != "" { 12665 objectMap["@odata.type"] = vVar.OdataType 12666 } 12667 return json.Marshal(objectMap) 12668} 12669 12670// AsAudio is the BasicCodec implementation for Video. 12671func (vVar Video) AsAudio() (*Audio, bool) { 12672 return nil, false 12673} 12674 12675// AsBasicAudio is the BasicCodec implementation for Video. 12676func (vVar Video) AsBasicAudio() (BasicAudio, bool) { 12677 return nil, false 12678} 12679 12680// AsAacAudio is the BasicCodec implementation for Video. 12681func (vVar Video) AsAacAudio() (*AacAudio, bool) { 12682 return nil, false 12683} 12684 12685// AsVideo is the BasicCodec implementation for Video. 12686func (vVar Video) AsVideo() (*Video, bool) { 12687 return &vVar, true 12688} 12689 12690// AsBasicVideo is the BasicCodec implementation for Video. 12691func (vVar Video) AsBasicVideo() (BasicVideo, bool) { 12692 return &vVar, true 12693} 12694 12695// AsH265Video is the BasicCodec implementation for Video. 12696func (vVar Video) AsH265Video() (*H265Video, bool) { 12697 return nil, false 12698} 12699 12700// AsCopyVideo is the BasicCodec implementation for Video. 12701func (vVar Video) AsCopyVideo() (*CopyVideo, bool) { 12702 return nil, false 12703} 12704 12705// AsImage is the BasicCodec implementation for Video. 12706func (vVar Video) AsImage() (*Image, bool) { 12707 return nil, false 12708} 12709 12710// AsBasicImage is the BasicCodec implementation for Video. 12711func (vVar Video) AsBasicImage() (BasicImage, bool) { 12712 return nil, false 12713} 12714 12715// AsCopyAudio is the BasicCodec implementation for Video. 12716func (vVar Video) AsCopyAudio() (*CopyAudio, bool) { 12717 return nil, false 12718} 12719 12720// AsH264Video is the BasicCodec implementation for Video. 12721func (vVar Video) AsH264Video() (*H264Video, bool) { 12722 return nil, false 12723} 12724 12725// AsJpgImage is the BasicCodec implementation for Video. 12726func (vVar Video) AsJpgImage() (*JpgImage, bool) { 12727 return nil, false 12728} 12729 12730// AsPngImage is the BasicCodec implementation for Video. 12731func (vVar Video) AsPngImage() (*PngImage, bool) { 12732 return nil, false 12733} 12734 12735// AsCodec is the BasicCodec implementation for Video. 12736func (vVar Video) AsCodec() (*Codec, bool) { 12737 return nil, false 12738} 12739 12740// AsBasicCodec is the BasicCodec implementation for Video. 12741func (vVar Video) AsBasicCodec() (BasicCodec, bool) { 12742 return &vVar, true 12743} 12744 12745// VideoAnalyzerPreset a video analyzer preset that extracts insights (rich metadata) from both audio and 12746// video, and outputs a JSON format file. 12747type VideoAnalyzerPreset struct { 12748 // 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' 12749 InsightsToExtract InsightsType `json:"insightsToExtract,omitempty"` 12750 // 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 12751 AudioLanguage *string `json:"audioLanguage,omitempty"` 12752 // Mode - Determines the set of audio analysis operations to be performed. If unspecified, the Standard AudioAnalysisMode would be chosen. Possible values include: 'AudioAnalysisModeStandard', 'AudioAnalysisModeBasic' 12753 Mode AudioAnalysisMode `json:"mode,omitempty"` 12754 // ExperimentalOptions - Dictionary containing key value pairs for parameters not exposed in the preset itself 12755 ExperimentalOptions map[string]*string `json:"experimentalOptions"` 12756 // OdataType - Possible values include: 'OdataTypeBasicPresetOdataTypePreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaFaceDetectorPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaAudioAnalyzerPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaBuiltInStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaStandardEncoderPreset', 'OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset' 12757 OdataType OdataTypeBasicPreset `json:"@odata.type,omitempty"` 12758} 12759 12760// MarshalJSON is the custom marshaler for VideoAnalyzerPreset. 12761func (vap VideoAnalyzerPreset) MarshalJSON() ([]byte, error) { 12762 vap.OdataType = OdataTypeBasicPresetOdataTypeMicrosoftMediaVideoAnalyzerPreset 12763 objectMap := make(map[string]interface{}) 12764 if vap.InsightsToExtract != "" { 12765 objectMap["insightsToExtract"] = vap.InsightsToExtract 12766 } 12767 if vap.AudioLanguage != nil { 12768 objectMap["audioLanguage"] = vap.AudioLanguage 12769 } 12770 if vap.Mode != "" { 12771 objectMap["mode"] = vap.Mode 12772 } 12773 if vap.ExperimentalOptions != nil { 12774 objectMap["experimentalOptions"] = vap.ExperimentalOptions 12775 } 12776 if vap.OdataType != "" { 12777 objectMap["@odata.type"] = vap.OdataType 12778 } 12779 return json.Marshal(objectMap) 12780} 12781 12782// AsFaceDetectorPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12783func (vap VideoAnalyzerPreset) AsFaceDetectorPreset() (*FaceDetectorPreset, bool) { 12784 return nil, false 12785} 12786 12787// AsAudioAnalyzerPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12788func (vap VideoAnalyzerPreset) AsAudioAnalyzerPreset() (*AudioAnalyzerPreset, bool) { 12789 return nil, false 12790} 12791 12792// AsBasicAudioAnalyzerPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12793func (vap VideoAnalyzerPreset) AsBasicAudioAnalyzerPreset() (BasicAudioAnalyzerPreset, bool) { 12794 return &vap, true 12795} 12796 12797// AsBuiltInStandardEncoderPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12798func (vap VideoAnalyzerPreset) AsBuiltInStandardEncoderPreset() (*BuiltInStandardEncoderPreset, bool) { 12799 return nil, false 12800} 12801 12802// AsStandardEncoderPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12803func (vap VideoAnalyzerPreset) AsStandardEncoderPreset() (*StandardEncoderPreset, bool) { 12804 return nil, false 12805} 12806 12807// AsVideoAnalyzerPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12808func (vap VideoAnalyzerPreset) AsVideoAnalyzerPreset() (*VideoAnalyzerPreset, bool) { 12809 return &vap, true 12810} 12811 12812// AsPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12813func (vap VideoAnalyzerPreset) AsPreset() (*Preset, bool) { 12814 return nil, false 12815} 12816 12817// AsBasicPreset is the BasicPreset implementation for VideoAnalyzerPreset. 12818func (vap VideoAnalyzerPreset) AsBasicPreset() (BasicPreset, bool) { 12819 return &vap, true 12820} 12821 12822// BasicVideoLayer describes the settings to be used when encoding the input video into a desired output bitrate layer. 12823type BasicVideoLayer interface { 12824 AsH264Layer() (*H264Layer, bool) 12825 AsVideoLayer() (*VideoLayer, bool) 12826} 12827 12828// VideoLayer describes the settings to be used when encoding the input video into a desired output bitrate 12829// layer. 12830type VideoLayer struct { 12831 // Bitrate - The average bitrate in bits per second at which to encode the input video when generating this layer. This is a required field. 12832 Bitrate *int32 `json:"bitrate,omitempty"` 12833 // 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. 12834 MaxBitrate *int32 `json:"maxBitrate,omitempty"` 12835 // 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. 12836 BFrames *int32 `json:"bFrames,omitempty"` 12837 // 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. 12838 FrameRate *string `json:"frameRate,omitempty"` 12839 // 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. 12840 Slices *int32 `json:"slices,omitempty"` 12841 // 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. 12842 AdaptiveBFrame *bool `json:"adaptiveBFrame,omitempty"` 12843 // 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. 12844 Width *string `json:"width,omitempty"` 12845 // 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. 12846 Height *string `json:"height,omitempty"` 12847 // Label - The alphanumeric label for this layer, which can be used in multiplexing different video and audio layers, or in naming the output file. 12848 Label *string `json:"label,omitempty"` 12849 // OdataType - Possible values include: 'OdataTypeBasicLayerOdataTypeLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265VideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH265Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaJpgLayer', 'OdataTypeBasicLayerOdataTypeMicrosoftMediaPngLayer' 12850 OdataType OdataTypeBasicLayer `json:"@odata.type,omitempty"` 12851} 12852 12853func unmarshalBasicVideoLayer(body []byte) (BasicVideoLayer, error) { 12854 var m map[string]interface{} 12855 err := json.Unmarshal(body, &m) 12856 if err != nil { 12857 return nil, err 12858 } 12859 12860 switch m["@odata.type"] { 12861 case string(OdataTypeBasicLayerOdataTypeMicrosoftMediaH264Layer): 12862 var hl H264Layer 12863 err := json.Unmarshal(body, &hl) 12864 return hl, err 12865 default: 12866 var vl VideoLayer 12867 err := json.Unmarshal(body, &vl) 12868 return vl, err 12869 } 12870} 12871func unmarshalBasicVideoLayerArray(body []byte) ([]BasicVideoLayer, error) { 12872 var rawMessages []*json.RawMessage 12873 err := json.Unmarshal(body, &rawMessages) 12874 if err != nil { 12875 return nil, err 12876 } 12877 12878 vlArray := make([]BasicVideoLayer, len(rawMessages)) 12879 12880 for index, rawMessage := range rawMessages { 12881 vl, err := unmarshalBasicVideoLayer(*rawMessage) 12882 if err != nil { 12883 return nil, err 12884 } 12885 vlArray[index] = vl 12886 } 12887 return vlArray, nil 12888} 12889 12890// MarshalJSON is the custom marshaler for VideoLayer. 12891func (vl VideoLayer) MarshalJSON() ([]byte, error) { 12892 vl.OdataType = OdataTypeBasicLayerOdataTypeMicrosoftMediaVideoLayer 12893 objectMap := make(map[string]interface{}) 12894 if vl.Bitrate != nil { 12895 objectMap["bitrate"] = vl.Bitrate 12896 } 12897 if vl.MaxBitrate != nil { 12898 objectMap["maxBitrate"] = vl.MaxBitrate 12899 } 12900 if vl.BFrames != nil { 12901 objectMap["bFrames"] = vl.BFrames 12902 } 12903 if vl.FrameRate != nil { 12904 objectMap["frameRate"] = vl.FrameRate 12905 } 12906 if vl.Slices != nil { 12907 objectMap["slices"] = vl.Slices 12908 } 12909 if vl.AdaptiveBFrame != nil { 12910 objectMap["adaptiveBFrame"] = vl.AdaptiveBFrame 12911 } 12912 if vl.Width != nil { 12913 objectMap["width"] = vl.Width 12914 } 12915 if vl.Height != nil { 12916 objectMap["height"] = vl.Height 12917 } 12918 if vl.Label != nil { 12919 objectMap["label"] = vl.Label 12920 } 12921 if vl.OdataType != "" { 12922 objectMap["@odata.type"] = vl.OdataType 12923 } 12924 return json.Marshal(objectMap) 12925} 12926 12927// AsH265VideoLayer is the BasicLayer implementation for VideoLayer. 12928func (vl VideoLayer) AsH265VideoLayer() (*H265VideoLayer, bool) { 12929 return nil, false 12930} 12931 12932// AsBasicH265VideoLayer is the BasicLayer implementation for VideoLayer. 12933func (vl VideoLayer) AsBasicH265VideoLayer() (BasicH265VideoLayer, bool) { 12934 return nil, false 12935} 12936 12937// AsH265Layer is the BasicLayer implementation for VideoLayer. 12938func (vl VideoLayer) AsH265Layer() (*H265Layer, bool) { 12939 return nil, false 12940} 12941 12942// AsVideoLayer is the BasicLayer implementation for VideoLayer. 12943func (vl VideoLayer) AsVideoLayer() (*VideoLayer, bool) { 12944 return &vl, true 12945} 12946 12947// AsBasicVideoLayer is the BasicLayer implementation for VideoLayer. 12948func (vl VideoLayer) AsBasicVideoLayer() (BasicVideoLayer, bool) { 12949 return &vl, true 12950} 12951 12952// AsH264Layer is the BasicLayer implementation for VideoLayer. 12953func (vl VideoLayer) AsH264Layer() (*H264Layer, bool) { 12954 return nil, false 12955} 12956 12957// AsJpgLayer is the BasicLayer implementation for VideoLayer. 12958func (vl VideoLayer) AsJpgLayer() (*JpgLayer, bool) { 12959 return nil, false 12960} 12961 12962// AsPngLayer is the BasicLayer implementation for VideoLayer. 12963func (vl VideoLayer) AsPngLayer() (*PngLayer, bool) { 12964 return nil, false 12965} 12966 12967// AsLayer is the BasicLayer implementation for VideoLayer. 12968func (vl VideoLayer) AsLayer() (*Layer, bool) { 12969 return nil, false 12970} 12971 12972// AsBasicLayer is the BasicLayer implementation for VideoLayer. 12973func (vl VideoLayer) AsBasicLayer() (BasicLayer, bool) { 12974 return &vl, true 12975} 12976 12977// VideoOverlay describes the properties of a video overlay. 12978type VideoOverlay struct { 12979 // Position - The location in the input video where the overlay is applied. 12980 Position *Rectangle `json:"position,omitempty"` 12981 // 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. 12982 Opacity *float64 `json:"opacity,omitempty"` 12983 // CropRectangle - An optional rectangular window used to crop the overlay image or video. 12984 CropRectangle *Rectangle `json:"cropRectangle,omitempty"` 12985 // 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. 12986 InputLabel *string `json:"inputLabel,omitempty"` 12987 // 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. 12988 Start *string `json:"start,omitempty"` 12989 // 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. 12990 End *string `json:"end,omitempty"` 12991 // 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). 12992 FadeInDuration *string `json:"fadeInDuration,omitempty"` 12993 // 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). 12994 FadeOutDuration *string `json:"fadeOutDuration,omitempty"` 12995 // AudioGainLevel - The gain level of audio in the overlay. The value should be in the range [0, 1.0]. The default is 1.0. 12996 AudioGainLevel *float64 `json:"audioGainLevel,omitempty"` 12997 // OdataType - Possible values include: 'OdataTypeBasicOverlayOdataTypeOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaAudioOverlay', 'OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay' 12998 OdataType OdataTypeBasicOverlay `json:"@odata.type,omitempty"` 12999} 13000 13001// MarshalJSON is the custom marshaler for VideoOverlay. 13002func (vo VideoOverlay) MarshalJSON() ([]byte, error) { 13003 vo.OdataType = OdataTypeBasicOverlayOdataTypeMicrosoftMediaVideoOverlay 13004 objectMap := make(map[string]interface{}) 13005 if vo.Position != nil { 13006 objectMap["position"] = vo.Position 13007 } 13008 if vo.Opacity != nil { 13009 objectMap["opacity"] = vo.Opacity 13010 } 13011 if vo.CropRectangle != nil { 13012 objectMap["cropRectangle"] = vo.CropRectangle 13013 } 13014 if vo.InputLabel != nil { 13015 objectMap["inputLabel"] = vo.InputLabel 13016 } 13017 if vo.Start != nil { 13018 objectMap["start"] = vo.Start 13019 } 13020 if vo.End != nil { 13021 objectMap["end"] = vo.End 13022 } 13023 if vo.FadeInDuration != nil { 13024 objectMap["fadeInDuration"] = vo.FadeInDuration 13025 } 13026 if vo.FadeOutDuration != nil { 13027 objectMap["fadeOutDuration"] = vo.FadeOutDuration 13028 } 13029 if vo.AudioGainLevel != nil { 13030 objectMap["audioGainLevel"] = vo.AudioGainLevel 13031 } 13032 if vo.OdataType != "" { 13033 objectMap["@odata.type"] = vo.OdataType 13034 } 13035 return json.Marshal(objectMap) 13036} 13037 13038// AsAudioOverlay is the BasicOverlay implementation for VideoOverlay. 13039func (vo VideoOverlay) AsAudioOverlay() (*AudioOverlay, bool) { 13040 return nil, false 13041} 13042 13043// AsVideoOverlay is the BasicOverlay implementation for VideoOverlay. 13044func (vo VideoOverlay) AsVideoOverlay() (*VideoOverlay, bool) { 13045 return &vo, true 13046} 13047 13048// AsOverlay is the BasicOverlay implementation for VideoOverlay. 13049func (vo VideoOverlay) AsOverlay() (*Overlay, bool) { 13050 return nil, false 13051} 13052 13053// AsBasicOverlay is the BasicOverlay implementation for VideoOverlay. 13054func (vo VideoOverlay) AsBasicOverlay() (BasicOverlay, bool) { 13055 return &vo, true 13056} 13057 13058// BasicVideoTrackDescriptor a TrackSelection to select video tracks. 13059type BasicVideoTrackDescriptor interface { 13060 AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) 13061 AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) 13062 AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) 13063} 13064 13065// VideoTrackDescriptor a TrackSelection to select video tracks. 13066type VideoTrackDescriptor struct { 13067 // OdataType - Possible values include: 'OdataTypeBasicTrackDescriptorOdataTypeTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaAudioTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectAudioTrackByID', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute', 'OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID' 13068 OdataType OdataTypeBasicTrackDescriptor `json:"@odata.type,omitempty"` 13069} 13070 13071func unmarshalBasicVideoTrackDescriptor(body []byte) (BasicVideoTrackDescriptor, error) { 13072 var m map[string]interface{} 13073 err := json.Unmarshal(body, &m) 13074 if err != nil { 13075 return nil, err 13076 } 13077 13078 switch m["@odata.type"] { 13079 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByAttribute): 13080 var svtba SelectVideoTrackByAttribute 13081 err := json.Unmarshal(body, &svtba) 13082 return svtba, err 13083 case string(OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaSelectVideoTrackByID): 13084 var svtbi SelectVideoTrackByID 13085 err := json.Unmarshal(body, &svtbi) 13086 return svtbi, err 13087 default: 13088 var vtd VideoTrackDescriptor 13089 err := json.Unmarshal(body, &vtd) 13090 return vtd, err 13091 } 13092} 13093func unmarshalBasicVideoTrackDescriptorArray(body []byte) ([]BasicVideoTrackDescriptor, error) { 13094 var rawMessages []*json.RawMessage 13095 err := json.Unmarshal(body, &rawMessages) 13096 if err != nil { 13097 return nil, err 13098 } 13099 13100 vtdArray := make([]BasicVideoTrackDescriptor, len(rawMessages)) 13101 13102 for index, rawMessage := range rawMessages { 13103 vtd, err := unmarshalBasicVideoTrackDescriptor(*rawMessage) 13104 if err != nil { 13105 return nil, err 13106 } 13107 vtdArray[index] = vtd 13108 } 13109 return vtdArray, nil 13110} 13111 13112// MarshalJSON is the custom marshaler for VideoTrackDescriptor. 13113func (vtd VideoTrackDescriptor) MarshalJSON() ([]byte, error) { 13114 vtd.OdataType = OdataTypeBasicTrackDescriptorOdataTypeMicrosoftMediaVideoTrackDescriptor 13115 objectMap := make(map[string]interface{}) 13116 if vtd.OdataType != "" { 13117 objectMap["@odata.type"] = vtd.OdataType 13118 } 13119 return json.Marshal(objectMap) 13120} 13121 13122// AsAudioTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13123func (vtd VideoTrackDescriptor) AsAudioTrackDescriptor() (*AudioTrackDescriptor, bool) { 13124 return nil, false 13125} 13126 13127// AsBasicAudioTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13128func (vtd VideoTrackDescriptor) AsBasicAudioTrackDescriptor() (BasicAudioTrackDescriptor, bool) { 13129 return nil, false 13130} 13131 13132// AsSelectAudioTrackByAttribute is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13133func (vtd VideoTrackDescriptor) AsSelectAudioTrackByAttribute() (*SelectAudioTrackByAttribute, bool) { 13134 return nil, false 13135} 13136 13137// AsSelectAudioTrackByID is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13138func (vtd VideoTrackDescriptor) AsSelectAudioTrackByID() (*SelectAudioTrackByID, bool) { 13139 return nil, false 13140} 13141 13142// AsVideoTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13143func (vtd VideoTrackDescriptor) AsVideoTrackDescriptor() (*VideoTrackDescriptor, bool) { 13144 return &vtd, true 13145} 13146 13147// AsBasicVideoTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13148func (vtd VideoTrackDescriptor) AsBasicVideoTrackDescriptor() (BasicVideoTrackDescriptor, bool) { 13149 return &vtd, true 13150} 13151 13152// AsSelectVideoTrackByAttribute is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13153func (vtd VideoTrackDescriptor) AsSelectVideoTrackByAttribute() (*SelectVideoTrackByAttribute, bool) { 13154 return nil, false 13155} 13156 13157// AsSelectVideoTrackByID is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13158func (vtd VideoTrackDescriptor) AsSelectVideoTrackByID() (*SelectVideoTrackByID, bool) { 13159 return nil, false 13160} 13161 13162// AsTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13163func (vtd VideoTrackDescriptor) AsTrackDescriptor() (*TrackDescriptor, bool) { 13164 return nil, false 13165} 13166 13167// AsBasicTrackDescriptor is the BasicTrackDescriptor implementation for VideoTrackDescriptor. 13168func (vtd VideoTrackDescriptor) AsBasicTrackDescriptor() (BasicTrackDescriptor, bool) { 13169 return &vtd, true 13170} 13171