<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.3 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4175 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4175.xml">
<!ENTITY SELF "[RFCXXXX]">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-weaver-pef-00" category="std">

  <front>
    <title abbrev="PEF-Format">Packetised Essence Format for Uncompressed Video</title>

    <author initials="J." surname="Weaver" fullname="James P. Weaver">
      <organization>BBC R&amp;D</organization>
      <address>
        <postal>
          <street>Floor 5</street> <street>Dock House</street> <street>MediaCity UK</street>
          <city>Salford</city>
          <code>M50 2LH</code>
          <country>United Kingdom</country>
        </postal>
        <email>james.barrett@bbc.co.uk</email>
      </address>
    </author>

    <date year="2021"/>

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This memo specifies a new proposed packing format for Uncompressed video data at a variety of bit-depths and with a variety of different component structures.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This memo specifies a format for packing uncompressed video of a variety of formats into an easily processed format for software. It is compatible with video of a variety of bit-depths, colour subsampling formats, picture resolutions, frame rates, scan-modes, and number of components.</t>

<section anchor="terminology" title="Terminology">

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 <xref target=" RFC2119 "/>.</t>

</section>
</section>
<section anchor="video-data-formats-an-overview" title="Video Data Formats, an Overview">

<t>For purposes of this recommendation a video format is defined by a number of parameters:</t>

<t><list style="symbols">
  <t>The components of the video. See the fuller discussion below for what this means in general.</t>
  <t>The number of samples across a line of video, which may vary for different components (for example for video with a colour subsampling other than 4:4:4).</t>
  <t>The number of lines in a frame of video, which may vary for different components.</t>
  <t>The bit-depth of the samples. Currently supported bit-depths are 1, 2, 4, 8, 9, 10, 12, 14, and 16. This can also vary for different components. For example an Alpha channel or a depth map may use a lower bit depth than the main luma channel</t>
  <t>The frame-rate of the video.</t>
</list></t>

<t>For the purposes of this format we support an arbitrary number of video components. A video component is a plane of samples for the video which is in some way independent of other samples outside of that plane. For progressively scanned monochrome video there is only one component, which is the video data's brightness (luma) values. For monochrome video with an interlaced scan mode, on the other hand, there are two components per frame: the luma of the first field and the luma of the second field. For colour video there are generally three components per field, either Luma, and two colour-difference signals (Y,Cb,Cr) or three colour channels (R,G,B). In this case for progressively scanned video there will be three components, eg. Y, Cb, and Cr, and for video which is interlaced there would be six, for example Field 1 Y, Field 1 Cb, Field 1 Cr, Field 2 Y, Field 2 Cb, and Field 2 Cr. Other video formats may have different numbers or arangements of components: for example a stereoscopic, interlaced, video stream making use of three colour channels and an alpha channel might have sixteen components: Left Field 1 Y, Left Field 1 Cb, Left Field 1 Cr, Left Field 1 A, Right Field 1 Y, Right Field 1 Cb, Right Field 1 Cr, Right Field 1 A, Left Field 2 Y, Left Field 2 Cb, Left Field 2 Cr, Left Field 2 A, Right Field 2 Y, Right Field 2 Cb, Right Field 2 Cr, and Right Field 2 A. Future video formats may contain additional components which have yet to considered, but should still be compatible with this format.</t>

<t>There are a plethora of existing video formats which arrange the video in a variety of ways. Some formats are "interleaved" -- ie. they arrange samples from different components one after another in order. Other formats are "planar" -- they arrange the data so that all the samples for one component for a frame or field are placed together and followed by all the samples for another component for the same frame or field. In addition the arrangement of the data samples themselves within memory is also variable: some formats are called "packed" -- meaning that samples with a bit-depth which is not a power of two are placed within memory in a bit-contiguous fashion regardless of octet boundaries; others are "padded", meaning that samples are placed in the low-order bits of a larger octet-aligned container; Finally there are formats which both pad and pack the samples, the most well-known being V210, a format which places three 10-bit samples into the least significant bits of a 32-bit word, but ignores the value of the top two bits.</t>

<t>The advantage of "packed" formats is that they make use of all the bits available for storing video data, thus making them more space efficient in storage or more bandwidth efficient when used on a network. The disadvantage is that they are complicated to deal with in software, since computer architectures are generally optimised to process multiples of 8, 16, 32, or 64 bits.</t>

<t>The format recommended here uses a different approach. Rather than storing data samples interleaved or in a planar structure this format arranges them into "blocks" of samples, which are then stored in a planar fashion. The size of these "blocks" of samples can be selected so as to correspond to the block sizes used in various video compression and video processing techniques, allowing a more natural processing when using these techniques, or can be adjusted to provide a lower latency as required by the specific application in use.</t>

<t>Rather than traditional packing or padding this format proposes the storage of the bits in the samples in a non-contiguous structure, allowing for 100% utilisation of the available bits, like a packed format, but with all data aligned conveniently on power-of-two boundaries as found in a padded format.</t>

<figure title="Examples of packing formats" anchor="examples-of-packing-formats"><artwork><![CDATA[
Packed 10-bit:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Sample 3      |     Sample 2      |     Sample 1      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 7      |     Sample 6      |     Sample 5      |     Sample 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
mple 10     |     Sample 9      |     Sample 8      |     Sample
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  Sample 13     |     Sample 12     |     Sample 11     |     Sam
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Sample 16     |     Sample 15     |     Sample 14     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Padded 10-bit in 16-bit:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X|     Sample 1      |X X X X X X|     Sample 2      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X|     Sample 3      |X X X X X X|     Sample 4      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X|     Sample 5      |X X X X X X|     Sample 6      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


V210 Format (a hybrid of packing and padding):

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X|     Sample 3      |     Sample 2      |     Sample 1      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X|     Sample 6      |     Sample 5      |     Sample 4      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X|     Sample 9      |     Sample 8      |     Sample 7      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="the-proposed-format-in-detail" title="The Proposed Format in Detail">

<t>When making use of this format a number of parameters must be set. These will be introduced in the text below as they are explained. For the purposes of this format the components of the video are treated separately. Some parameters must be the same for all components, but others may vary, and this will be noted below. Fundamentally this format involves breaking the video samples in a component for a specific frame into "blocks", which is to say two dimensional groupings of samples which form a rectangular shape in the active part of the frame.</t>

<t><list style="hanging">
  <t hangText="Bit Depth (D):">
  This is the number of bits used in each sample. In principle this may vary by component, but in general it will usually be the same for all components. Currently supported bit-depths are: 1, 2, 4, 8, 9, 10, 12, 14, and 16.</t>
  <t hangText="Block Height (BH) and Block Width (BW):">
  These are integer values which give a number of samples of height and width for each block. There is no requirement for all components to use the same values for these, but there are restrictions on the valid choices of BH and BW.</t>
</list></t>

<figure title="Example of Blocks (X marks one 8x8 block, Y another, Z a third)" anchor="example-of-blocks"><artwork><![CDATA[
   0                   1
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
00 X X X X X X X X Y Y Y Y Y Y Y Y
 1 X X X X X X X X Y Y Y Y Y Y Y Y
 2 X X X X X X X X Y Y Y Y Y Y Y Y
 3 X X X X X X X X Y Y Y Y Y Y Y Y
 4 X X X X X X X X Y Y Y Y Y Y Y Y
 5 X X X X X X X X Y Y Y Y Y Y Y Y
 6 X X X X X X X X Y Y Y Y Y Y Y Y
 7 X X X X X X X X Y Y Y Y Y Y Y Y
 8 Z Z Z Z Z Z Z Z
 9 Z Z Z Z Z Z Z Z
10 Z Z Z Z Z Z Z Z
 1 Z Z Z Z Z Z Z Z
 2 Z Z Z Z Z Z Z Z
 3 Z Z Z Z Z Z Z Z
 4 Z Z Z Z Z Z Z Z
 5 Z Z Z Z Z Z Z Z
 6
 7
 8
 9
]]></artwork></figure>

<texttable>
      <ttcol align='left'>D</ttcol>
      <ttcol align='left'>Restriction on BH and BW</ttcol>
      <c>1</c>
      <c>BW x BH MUST be a multiple of 8</c>
      <c>2</c>
      <c>BW x BH MUST be a multiple of 4</c>
      <c>4</c>
      <c>BW x BH MUST be a multiple of 2</c>
      <c>8</c>
      <c>No restriction</c>
      <c>9</c>
      <c>BW x BH MUST be a multiple of 128</c>
      <c>10</c>
      <c>BW x BH MUST be a multiple of 64</c>
      <c>12</c>
      <c>BW x BH MUST be a multiple of 32</c>
      <c>14</c>
      <c>BW x BH MUST be a multiple of 64</c>
      <c>16</c>
      <c>No restriction</c>
</texttable>

<t>Each frame of video MUST be represented by one stream of octets per component. The ordering of the components is a parameter of the video format itself. So a frame of YCbCr video will consist of a stream of luma, followed by two streams of chroma differences, whilst a frame of RGBA video will consist of a stream of Red, one of Green, one of Blue, and one of Alpha.</t>

<t>Each stream is assembled starting by taking the blocks for that component in that frame in raster-scan order. If the width of a block is not a divisor of the number of samples across an active line of video for that component, or if the height is not a divisor of the height of the active video for that component then the data MUST be padded with additional samples to fill the block size. The choice of values for padding is not specified, and MAY be any value desired. Mirroring, edge-extending, padding with black, and padding with mid- grey are all possible options.</t>

<t>Each block of samples is converted into a stream of octets as follows:</t>

<t><list style="symbols">
  <t>If D=1 simply pack the values of the samples in raster scan order as 1-bit values into octets. Each block will thus be represented by BW x BH / 8 octets.</t>
  <t>If D=2 simply pack the values of the samples in raster scan order as 2-bit values into octets. Each block will thus be represented by BW x BH / 4 octets.</t>
  <t>If D=4 simply pack the values of the samples in raster scan order as 4-bit values into octets. Each block will thus be represented by BW x BH / 2 octets.</t>
  <t>If D=8 simply use the values of the samples in raster-scan order with each sample value occupying one octet. Each block will thus be represented by BH x BW octets.</t>
  <t>If D=9 pack the least significant bit of each sample in raster scan order into the first BH x BW x 0.125 octets, then use the most significant 8 bits of each sample in the same order as the values of the next BH x BW octets. Each block will thus be represented by BH x BW x 1.125 octets. This arrangement, together with the restrictions on the choice of BH and BW ensures that the number of octets used to store the least significant bits will always be a multiple of 16.</t>
  <t>If D=10 pack the least significant 2 bits of each sample in raster scan order into the first BH x BW x 0.25 octets, then use the most significant 8 bits of each sample in the same order as the values of the next BH x BW octets. Each block will thus be represented by BH x BW x 1.25 octets. This arrangement, together with the restrictions on the choice of BH and BW ensures that the number of octets used to store the least significant bits will always be a multiple of 16.</t>
  <t>If D=12 pack the least significant 4 bits of each sample in raster scan order into the first BH x BW x 0.5 octets, then use the most significant 8 bits of each sample in the same order as the values of the next BH x BW octets. Each block will thus be represented by BH x BW x 1.5 octets. This arrangement, together with the restrictions on the choice of BH and BW ensures that the number of octets used to store the least significant bits will always be a multiple of 16.</t>
  <t>If D=14 pack the least significant 2 bits of each sample in raster scan order into the first BH x BW x 0.25 octets, then pack the next least significant 4 bits of each sample in the same order into the next BH x BW x 0.5 octets, then use the most significant 8 bits of each sample in the same order as the values of the next BH x BW octets. Each block will thus be represented by BH x BW x 1.75 octets. This arrangement, together with the restrictions on the choice of BH and BW ensures that the number of octets used to store the least significant bits will always be a multiple of 16, as will the number of octets used to store the next least significant bits of each sample.</t>
  <t>If D=16 use the values of the samples in raster-scan order with each sample value occupying two octets in network octet order. Each block will thus be represented by BH x BW x 2 octets.</t>
</list></t>

<t>As an example of how the data is structured refer to <xref target=" arrange-8-8-10 "/>, which provides an example of a 64-sample block (such as an 8x8 block). The initial section consist of 16 octets containing packed 2-bit values each containing bits 8 and 9 of each sample, whilst the remaining 64 octets contain 8-bit values containing bits 0 to 7 of each sample.</t>

<t>The more complex 14-bit packing is shown in <xref target=" arrange-8-8-14 "/>. In this case the first 16 octets contain packed 2-bit values containing bits 12 and 13 of each sample, the next 32 octets contain packed 4-bit values containing bits 8-11 of each sample, and the remaining 64- octets contain 8-bit values consisting of bits 0 to 7 of each sample.</t>

<t>Following these rules each component of a frame of 1920 x 1080 10- bit progressive video with a block shape of 8x8 for all components will contain 32400 blocks, each represented by 80 octets broken into a 16-octet first part containing the least significant 2 bits of each sample and a 64-octet second part. In this fashion this packing format is bit-rate efficient, making full use of all available bits.</t>

<figure title="Arrangement of Data for an 8x8 block when D=10" anchor="arrange-8-8-10"><artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
L+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
S| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |10 |11 |12 |13 |14 |15 |16 |
B+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
s|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 |
M+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
S|  Sample 1     |  Sample 2     |  Sample 3     |  Sample 4     |
B+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
s|  Sample 5     |  Sample 6     |  Sample 7     |  Sample 8     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                ...
 |  Sample 61    |  Sample 62    |  Sample 63    |  Sample 64    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure title="Arrangement of Data for an 8x8 block when D=14" anchor="arrange-8-8-14"><artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
L+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
S| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |10 |11 |12 |13 |14 |15 |16 |
B+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
s|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 |
M+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
i|   1   |   2   |   3   |   4   |   5   |   6   |   7   |   8   |
d+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
d|   9   |  10   |  11   |  12   |  13   |  14   |  15   |  16   |
l+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
e                               ...
 |  57   |  58   |  59   |  60   |  61   |  62   |  63   |  64   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
M|  Sample 1     |  Sample 2     |  Sample 3     |  Sample 4     |
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
B|  Sample 5     |  Sample 6     |  Sample 7     |  Sample 8     |
s+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                ...
 |  Sample 61    |  Sample 62    |  Sample 63    |  Sample 64    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>A blocking format for uncompressed video does not in of itself have any particular security implications, but also does not provide any additional security. If the content is sensitive then some other mechanism needs to be used to keep it secure.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This format would require a mime type and associated RTP payload type to be registered.</t>

<section anchor="proposed-mime-type-registration" title="Proposed MIME Type Registration">

<t><list style="hanging">
  <t hangText="Type name:">
  video</t>
  <t hangText="Subtype name:">
  pef</t>
  <t hangText="Required parameters:">
        <list style="hanging">
        <t hangText="sampling:">
        Determines the color (sub-)sampling mode of the video stream. Currently defined values are:

            <list style="hanging">
              <t hangText="Monochrome:">
              (in which case for progressive scan the only component is component 0),</t>
              <t hangText="RGB:">
              (in which case for progressive scan component 0 is R, component 1 is G, and component 2 is B),</t>
              <t hangText="RGBA:">
              (in which case for progressive scan component 0 is R, component 1 is G, component 2 is B, and component 3 is A),</t>
              <t hangText="BGR:">
              (in which case for progressive scan component 0 is B,component 1 is G, and component 2 is R),</t>
              <t hangText="BGRA:">
              (in which case for progressive scan component 0 is B, component 1 is G, component 2 is R, and component 3 is A),</t>
              <t hangText="YCbCr:">
              (in which case for progressive scan component 0 is Y, component 1 is Cb, and component 2 is Cr),</t>
            </list>

New values may be registered as needed.</t>
        <t hangText="width:">
        A comma separated list of values which determines the number of samples per line for each component. Each value is an integer.</t>
        <t hangText="height:">
        A comma separated list of values which determines the number of lines per frame for each component. Each value is an integer.</t>
        <t hangText="depth:">
        A comma separated list of values giving the number of bits per sample. Each value is an integer with currently permissible values of 1, 2, 4, 8, 9, 10, 12, 14, and 16.</t>
        <t hangText="colorimetry:">
        This parameter defines the set of colorimetric specifications and other transfer characteristics for the video source, by reference to an external specification. Valid values and their specification are:

            <list style="hanging">
              <t hangText="BT601-5:">
              ITU Recommendation BT.601-5</t>
              <t hangText="BT709-2:">
              ITU Recommendation BT.709-2</t>
              <t hangText="SMPTE240M:">
              SMPTE standard 240M</t>
            </list>
        </t>
        <t hangText="block-width:">
        A comma separated list of integers, each is the width of each block in samples for a specific component.</t>
        <t hangText="block-height:">
        A comma separated list of integers, each is the width of each block in samples for a specific component.</t>
      </list>
  </t>
  <t hangText="Optional parameters:">
        <list style="hanging">
        <t hangText="interlace:">
        If this OPTIONAL parameter is present, it indicates that the video stream is presented as interlaced. If absent, progressive scan is implied. If present then the number of components in the stream is double that found in a progressively scanned stream with the same sampling parameter.</t>
        <t hangText="stereo:">
        If this OPTIONAL parameter is present, it indicates that the video stream is presented as a stereo pair. If present then the number of components in the stream is double that found in a stream with the same sampling parameter.</t>
        <t hangText="chroma-position:">
        This OPTIONAL parameter defines the position of chrominance samples relative to luminance samples. It is either a single integer or a comma separated pair of integers. Integer values range from 0 to 8, as specified in Figures 6-8 of <xref target=" RFC4175 "/>. A single integer implies that Cb and Cr are co-sited. A comma separated pair of integers designates the locations of Cb samples, respectively. In its absence, a single value of assumed for color-subsampled video (chroma-position=0).</t>
        <t hangText="gamma:">
        An OPTIONAL floating point gamma correction value.</t>
      </list>
  </t>
  <t hangText="Encoding considerations:">
  framed</t>
  <t hangText="Security considerations:">
  This format contains no active content, and has no particular security considerations.</t>
  <t hangText="Interoperability considerations:">
  This format is an alternative form of raw uncompressed video distinct from and incompatible with video/raw.</t>
  <t hangText="Published specification:">
  This Document</t>
  <t hangText="Applications that use this media type:">
  Video communication.</t>
  <t hangText="Fragment identifier considerations:">
  N/A</t>
  <t hangText="Additional information:">
        <list style="hanging">
        <t hangText="File Name Extensions:">
        .pef</t>
      </list>
  </t>
  <t hangText="Person &amp; email address to contact for further information:">
  James P. Weaver &lt; james.barrett@bbc.co.uk &gt;</t>
  <t hangText="Intended usage:">
  COMMON</t>
  <t hangText="Restrictions on usage:">
  N/A</t>
  <t hangText="Author:">
  James P. Weaver</t>
  <t hangText="Change controller:">
  James P. Weaver</t>
  <t hangText="Provisional registration? (standards tree only):">
  YES</t>
</list></t>

</section>
</section>
<section anchor="unpacking-of-video-data-in-software-and-hardware" title="Unpacking of Video Data in Software and Hardware">

<t>The format here described has been designed with an eye to ease of unpacking in software and hardware. In the case of 8-bit video this format is very similar to the conventional 8-bit formats and so requires no additional processing. A traditional 10-bit format, however, either packs 10-bit samples in a way which overlaps octet boundaries or pads, and thereby doesn't make use of all bits. This format makes full use of all bits like a packed format, but maintains octet alignment.</t>

<t>For software processing purposes it is common to unpack 10-bit data so that each sample is stored in the lower 10-bits of a 16-bit word, essentially converting from a packed format to a padded one. To do this for the traditional packed 10-bit format is a complex operation involving a significant amount of masking and shifting and is not easily amendable to processing using the efficient 128-bit Single Instruction Multiple Data instructions implemented on many modern processors.</t>

<t>By comparison this new format is easily convertible to a padded format using SIMD instructions, with a general algorithm as described in the following. This algorithm has been kept general and does not refer to specific SIMD instructions since the likelihood is that instruction sets will change in the future.</t>

<t>The exact mechanism used for the decode will depend upon the size of the registers on which the SIMD instructions being used operate. For these examples I will explain with 4 octet registers, simply because it makes the diagrams more easily viewed.</t>

<t>Starting with an 80-octet stream containing the data representing a 64 sample block of 10-bit video data we begin by loading the first four octets of the block into a register:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |10 |11 |12 |13 |14 |15 |16 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>(The numbers in the centre of each two-bit space indicate the sample number from which that data originates)</t>

<t>Then using a masked move or shuffle we are able to "spread" this data out into the octets of two registers:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X X X| 1 | 2 | 3 | 4 |X X X X X X X X| 1 | 2 | 3 | 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X X X| 1 | 2 | 3 | 4 |X X X X X X X X| 1 | 2 | 3 | 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Then using a SIMD multiplication instruction which treats each 32-bit register as two 16-bit values we multiply each block up in order to align the required data at the top of the low order octet of each 16-bit sample:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X X X| 1 | 2 | 3 | 4 |X X X X X X| 1 | 2 | 3 | 4 |X X|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X| 1 | 2 | 3 | 4 |X X X X X X| 1 | 2 | 3 | 4 |X X X X X X|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Then the data from the first four octets of the second segment of the data stream (where the MSBs of the samples are stored) are loaded into a register</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sample 1 MSBs | Sample 2 MSBs | Sample 3 MSBs | Sample 4 MSBs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>and a shuffle and move or blanking and bitwise or is used to distribute these octets into the high order octets of each 16-bit word in the working registers.</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sample 1 MSBs | 1 | 2 | 3 | 4 | Sample 2 MSBs | 2 | 3 | 4 |X X|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sample 3 MSBs | 3 | 4 |X X X X| Sample 4 MSBs | 4 |X X X X X X|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Finally a SIMD shift is used to shift each 16-bit value down by 6 bits:</t>

<figure><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X| Sample 1 MSBs | 1 |X X X X X X| Sample 2 MSBs | 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|X X X X X X| Sample 3 MSBs | 3 |X X X X X X| Sample 4 MSBs | 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Completing the conversion of the first four samples of the block from this format to a padded 10-bit in 16-bit format more convenient for processing in software. The conversion can then be continued with samples 5,6,7, and 8.</t>

<t>A larger register length for the SIMD operations enables more samples to be decoded simultaneously. This algorithm has been used effectively with 128-bit (16 octet) registers.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC4175;


    </references>




  </back>

<!-- ##markdown-source:
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
w0u/D/4bNsf/QNNvAAA=

-->

</rfc>

