Side-by-Side / Double Box — Creative Specs

Layout overview

StreamLayer's Double Box unit is a CTV/web/mobile interactive ad surface that uses a squeezeback model:

  • Left box: the publisher's live video, squeezed in place during the ad opportunity. No asset required from the demand partner — this is the publisher's broadcast.
  • Right box: the ad creative — video or static image, supplied by the demand partner.
  • Backdrop: a full-bleed background image (landscape + portrait variants).
  • Header: brand logo + title text.
  • Footer: description + CTA button.

The end user is never blocked from the underlying broadcast — they continue watching while the ad is on screen.

┌───────────────────────────────────────────────────────────────┐
│                        [Header Logo]                          │
│                            Title                              │
│  ┌─────────────────────────┐  ┌─────────────────────────┐     │
│  │                         │  │                         │     │
│  │   Publisher live video  │  │     Ad creative         │     │
│  │     (squeezed)          │  │     (Media — 16:9)      │     │
│  │                         │  │                         │     │
│  └─────────────────────────┘  └─────────────────────────┘     │
│  Description                              [ CTA Button ]     │
│                                                               │
│                    (Background image fills behind)            │
└───────────────────────────────────────────────────────────────┘

Asset checklist

#AssetRequiredFormatDimensions
1Square LogoYesPNG or JPG (1:1)140 × 140 px
2Full Transparent LogoYesTransparent PNGHeight 140 px, proportional width
3Main Media (right box)YesPNG or MP41920 × 1080 px (16:9)
4Background — LandscapeYesPNG2560 × 1440 px (16:9)
5Background — PortraitYesPNG1000 × 1500 px (2:3)
6Advertiser NameYesText≤ 30 chars
7Ad NameYesText≤ 30 chars
8TitleYesText≤ 30 chars
9DescriptionYesText≤ 80 chars
10CTA Button textYesText≤ 25 chars
11CTA destination URLYesURLStandard click-through

Brand logos

Square Logo

  • Purpose: Used in StreamLayer Studio / ad management lists. Not visible to end users in the rendered ad.
  • Format: PNG or JPG
  • Aspect ratio: 1:1 (square)
  • Recommended dimensions: 140 × 140 px

Full Transparent Logo

  • Purpose: Rendered inside the ad as the header logo at the top of the unit. Visible to end users.
  • Format: Transparent PNG
  • Recommended height: 140 px (width scales proportionally)
  • Notes: The logo must be legible on a dark backdrop. Avoid hard edges and rely on transparency.

Main Media (right box — ad creative)

PropertyValue
FormatPNG (static image) or MP4 (video)
Aspect ratio16:9 (cropped if not exact)
Recommended dimensions1920 × 1080 px
Video playbackAuto-plays on render
AudioMuted by default (TBD — pending confirmation)
Duration (video)6–30s recommended for CTV

Codec / bitrate guidance for MP4:

  • Codec: H.264 (baseline or main profile)
  • Bitrate: 2–5 Mbps for 1080p
  • Frame rate: 24, 25, or 30 fps
  • Audio: AAC, 128 kbps stereo (if any)

Background images

The background fills the entire unit behind both boxes. Two variants are required to support both orientations.

Landscape (CTV / tvOS / Android TV / landscape web)

  • Format: PNG
  • Recommended dimensions: 2560 × 1440 px (16:9)
  • Notes: Keep brand-critical elements away from the center, since the two media boxes overlap that area. Brand fades, gradients, or subtle textures work best.

Portrait (mobile portrait)

  • Format: PNG
  • Recommended dimensions: 1000 × 1500 px (2:3)

Text fields

FieldMax charactersWhere it renders
Advertiser Name30Brand attribution metadata
Ad Name30Internal campaign identifier (not visible to end users)
Title30Headline above the two media boxes
Description80Sub-text under the media
CTA Button25Action button label (e.g. "Learn More", "Shop Now")

Truncation: Strings exceeding the limit are truncated client-side. Pre-truncate at the source.


Behavior controls (configured on the StreamLayer side — informational only)

These don't require creative assets from the demand partner. They're listed here so designers understand the unit's runtime behavior.

ControlOptions
Close TimerNo Timer / 5s / 10s / 15s / 30s / 60s
CTA Button TypeBasic (URL click-through) / Add to Wallet / Return to Video / Send to User (QR code) / No Button

Sample VAST response

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.2" xmlns="http://www.iab.com/VAST">
  <Ad id="ad-12345" sequence="1">
    <InLine>

      <AdSystem version="1.0">ExampleDSP</AdSystem>
      <AdTitle><![CDATA[Discover the Collection]]></AdTitle>
      <Description><![CDATA[New season. Now available.]]></Description>
      <Advertiser><![CDATA[Example Brand]]></Advertiser>
      <Pricing model="CPM" currency="USD">25.00</Pricing>

      <Impression id="imp-1"><![CDATA[https://impressions.example-dsp.com/imp?id=12345&cb=[CACHEBUSTING]]]></Impression>

      <Creatives>
        <Creative id="creative-1" sequence="1">
          <Linear>
            <Duration>00:00:15</Duration>

            <TrackingEvents>
              <Tracking event="start"><![CDATA[https://t.example-dsp.com/start?id=12345]]></Tracking>
              <Tracking event="firstQuartile"><![CDATA[https://t.example-dsp.com/q1?id=12345]]></Tracking>
              <Tracking event="midpoint"><![CDATA[https://t.example-dsp.com/mid?id=12345]]></Tracking>
              <Tracking event="thirdQuartile"><![CDATA[https://t.example-dsp.com/q3?id=12345]]></Tracking>
              <Tracking event="complete"><![CDATA[https://t.example-dsp.com/complete?id=12345]]></Tracking>
              <Tracking event="mute"><![CDATA[https://t.example-dsp.com/mute?id=12345]]></Tracking>
              <Tracking event="unmute"><![CDATA[https://t.example-dsp.com/unmute?id=12345]]></Tracking>
            </TrackingEvents>

            <VideoClicks>
              <ClickThrough id="ct-1"><![CDATA[https://example-brand.com/spring-collection]]></ClickThrough>
              <ClickTracking id="clk-1"><![CDATA[https://t.example-dsp.com/click?id=12345]]></ClickTracking>
            </VideoClicks>

            <MediaFiles>
              <MediaFile id="hd"
                         delivery="progressive"
                         type="video/mp4"
                         width="1920" height="1080"
                         bitrate="3500"
                         codec="avc1.4d401f">
                <![CDATA[https://cdn.example-dsp.com/creatives/12345/1080p.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>

      <Extensions>
        <Extension type="streamlayer/double-box/v1">
          <DoubleBox>
            <AdName><![CDATA[Spring 2026 — Double Box]]></AdName>

            <Backgrounds>
              <Background orientation="landscape" width="2560" height="1440" type="image/png">
                <Url><![CDATA[https://cdn.example-dsp.com/creatives/12345/bg-landscape.png]]></Url>
              </Background>
              <Background orientation="portrait" width="1000" height="1500" type="image/png">
                <Url><![CDATA[https://cdn.example-dsp.com/creatives/12345/bg-portrait.png]]></Url>
              </Background>
            </Backgrounds>

            <Logos>
              <Logo role="header" width="140" height="140" type="image/png">
                <Url><![CDATA[https://cdn.example-dsp.com/brand/logo-transparent.png]]></Url>
              </Logo>
              <Logo role="square" width="140" height="140" type="image/png">
                <Url><![CDATA[https://cdn.example-dsp.com/brand/logo-square-140.png]]></Url>
              </Logo>
            </Logos>

            <CTA>
              <Label><![CDATA[Shop Now]]></Label>
              <Type>basic</Type>
            </CTA>
          </DoubleBox>
        </Extension>
      </Extensions>

    </InLine>
  </Ad>
</VAST>

Notes:

  • Standard VAST 4.2. Video, impression, tracking, and click-through all live in spec nodes. Nothing custom inside <Linear>.
  • All StreamLayer-specific fields go in a single <Extension type="streamlayer/double-box/v1">. The type attribute versions the contract.
  • Dimensions are attributes (width / height) on the element, not nested.
  • Enums:
    • Background.orientation: landscape | portrait
    • Logo.role: header | square
    • CTA.Type: basic | add_to_wallet | return_to_video | send_to_user | none
  • The type (MIME) attribute on backgrounds and logos is optional but recommended for pre-validation.
  • Do not put video, tracking, impression, or click-through inside the Extension — they belong in the standard nodes.
  • Macros substituted in URLs: [CACHEBUSTING], [TIMESTAMP], [CONTENTPLAYHEAD].
  • Character limits: AdTitle ≤ 30, Description ≤ 80, Advertiser ≤ 30, AdName ≤ 30, CTA.Label ≤ 25.
  • VAST wrappers (VASTAdTagURI) are supported (rolling out). Please fire <Error> pixels per-layer on failure, per spec.