This repository has been archived by the owner on Oct 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 61
/
audio.go
266 lines (238 loc) · 7.9 KB
/
audio.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
package openrtb2
import (
"encoding/json"
"github.com/mxmCherry/openrtb/v17/adcom1"
)
// 3.2.8 Object: Audio
//
// This object represents an audio type impression.
// Many of the fields are non-essential for minimally viable transactions, but are included to offer fine control when needed.
// Audio in OpenRTB generally assumes compliance with the DAAST standard.
// As such, the notion of companion ads is supported by optionally including an array of Banner objects (refer to the Banner object in Section 3.2.6) that define these companion ads.
//
// The presence of a Audio as a subordinate of the Imp object indicates that this impression is offered as an audio type impression.
// At the publisher’s discretion, that same impression may also be offered as banner, video, and/or native by also including as Imp subordinates objects of those types.
// However, any given bid for the impression must conform to one of the offered types.
type Audio struct {
// Attribute:
// mimes
// Type:
// string array; required
// Description:
// Content MIME types supported (e.g., “audio/mp4”).
MIMEs []string `json:"mimes"`
// Attribute:
// minduration
// Type:
// integer; default 0; recommended
// Description:
// Minimum audio ad duration in seconds.
MinDuration int64 `json:"minduration,omitempty"`
// Attribute:
// maxduration
// Type:
// integer; recommended
// Description:
// Maximum audio ad duration in seconds.
MaxDuration int64 `json:"maxduration,omitempty"`
// Attribute:
// poddur
// Type:
// integer; recommended
// Description:
// Indicates the total amount of time that advertisers may fill for a
// "dynamic" audio ad pod, or the dynamic portion of a "hybrid"
// ad pod. This field is required only for the dynamic portion(s) of
// audio ad pods. This field refers to the length of the entire ad
// break, whereas minduration/maxduration/rqddurs are
// constraints relating to the slots that make up the pod.
PodDur int64 `json:"poddur,omitempty"`
// Attribute:
// protocols
// Type:
// integer array; recommended
// Description:
// Array of supported audio protocols. Refer to List: Creative
// Subtypes - Audio/Video in AdCOM 1.0.
// Note:
// OpenRTB <=2.5 defined only protocols 1..10.
Protocols []adcom1.MediaCreativeSubtype `json:"protocols,omitempty"`
// Attribute:
// startdelay
// Type:
// integer; recommended
// Description:
// Indicates the start delay in seconds for pre-roll, mid-roll, or
// post-roll ad placements. Refer to List: Start Delay Modes in
// AdCOM 1.0.
StartDelay *adcom1.StartDelay `json:"startdelay,omitempty"`
// Attribute:
// rqddurs
// Type:
// integer array
// Description:
// Precise acceptable durations for audio creatives in seconds. This
// field specifically targets the live audio/radio use case where
// non-exact ad durations would result in undesirable ‘dead air’.
// This field is mutually exclusive with minduration and
// maxduration; if rqddurs is specified, minduration and
// maxduration must not be specified and vice versa.
RqdDurs []int64 `json:"rqddurs,omitempty"`
// Attribute:
// podid
// Type:
// integer
// Description:
// Unique identifier indicating that an impression opportunity
// belongs to an audioad pod. If multiple impression opportunities
// within a bid request share the same podid, this indicates that
// those impression opportunities belong to the same audio ad
// pod.
PodID int64 `json:"podid,omitempty"`
// Attribute:
// podid
// Type:
// integer; default 0
// Description:
// The sequence (position) of the audio ad pod within a
// content stream. Refer to List: Pod Sequence in AdCOM 1.0
// for guidance on the use of this field.
PodSeq adcom1.PodSequence `json:"podseq,omitempty"`
// Attribute:
// sequence
// Type:
// integer; default 0; DEPRECATED
// Description:
// If multiple ad impressions are offered in the same bid request,
// the sequence number will allow for the coordinated delivery
// of multiple creatives.
Sequence int64 `json:"sequence,omitempty"`
// Attribute:
// slotinpod
// Type:
// integer; default 0
// Description:
// For audio ad pods, this value indicates that the seller can
// guarantee delivery against the indicated sequence. Refer to
// List: Slot Position in Pod in AdCOM 1.0 for guidance on the
// use of this field.
SlotInPod adcom1.SlotPositionInPod `json:"slotinpod,omitempty"`
// Attribute:
// mincpmpersec
// Type:
// float
// Description:
// Minimum CPM per second. This is a price floor for the
// "dynamic" portion of an audio ad pod, relative to the duration
// of bids an advertiser may submit.
MinCPMPerSec float64 `json:"mincpmpersec,omitempty"`
// Attribute:
// battr
// Type:
// integer array
// Description:
// Blocked creative attributes. Refer to List: Creative Attributes in
// AdCOM 1.0.
// Note:
// OpenRTB <=2.5 defined only attributes with IDs 1..17.
BAttr []adcom1.CreativeAttribute `json:"battr,omitempty"`
// Attribute:
// maxextended
// Type:
// integer
// Description:
// Maximum extended ad duration if extension is allowed. If
// blank or 0, extension is not allowed. If -1, extension is
// allowed, and there is no time limit imposed. If greater than 0,
// then the value represents the number of seconds of extended
// play supported beyond the maxduration value.
MaxExtended int64 `json:"maxextended,omitempty"`
// Attribute:
// minbitrate
// Type:
// integer
// Description:
// Minimum bit rate in Kbps.
MinBitrate int64 `json:"minbitrate,omitempty"`
// Attribute:
// maxbitrate
// Type:
// integer
// Description:
// Maximum bit rate in Kbps.
MaxBitrate int64 `json:"maxbitrate,omitempty"`
// Attribute:
// delivery
// Type:
// integer array
// Description:
// Supported delivery methods (e.g., streaming, progressive). If
// none specified, assume all are supported. Refer to List: Delivery
// Methods in AdCOM 1.0.
Delivery []adcom1.DeliveryMethod `json:"delivery,omitempty"`
// Attribute:
// companionad
// Type:
// object array
// Description:
// Array of Banner objects (Section 3.2.6) if companion ads are
// available.
CompanionAd []Banner `json:"companionad,omitempty"`
// Attribute:
// api
// Type:
// integer array
// Description:
// List of supported API frameworks for this impression. Refer to
// List: API Frameworks in AdCOM 1.0. If an API is not explicitly
// listed, it is assumed not to be supported.
// Note:
// OpenRTB <=2.5 defined only frameworks 1..6.
API []adcom1.APIFramework `json:"api,omitempty"`
// Attribute:
// companiontype
// Type:
// integer array
// Description:
// Supported companion ad types. Refer to List: Companion
// Types in AdCOM 1.0. Recommended if companion Banner
// objects are included via the companionad array.
CompanionType []adcom1.CompanionType `json:"companiontype,omitempty"`
// Attribute:
// maxseq
// Type:
// integer
// Description:
// The maximum number of ads that can be played in an ad pod.
MaxSeq int64 `json:"maxseq,omitempty"`
// Attribute:
// feed
// Type:
// integer
// Description:
// Type of audio feed. Refer to List: Feed Types in AdCOM 1.0.
Feed adcom1.FeedType `json:"feed,omitempty"`
// Attribute:
// stitched
// Type:
// integer
// Description:
// Indicates if the ad is stitched with audio content or delivered
// independently, where 0 = no, 1 = yes.
Stitched int8 `json:"stitched,omitempty"`
// Attribute:
// nvol
// Type:
// integer
// Description:
// Volume normalization mode. Refer to List: Volume
// Normalization Modes in AdCOM 1.0.
NVol *adcom1.VolumeNormalizationMode `json:"nvol,omitempty"`
// Attribute:
// ext
// Type:
// object
// Description:
// Placeholder for exchange-specific extensions to OpenRTB.
Ext json.RawMessage `json:"ext,omitempty"`
}