stdex/wav_8hpp_source.html

796 lines
148 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>stdex: include/stdex/wav.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">stdex
</div>
<div id="projectbrief">Additional custom or not Standard C++ covered algorithms</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_fca3c47b2ea228727bd6729832f89576.html">stdex</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">wav.hpp</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 2023-2024 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">*/</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &quot;compat.hpp&quot;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;idrec.hpp&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &quot;stream.hpp&quot;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &quot;string.hpp&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span>stdex</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>{</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">namespace </span>wav {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">using </span>id_t = uint32_t;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">using </span>length_t = uint32_t;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">constexpr</span> <span class="keywordtype">size_t</span> align = 2;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="foldopen" id="foldopen00041" data-start="{" data-end="};">
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1header.html"> 41</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1header.html">header</a></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1header.html#a6e179071fd12784b1f98795f8039d63c"> 43</a></span> id_t <a class="code hl_variable" href="structstdex_1_1wav_1_1header.html#a6e179071fd12784b1f98795f8039d63c">type</a> = 0; </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1header.html">header</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> dat &lt;&lt; static_cast&lt;uint32_t&gt;(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.type);</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _Out_ <a class="code hl_struct" href="structstdex_1_1wav_1_1header.html">header</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> {</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> uint32_t pom4;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> dat &gt;&gt; pom4;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_ <span class="keywordflow">goto</span> error1;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.type = pom4;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> error1:</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.type = 0;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;header, id_t, 0x46464952 <span class="comment">/*&quot;RIFF&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> };</div>
</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="foldopen" id="foldopen00070" data-start="{" data-end="};">
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1wave.html"> 70</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1wave.html">wave</a> : <span class="keyword">public</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1header.html">header</a></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">using </span><a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record</a> = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;<a class="code hl_struct" href="structstdex_1_1wav_1_1wave.html">wave</a>, id_t, 0x45564157 <span class="comment">/*&quot;WAVE&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> };</div>
</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="foldopen" id="foldopen00078" data-start="{" data-end="};">
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html"> 78</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1format.html">format</a></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> {</div>
<div class="foldopen" id="foldopen00080" data-start="{" data-end="};">
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553"> 80</a></span> <span class="keyword">enum class</span> <a class="code hl_enumeration" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553">compression_t</a> : uint16_t {</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aad921d60486366258809553a3db49a4a">unknown</a> = 0x0000, </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aec5c8103218f27aa6ecfd3f11e1a6b45">pcm</a> = 0x0001, </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aeb80a477a2c667de92ada178f52c3508">microsoft_adpcm</a> = 0x0002, </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553ac00e16f1478ac9f85214649555b3313b">pcm_float</a> = 0x0003, </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a49aa00965cc0b1ff88d30355744ebf2c">itu_g711_a_law</a> = 0x0006, </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a67888b7069da4d83bebe88c0e4f41fc8">itu_g711_mu_law</a> = 0x0007, </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a04984c51e6d66d2a85c2f5741f528c62">ima_adpcm</a> = 0x0011, </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a4f4918e9489ba6475c99ee45b29d0ae5">itu_g_723_adpcm</a> = 0x0016, </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a65272ddf98e4ddbea87abd0e2aebba6c">gsm_6_10</a> = 0x0031, </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aaf9fbf9c2fa9d447e7c297c0ce6aa1bc">itu_g_721_adpcm</a> = 0x0040, </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a28444c0d7c9a981a6a414f9fd5a7ea35">mpeg</a> = 0x0050, </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aac15dd302601bdac753596694ac78093">experimental</a> = 0xffff, </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#a90d39427490442ea5315b9a0200cf8c5"> 93</a></span> } <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#a90d39427490442ea5315b9a0200cf8c5">compression</a> = <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aad921d60486366258809553a3db49a4a">compression_t::unknown</a>; </div>
</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#ac2e701c78ac7fa1861220552ac0f9477"> 94</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#ac2e701c78ac7fa1861220552ac0f9477">num_channels</a> = 0; </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#a5acb6af39b217522c26c565c886d5954"> 95</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#a5acb6af39b217522c26c565c886d5954">sample_rate</a> = 0; </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#a09a6dc6744dbd0331c2dd50379679497"> 96</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#a09a6dc6744dbd0331c2dd50379679497">bytes_per_second</a> = 0; </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#ad1e8389dc2e46f4a89ca19bb5b9804f5"> 97</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#ad1e8389dc2e46f4a89ca19bb5b9804f5">block_align</a> = 0; </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#a67f8c858e962c30f4f38f08bfc02354f"> 98</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#a67f8c858e962c30f4f38f08bfc02354f">bits_per_channel</a> = 0; </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1format.html#a87fad34087b6372c05a9d2c449a49123"> 99</a></span> <a class="code hl_class" href="classstdex_1_1stream_1_1memory__file.html">stdex::stream::memory_file</a> <a class="code hl_variable" href="structstdex_1_1wav_1_1format.html#a87fad34087b6372c05a9d2c449a49123">extra</a>; </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1format.html">format</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> {</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> dat &lt;&lt; static_cast&lt;uint16_t&gt;(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.compression);</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.num_channels;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.sample_rate;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.bytes_per_second;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.block_align;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.bits_per_channel;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> size = <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.size(); size) {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">if</span> (size &gt; UINT16_MAX) _Unlikely_</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;extra data too big&quot;</span>);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> dat &lt;&lt; static_cast&lt;uint16_t&gt;(size);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span> (dat.ok())</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> dat.write(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.data(), <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(size));</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _Out_ <a class="code hl_struct" href="structstdex_1_1wav_1_1format.html">format</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> uint16_t tmp16;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> dat &gt;&gt; tmp16;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_ <span class="keywordflow">goto</span> error1;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.compression = <span class="keyword">static_cast&lt;</span><a class="code hl_enumeration" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553">format::compression_t</a><span class="keyword">&gt;</span>(tmp16);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.num_channels;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.sample_rate;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.bytes_per_second;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.block_align;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.bits_per_channel;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> dat &gt;&gt; tmp16;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (!dat.ok() || !tmp16) <span class="keywordflow">goto</span> error7;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.seek(0);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.write_stream(dat, tmp16);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.truncate();</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> error1:</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.compression = <a class="code hl_enumvalue" href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aad921d60486366258809553a3db49a4a">format::compression_t::unknown</a>;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.num_channels = 0;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.sample_rate = 0;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.bytes_per_second = 0;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.block_align = 0;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.bits_per_channel = 0;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> error7:</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.seek(0);</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.extra.truncate();</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;format, id_t, 0x20746D66 <span class="comment">/*&quot;fmt &quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> };</div>
</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="foldopen" id="foldopen00160" data-start="{" data-end="};">
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1data.html"> 160</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> {</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5"> 162</a></span> <a class="code hl_class" href="classstdex_1_1stream_1_1memory__file.html">stdex::stream::memory_file</a> <a class="code hl_variable" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">content</a>; </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_ <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> dat.write(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">content</a>.<a class="code hl_function" href="classstdex_1_1stream_1_1memory__file.html#aff374fc64c7453dc0cef22f19bc400ce">data</a>(), <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">content</a>.<a class="code hl_function" href="classstdex_1_1stream_1_1memory__file.html#a0a163692d7d99a9942127ffc76775e1b">size</a>()));</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> }</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _Out_ <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">content</a>.<a class="code hl_function" href="classstdex_1_1stream_1_1memory__file.html#a9e67e40e9e3c0f7b002fcdab5220b4e7">seek</a>(0);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">content</a>.<a class="code hl_function" href="classstdex_1_1stream_1_1memory__file.html#a4216e7ae6e306170357aef1ea1c304c7">write_stream</a>(dat);</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">content</a>.<a class="code hl_function" href="classstdex_1_1stream_1_1memory__file.html#aa35db1681e5c56046eaf0c70068b0d42">truncate</a>();</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;data, id_t, 0x61746164 <span class="comment">/*&quot;data&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> };</div>
</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="foldopen" id="foldopen00185" data-start="{" data-end="};">
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1silence.html"> 185</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1silence.html">silence</a></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> {</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1silence.html#a99560d13634be1a83c3d92937a26c2f3"> 187</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1silence.html#a99560d13634be1a83c3d92937a26c2f3">num_samples</a> = 0; </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1silence.html">silence</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> {</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.num_samples;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> }</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _Out_ <a class="code hl_struct" href="structstdex_1_1wav_1_1silence.html">silence</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.num_samples;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> }</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;silence, id_t, 0x746E6C73 <span class="comment">/*&quot;slnt&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> };</div>
</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
<div class="foldopen" id="foldopen00207" data-start="{" data-end="};">
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html"> 207</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1cue.html">cue</a></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> {</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html#a2348ff6997191585c1419335314cd5ad"> 209</a></span> uint32_t <span class="keywordtype">id</span> = 0; </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html#a8a55fcb503405d3004760d11656af74c"> 210</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a8a55fcb503405d3004760d11656af74c">position</a> = 0; </div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html#a15ae22213cb33bc694965e97a3035342"> 211</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a15ae22213cb33bc694965e97a3035342">chunk_id</a> = 0; </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html#a9e1a1a62c1497e28161b1303c769a59f"> 212</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a9e1a1a62c1497e28161b1303c769a59f">chunk_offset</a> = 0; </div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html#a5ff713152c9608e62a8ee0a97a01bdac"> 213</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a5ff713152c9608e62a8ee0a97a01bdac">block_start</a> = 0; </div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue.html#ad38b61b681205faa6af40310b305758e"> 214</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#ad38b61b681205faa6af40310b305758e">block_offset</a> = 0; </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> };</div>
</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> </div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> compare_by_id(_In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1cue.html">cue</a>&amp; a, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1cue.html">cue</a>&amp; b)</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> {</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">if</span> (a.id &lt; b.id) <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">if</span> (a.id &gt; b.id) <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> }</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> compare_by_pos(_In_ <span class="keyword">const</span> cue&amp; a, _In_ <span class="keyword">const</span> cue&amp; b)</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> {</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">if</span> (a.position &lt; b.position) <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">if</span> (a.position &gt; b.position) <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> }</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keyword">using </span>cue_vector = std::vector&lt;cue&gt;;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">using </span>cue_vector_record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;cue_vector, id_t, 0x20657563 <span class="comment">/*&quot;cue &quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> cue_vector&amp; data)</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> {</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordtype">size_t</span> num_cues = data.size();</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">if</span> (num_cues &gt; UINT32_MAX) _Unlikely_</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;too many cues&quot;</span>);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> dat &lt;&lt; static_cast&lt;uint32_t&gt;(num_cues);</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">if</span> (dat.ok())</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> dat.write_array(data.data(), <span class="keyword">sizeof</span>(cue), num_cues);</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> }</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _Out_ cue_vector&amp; data)</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> {</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> uint32_t num_cues;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> dat &gt;&gt; num_cues;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_ <span class="keywordflow">goto</span> error1;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> data.resize(num_cues);</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> data.resize(dat.read_array(data.data(), <span class="keyword">sizeof</span>(cue), num_cues));</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> error1:</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> data.clear();</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> }</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="foldopen" id="foldopen00265" data-start="{" data-end="};">
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html"> 265</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> {</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#a1136c4e64b75d45013ca612e36bf66e7"> 267</a></span> uint32_t <span class="keywordtype">id</span> = 0; </div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#ae25647c17685b89e304659a691fbfda8"> 268</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#ae25647c17685b89e304659a691fbfda8">duration</a> = 0; </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#ad8edc09cae42ff8e5a51c95462396845"> 269</a></span> id_t <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#ad8edc09cae42ff8e5a51c95462396845">purpose_id</a> = 0; </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#a69cfb9640d41b68940662d40d2cec4f6"> 270</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a69cfb9640d41b68940662d40d2cec4f6">country</a> = 0; </div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#a1574fa16da0753f67e9319f9d7b341c1"> 271</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a1574fa16da0753f67e9319f9d7b341c1">language</a> = 0; </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#af5a6cbae259ede87a96cc16866953b1f"> 272</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#af5a6cbae259ede87a96cc16866953b1f">dialect</a> = 0; </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#a0a02bebe5034947c73de68b1a7edccc7"> 273</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a0a02bebe5034947c73de68b1a7edccc7">charset</a> = 0; </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1ltxt.html#aabb5c8ea28e9002fb5e32867c23f764e"> 274</a></span> std::string <a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#aabb5c8ea28e9002fb5e32867c23f764e">description</a>; </div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> {</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.id;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.duration;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.purpose_id;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.country;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.language;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.dialect;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.charset;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">if</span> (<span class="keywordtype">size_t</span> num_chars = <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.description.size(); num_chars &amp;&amp; dat.ok()) {</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> dat.write_array(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.description.data(), <span class="keyword">sizeof</span>(char), num_chars);</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> dat &lt;&lt; <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> }</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> }</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> </div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> {</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.id;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.duration;</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.purpose_id;</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.country;</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.language;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.dialect;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.charset;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">if</span> (dat.ok()) {</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">auto</span> tmp = dat.read_remainder();</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.description.assign(</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(tmp.data()),</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> stdex::strnlen(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(tmp.data()), tmp.size()));</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> }</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> data.description.clear();</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> }</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> </div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;ltxt, id_t, 0x7478746C <span class="comment">/*&quot;ltxt&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> };</div>
</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="foldopen" id="foldopen00318" data-start="{" data-end="};">
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1label.html"> 318</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1label.html">label</a></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> {</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1label.html#a848c639ef4fe05139938455d80fdd7e5"> 320</a></span> uint32_t <span class="keywordtype">id</span> = 0; </div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1label.html#a770a10ddb3575556540679c3e1caccf0"> 321</a></span> std::string <a class="code hl_variable" href="structstdex_1_1wav_1_1label.html#a770a10ddb3575556540679c3e1caccf0">title</a>; </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1label.html">label</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> {</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.id;</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordflow">if</span> (<span class="keywordtype">size_t</span> num_chars = <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.title.size(); num_chars &amp;&amp; dat.ok()) {</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> dat.write_array(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.title.data(), <span class="keyword">sizeof</span>(char), num_chars);</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> dat &lt;&lt; <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> }</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> }</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> </div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <a class="code hl_struct" href="structstdex_1_1wav_1_1label.html">label</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> {</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.id;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordflow">if</span> (dat.ok()) {</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keyword">auto</span> tmp = dat.read_remainder();</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.title.assign(</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(tmp.data()),</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> stdex::strnlen(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(tmp.data()), tmp.size()));</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> }</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> data.title.clear();</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> }</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> </div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;label, id_t, 0x6C62616C <span class="comment">/*&quot;labl&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> };</div>
</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> </div>
<div class="foldopen" id="foldopen00353" data-start="{" data-end="};">
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1note.html"> 353</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">note</a></div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> {</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1note.html#aab98257fb2764c523b4f68d0d8255fc4"> 355</a></span> uint32_t <span class="keywordtype">id</span> = 0; </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1note.html#a83fe0f7a875af5ea07b02fea48e0acae"> 356</a></span> std::string <a class="code hl_variable" href="structstdex_1_1wav_1_1note.html#a83fe0f7a875af5ea07b02fea48e0acae">note</a>; </div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _In_ <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">stdex::wav::note</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> {</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> dat &lt;&lt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.id;</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="keywordflow">if</span> (<span class="keywordtype">size_t</span> num_chars = <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.note.size(); num_chars &amp;&amp; dat.ok()) {</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> dat.write_array(<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.note.data(), <span class="keyword">sizeof</span>(char), num_chars);</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> dat &lt;&lt; <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> }</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> }</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> </div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; operator &gt;&gt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a>&amp; dat, _Out_ <a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">stdex::wav::note</a>&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> {</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> dat &gt;&gt; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.id;</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordflow">if</span> (dat.ok()) {</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keyword">auto</span> tmp = dat.read_remainder();</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.note.assign(</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(tmp.data()),</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> stdex::strnlen(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(tmp.data()), tmp.size()));</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> }</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> data.note.clear();</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> }</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="keyword">using </span>record = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;<a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">stdex::wav::note</a>, id_t, 0x65746F6E <span class="comment">/*&quot;note&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> };</div>
</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> </div>
<div class="foldopen" id="foldopen00388" data-start="{" data-end="};">
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1list.html"> 388</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1list.html">list</a> : <span class="keyword">public</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1header.html">header</a></div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> {</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">using </span><a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record</a> = <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;<a class="code hl_struct" href="structstdex_1_1wav_1_1list.html">list</a>, id_t, 0x5453494C <span class="comment">/*&quot;LIST&quot;*/</span>, length_t, align&gt;;</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> };</div>
</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="foldopen" id="foldopen00396" data-start="{" data-end="};">
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html"> 396</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structstdex_1_1wav_1_1cue__ex.html">cue_ex</a> : <span class="keyword">public</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1cue.html">cue</a></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> {</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a00e87c9cf3c64be30c0811c5c40bfa58"> 398</a></span> uint32_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a00e87c9cf3c64be30c0811c5c40bfa58">duration</a> = 0; </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a98862464b7e38f15d67653a80195288a"> 399</a></span> id_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a98862464b7e38f15d67653a80195288a">purpose_id</a> = 0; </div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a63db07704b0e5f7cc32d94ed99d20aee"> 400</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a63db07704b0e5f7cc32d94ed99d20aee">country</a> = 0; </div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#ac3801ac362ca8f136b1b5ad1bd9b18c4"> 401</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#ac3801ac362ca8f136b1b5ad1bd9b18c4">language</a> = 0; </div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#adc67de502f7689e67b6b8a4b5b65d47c"> 402</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#adc67de502f7689e67b6b8a4b5b65d47c">dialect</a> = 0; </div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a6cc8057f9a324ca1283e7ebd9756e1d0"> 403</a></span> uint16_t <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a6cc8057f9a324ca1283e7ebd9756e1d0">charset</a> = 0; </div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a35b364ba9cb24b1f992cc8284046a108"> 404</a></span> std::string <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a35b364ba9cb24b1f992cc8284046a108">description</a>; </div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a4b692d7783de7c45a3771bdeebc0993b"> 405</a></span> std::string <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a4b692d7783de7c45a3771bdeebc0993b">title</a>; </div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="structstdex_1_1wav_1_1cue__ex.html#a13aaa66197c84f1d7d4aee220c9298cb"> 406</a></span> std::string <a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a13aaa66197c84f1d7d4aee220c9298cb">note</a>; </div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> };</div>
</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> </div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">using </span>cue_ex_vector = std::vector&lt;cue_ex&gt;;</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> </div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keyword">inline</span> <a class="code hl_class" href="classstdex_1_1stream_1_1basic__file.html">stdex::stream::basic_file</a>&amp; operator &lt;&lt;(_In_ <a class="code hl_class" href="classstdex_1_1stream_1_1basic__file.html">stdex::stream::basic_file</a>&amp; dat, _In_ <span class="keyword">const</span> cue_ex_vector&amp; <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>)</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> {</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keyword">auto</span> start = stdex::idrec::open&lt;id_t, length_t&gt;(dat, <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">cue_vector_record::id</a>());</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="keywordtype">size_t</span> num_cues = <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>.size();</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordflow">if</span> (num_cues &gt; UINT32_MAX) _Unlikely_</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;too many cues&quot;</span>);</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> dat &lt;&lt; static_cast&lt;uint32_t&gt;(num_cues);</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; num_cues &amp;&amp; dat.ok(); ++i)</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> dat.write_array(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code hl_struct" href="structstdex_1_1wav_1_1cue.html">cue</a>*<span class="keyword">&gt;</span>(&amp;<a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>[i]), <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structstdex_1_1wav_1_1cue.html">cue</a>), 1);</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> stdex::idrec::close&lt;id_t, length_t, align&gt;(dat, start);</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> start = stdex::idrec::open&lt;id_t, length_t&gt;(dat, <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">list::record::id</a>());</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> dat &lt;&lt; *reinterpret_cast&lt;const id_t*&gt;(<span class="stringliteral">&quot;adtl&quot;</span>);</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; num_cues &amp;&amp; dat.ok(); ++i) {</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="keyword">const</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1cue__ex.html">cue_ex</a>&amp; c = <a class="code hl_struct" href="structstdex_1_1wav_1_1data.html">data</a>[i];</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>;</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a1136c4e64b75d45013ca612e36bf66e7">id</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a2348ff6997191585c1419335314cd5ad">id</a>;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#ae25647c17685b89e304659a691fbfda8">duration</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a00e87c9cf3c64be30c0811c5c40bfa58">duration</a>;</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#ad8edc09cae42ff8e5a51c95462396845">purpose_id</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a98862464b7e38f15d67653a80195288a">purpose_id</a>;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a69cfb9640d41b68940662d40d2cec4f6">country</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a63db07704b0e5f7cc32d94ed99d20aee">country</a>;</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a1574fa16da0753f67e9319f9d7b341c1">language</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#ac3801ac362ca8f136b1b5ad1bd9b18c4">language</a>;</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#af5a6cbae259ede87a96cc16866953b1f">dialect</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#adc67de502f7689e67b6b8a4b5b65d47c">dialect</a>;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#a0a02bebe5034947c73de68b1a7edccc7">charset</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a6cc8057f9a324ca1283e7ebd9756e1d0">charset</a>;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1ltxt.html#aabb5c8ea28e9002fb5e32867c23f764e">description</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a35b364ba9cb24b1f992cc8284046a108">description</a>;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> dat &lt;&lt; <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">ltxt::record</a>(<a class="code hl_struct" href="structstdex_1_1wav_1_1ltxt.html">ltxt</a>);</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="keywordflow">if</span> (!c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a4b692d7783de7c45a3771bdeebc0993b">title</a>.empty()) {</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1label.html">label</a> title;</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> title.id = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a2348ff6997191585c1419335314cd5ad">id</a>;</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> title.title = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a4b692d7783de7c45a3771bdeebc0993b">title</a>;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> dat &lt;&lt; <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">label::record</a>(title);</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> }</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keywordflow">if</span> (!c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a13aaa66197c84f1d7d4aee220c9298cb">note</a>.empty()) {</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">note</a> <a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">note</a>;</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">note</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1note.html#aab98257fb2764c523b4f68d0d8255fc4">id</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue.html#a2348ff6997191585c1419335314cd5ad">id</a>;</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">note</a>.<a class="code hl_variable" href="structstdex_1_1wav_1_1note.html#a83fe0f7a875af5ea07b02fea48e0acae">note</a> = c.<a class="code hl_variable" href="structstdex_1_1wav_1_1cue__ex.html#a13aaa66197c84f1d7d4aee220c9298cb">note</a>;</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> dat &lt;&lt; <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">note::record</a>(<a class="code hl_struct" href="structstdex_1_1wav_1_1note.html">note</a>);</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> }</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> }</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> stdex::idrec::close&lt;id_t, length_t, align&gt;(dat, start);</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> </div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keywordflow">return</span> dat;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> }</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> </div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> _Success_(<span class="keywordflow">return</span>!=0) bool find_first(</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> _In_ stdex::stream::basic_file&amp; dat,</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> _In_ id_t subid,</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> _In_ stdex::stream::fpos_t block_end = stdex::stream::fpos_max,</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> _Out_opt_ stdex::stream::fpos_t* found_block_end = <span class="keywordtype">nullptr</span>)</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> {</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keywordflow">while</span> (dat.tell() &lt; block_end) {</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keywordflow">if</span> (!<a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;T, id_t, T::record::id(), length_t, align&gt;::find(dat, block_end))</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> length_t size;</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> dat &gt;&gt; size;</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> stdex::stream::fpos_t end = dat.tell() + size;</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> id_t id;</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> dat &gt;&gt; id;</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == subid) {</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">if</span> (found_block_end) *found_block_end = end;</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> }</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> </div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="comment">// Block was found, but sub-ID is different.</span></div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> end += (align - end) % align;</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> dat.seekbeg(end);</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> }</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> }</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> </div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> _Success_(<span class="keywordflow">return</span> != 0) bool read_first(</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> _In_ stdex::stream::basic_file&amp; dat,</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> _Inout_ T&amp; content,</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> _In_ stdex::stream::fpos_t block_end = stdex::stream::fpos_max)</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> {</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keywordflow">if</span> (!<a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;T, id_t, T::record::id(), length_t, align&gt;::find(dat, block_end))</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> dat &gt;&gt; <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record&lt;T, id_t, T::record::id(), length_t, align&gt;</a>(content);</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> <span class="keywordflow">return</span> dat.ok();</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> }</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="keyword">inline</span> _Success_(<span class="keywordflow">return</span> != 0) bool find_content(</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> _In_ stdex::stream::basic_file&amp; dat,</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> _In_ stdex::stream::fpos_t block_end = stdex::stream::fpos_max,</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> _Out_opt_ stdex::stream::fpos_t* found_block_end = <span class="keywordtype">nullptr</span>)</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> {</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keywordflow">return</span> find_first&lt;header&gt;(dat, <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">wave::record::id</a>(), block_end, found_block_end);</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> }</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> </div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="keyword">inline</span> _Success_(<span class="keywordflow">return</span> != 0) bool read_cues(</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> _In_ stdex::stream::basic_file&amp; dat,</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> _Inout_ cue_ex_vector&amp; cues, stdex::stream::fpos_t block_end = stdex::stream::fpos_max)</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> {</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="keyword">static</span> <span class="keyword">auto</span> cue_less = [](_In_ <span class="keyword">const</span> cue&amp; a, _In_ <span class="keyword">const</span> cue&amp; b) { <span class="keywordflow">return</span> compare_by_id(a, b) &lt; 0; };</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> <span class="keyword">static</span> int (__cdecl* cue_cmp)(<span class="keywordtype">void</span> <span class="keyword">const</span>*, <span class="keywordtype">void</span> <span class="keyword">const</span>*) = [](_In_ <span class="keywordtype">void</span> <span class="keyword">const</span>* a, _In_ <span class="keywordtype">void</span> <span class="keyword">const</span>* b) { <span class="keywordflow">return</span> compare_by_id(*<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>cue*<span class="keyword">&gt;</span>(a), *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>cue*<span class="keyword">&gt;</span>(b)); };</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> </div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> stdex::stream::fpos_t start = dat.tell();</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> <span class="keywordflow">while</span> (dat.tell() &lt; block_end) {</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <span class="keywordflow">if</span> (<a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a>&lt;cue_vector, id_t, <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">cue_vector_record::id</a>(), length_t, align&gt;::find(dat, block_end)) {</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> length_t size;</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> dat &gt;&gt; size;</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <span class="keywordflow">if</span> (!dat.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <a class="code hl_class" href="classstdex_1_1stream_1_1file__window.html">stdex::stream::file_window</a> _dat(dat, dat.tell(), size);</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> uint32_t num_cues;</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> _dat &gt;&gt; num_cues;</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keywordflow">if</span> (!_dat.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> cues.resize(num_cues);</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="keywordtype">size_t</span> i;</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keywordtype">bool</span> ordered = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <span class="keywordflow">for</span> (i = 0; i &lt; num_cues; i++) {</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> _dat.read_array(<span class="keyword">static_cast&lt;</span>cue*<span class="keyword">&gt;</span>(&amp;cues[i]), <span class="keyword">sizeof</span>(cue), 1);</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keywordflow">if</span> (!_dat.ok()) _Unlikely_</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="keywordflow">if</span> (i &amp;&amp; cue_less(cues[i], cues[i - 1]))</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> ordered = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> }</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> cues.resize(i);</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="keywordflow">if</span> (!ordered)</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> std::sort(cues.begin(), cues.end(), cue_less);</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> }</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> }</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> </div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <span class="comment">// Cues are loaded. Add other data.</span></div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> dat.seekbeg(start);</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="keywordflow">while</span> (dat.tell() &lt; block_end) {</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> stdex::stream::fpos_t found_block_end;</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="keywordflow">if</span> (find_first&lt;list&gt;(dat, *(<span class="keyword">const</span> id_t*)<span class="stringliteral">&quot;adtl&quot;</span>, block_end, &amp;found_block_end)) {</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keywordflow">while</span> (dat.tell() &lt; found_block_end) {</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> id_t id;</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> dat &gt;&gt; id;</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> <span class="keywordflow">if</span> (!dat.ok()) <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> </div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">ltxt::record::id</a>()) {</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> ltxt ltxt;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> dat &gt;&gt; ltxt::record(ltxt);</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> cue_ex tmp;</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> tmp.id = ltxt.id;</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> cue_ex* c = <span class="keyword">reinterpret_cast&lt;</span>cue_ex*<span class="keyword">&gt;</span>(std::bsearch(&amp;tmp, cues.data(), cues.size(), <span class="keyword">sizeof</span>(cues[0]), cue_cmp));</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> <span class="keywordflow">if</span> (c) {</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> c-&gt;duration = ltxt.duration;</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> c-&gt;purpose_id = ltxt.purpose_id;</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> c-&gt;country = ltxt.country;</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> c-&gt;language = ltxt.language;</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> c-&gt;dialect = ltxt.dialect;</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> c-&gt;charset = ltxt.charset;</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> c-&gt;description = ltxt.description;</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> }</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> }</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">label::record::id</a>()) {</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> label title;</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> dat &gt;&gt; label::record(title);</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> cue_ex tmp;</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> tmp.id = title.id;</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> cue_ex* c = <span class="keyword">reinterpret_cast&lt;</span>cue_ex*<span class="keyword">&gt;</span>(std::bsearch(&amp;tmp, cues.data(), cues.size(), <span class="keyword">sizeof</span>(cues[0]), cue_cmp));</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="keywordflow">if</span> (c)</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> c-&gt;title = title.title;</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> }</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">note::record::id</a>()) {</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> note note;</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> dat &gt;&gt; note::record(note);</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> cue_ex tmp;</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> tmp.id = note.id;</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> cue_ex* c = <span class="keyword">reinterpret_cast&lt;</span>cue_ex*<span class="keyword">&gt;</span>(std::bsearch(&amp;tmp, cues.data(), cues.size(), <span class="keyword">sizeof</span>(cues[0]), cue_cmp));</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <span class="keywordflow">if</span> (c)</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> c-&gt;note = note.note;</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> }</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!stdex::idrec::ignore&lt;length_t, align&gt;(dat)) _Unlikely_</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> }</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> }</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> }</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> </div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> dat.seekbeg(start);</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> }</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> </div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> <span class="keyword">inline</span> _Success_(<span class="keywordflow">return</span> != 0) bool remove_cues(</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> _Inout_ stdex::stream::basic_file&amp; input,</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> _Inout_ stdex::stream::basic_file&amp; output,</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> _In_ stdex::stream::fpos_t block_end = stdex::stream::fpos_max)</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> {</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> <span class="keyword">static</span> id_t removable[] = {</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">cue_vector_record::id</a>(),</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">ltxt::record::id</a>(),</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">label::record::id</a>(),</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">note::record::id</a>(),</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> };</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> </div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keywordflow">while</span> (input.tell() &lt; block_end) {</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> id_t id;</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> input &gt;&gt; id;</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> <span class="keywordflow">if</span> (!input.ok()) <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; _countof(removable); i++)</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == removable[i])</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> <span class="keywordflow">goto</span> remove;</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> <span class="keywordflow">if</span> (!stdex::idrec::ignore&lt;length_t, align&gt;(input)) _Unlikely_</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> </div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> remove:</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> length_t size;</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> input &gt;&gt; size;</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <span class="keywordflow">if</span> (!input.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> <span class="keyword">auto</span> start = stdex::idrec::open&lt;id_t, length_t&gt;(output, <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> id_t id2 = id;</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> stdex::strupr(<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;id2), <span class="keyword">sizeof</span>(id_t) / <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> != id2 || <span class="keywordtype">id</span> == *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>id_t*<span class="keyword">&gt;</span>(<span class="stringliteral">&quot;ICRD&quot;</span>)) {</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> <span class="comment">// ID is not all uppercase (or is an exception). Element is trivial and may be copied.</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> <span class="keywordflow">if</span> (!output.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> output.write_stream(input, size);</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <span class="keywordflow">if</span> (!input.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> stdex::idrec::close&lt;id_t, length_t, align&gt;(output, start);</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> size = <span class="keyword">static_cast&lt;</span>length_t<span class="keyword">&gt;</span>(align - size) % align;</div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> <span class="keywordflow">if</span> (size)</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> input.seekcur(size);</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> }</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <span class="comment">// ID is all uppercase. Needs recursive treatment.</span></div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> id_t id3;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> input &gt;&gt; id3;</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> <span class="keywordflow">if</span> (!input.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> output &lt;&lt; id3;</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> <span class="keywordflow">if</span> (!output.ok()) _Unlikely_ <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> stdex::stream::fpos_t end = output.tell();</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> <span class="keywordflow">if</span> (!remove_cues(input, output, input.tell() + size - <span class="keyword">sizeof</span>(id_t))) _Unlikely_</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <span class="keywordflow">if</span> (end != output.tell())</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> stdex::idrec::close&lt;id_t, length_t, align&gt;(output, start);</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> output.seekbeg(start);</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> }</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> }</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> </div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> output.truncate();</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> }</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> }</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span>}</div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a></div><div class="ttdoc">Helper class for read/write of records to/from memory.</div><div class="ttdef"><b>Definition</b> idrec.hpp:291</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_aade8ebd8670982f05cc890c750627365"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#aade8ebd8670982f05cc890c750627365">stdex::idrec::record::id</a></div><div class="ttdeci">static constexpr T_id id()</div><div class="ttdoc">Returns record id.</div><div class="ttdef"><b>Definition</b> idrec.hpp:310</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1basic__file_html"><div class="ttname"><a href="classstdex_1_1stream_1_1basic__file.html">stdex::stream::basic_file</a></div><div class="ttdoc">Basic seekable stream operations.</div><div class="ttdef"><b>Definition</b> stream.hpp:817</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1basic_html"><div class="ttname"><a href="classstdex_1_1stream_1_1basic.html">stdex::stream::basic</a></div><div class="ttdoc">UTF-8 byte-order-mark</div><div class="ttdef"><b>Definition</b> stream.hpp:84</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1file__window_html"><div class="ttname"><a href="classstdex_1_1stream_1_1file__window.html">stdex::stream::file_window</a></div><div class="ttdoc">Limits file reading/writing to a predefined window.</div><div class="ttdef"><b>Definition</b> stream.hpp:1694</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1memory__file_html"><div class="ttname"><a href="classstdex_1_1stream_1_1memory__file.html">stdex::stream::memory_file</a></div><div class="ttdoc">In-memory file.</div><div class="ttdef"><b>Definition</b> stream.hpp:3221</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1memory__file_html_a0a163692d7d99a9942127ffc76775e1b"><div class="ttname"><a href="classstdex_1_1stream_1_1memory__file.html#a0a163692d7d99a9942127ffc76775e1b">stdex::stream::memory_file::size</a></div><div class="ttdeci">virtual fsize_t size() const</div><div class="ttdoc">Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...</div><div class="ttdef"><b>Definition</b> stream.hpp:3923</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1memory__file_html_a4216e7ae6e306170357aef1ea1c304c7"><div class="ttname"><a href="classstdex_1_1stream_1_1memory__file.html#a4216e7ae6e306170357aef1ea1c304c7">stdex::stream::memory_file::write_stream</a></div><div class="ttdeci">size_t write_stream(basic &amp;stream, size_t amount=SIZE_MAX)</div><div class="ttdoc">Writes content of another stream.</div><div class="ttdef"><b>Definition</b> stream.hpp:3838</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1memory__file_html_a9e67e40e9e3c0f7b002fcdab5220b4e7"><div class="ttname"><a href="classstdex_1_1stream_1_1memory__file.html#a9e67e40e9e3c0f7b002fcdab5220b4e7">stdex::stream::memory_file::seek</a></div><div class="ttdeci">virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)</div><div class="ttdoc">Seeks to specified relative file position.</div><div class="ttdef"><b>Definition</b> stream.hpp:3902</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1memory__file_html_aa35db1681e5c56046eaf0c70068b0d42"><div class="ttname"><a href="classstdex_1_1stream_1_1memory__file.html#aa35db1681e5c56046eaf0c70068b0d42">stdex::stream::memory_file::truncate</a></div><div class="ttdeci">virtual void truncate()</div><div class="ttdoc">Sets file size - truncates the remainder of file content from the current file position to the end of...</div><div class="ttdef"><b>Definition</b> stream.hpp:3928</div></div>
<div class="ttc" id="aclassstdex_1_1stream_1_1memory__file_html_aff374fc64c7453dc0cef22f19bc400ce"><div class="ttname"><a href="classstdex_1_1stream_1_1memory__file.html#aff374fc64c7453dc0cef22f19bc400ce">stdex::stream::memory_file::data</a></div><div class="ttdeci">const void * data() const</div><div class="ttdoc">Returns pointer to data.</div><div class="ttdef"><b>Definition</b> stream.hpp:3551</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html">stdex::wav::cue_ex</a></div><div class="ttdoc">Extended cue.</div><div class="ttdef"><b>Definition</b> wav.hpp:397</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a00e87c9cf3c64be30c0811c5c40bfa58"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a00e87c9cf3c64be30c0811c5c40bfa58">stdex::wav::cue_ex::duration</a></div><div class="ttdeci">uint32_t duration</div><div class="ttdoc">How many samples from the cue point the region or section spans.</div><div class="ttdef"><b>Definition</b> wav.hpp:398</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a13aaa66197c84f1d7d4aee220c9298cb"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a13aaa66197c84f1d7d4aee220c9298cb">stdex::wav::cue_ex::note</a></div><div class="ttdeci">std::string note</div><div class="ttdoc">Note text.</div><div class="ttdef"><b>Definition</b> wav.hpp:406</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a35b364ba9cb24b1f992cc8284046a108"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a35b364ba9cb24b1f992cc8284046a108">stdex::wav::cue_ex::description</a></div><div class="ttdeci">std::string description</div><div class="ttdoc">Description text.</div><div class="ttdef"><b>Definition</b> wav.hpp:404</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a4b692d7783de7c45a3771bdeebc0993b"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a4b692d7783de7c45a3771bdeebc0993b">stdex::wav::cue_ex::title</a></div><div class="ttdeci">std::string title</div><div class="ttdoc">Title text.</div><div class="ttdef"><b>Definition</b> wav.hpp:405</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a63db07704b0e5f7cc32d94ed99d20aee"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a63db07704b0e5f7cc32d94ed99d20aee">stdex::wav::cue_ex::country</a></div><div class="ttdeci">uint16_t country</div><div class="ttdoc">Country code used by texts.</div><div class="ttdef"><b>Definition</b> wav.hpp:400</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a6cc8057f9a324ca1283e7ebd9756e1d0"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a6cc8057f9a324ca1283e7ebd9756e1d0">stdex::wav::cue_ex::charset</a></div><div class="ttdeci">uint16_t charset</div><div class="ttdoc">Charset used by texts.</div><div class="ttdef"><b>Definition</b> wav.hpp:403</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_a98862464b7e38f15d67653a80195288a"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#a98862464b7e38f15d67653a80195288a">stdex::wav::cue_ex::purpose_id</a></div><div class="ttdeci">id_t purpose_id</div><div class="ttdoc">What the text is used for. For example a value of &quot;scrp&quot; means script text, and &quot;capt&quot; means close-ca...</div><div class="ttdef"><b>Definition</b> wav.hpp:399</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_ac3801ac362ca8f136b1b5ad1bd9b18c4"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#ac3801ac362ca8f136b1b5ad1bd9b18c4">stdex::wav::cue_ex::language</a></div><div class="ttdeci">uint16_t language</div><div class="ttdoc">Language code used by texts.</div><div class="ttdef"><b>Definition</b> wav.hpp:401</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue__ex_html_adc67de502f7689e67b6b8a4b5b65d47c"><div class="ttname"><a href="structstdex_1_1wav_1_1cue__ex.html#adc67de502f7689e67b6b8a4b5b65d47c">stdex::wav::cue_ex::dialect</a></div><div class="ttdeci">uint16_t dialect</div><div class="ttdoc">Dialect code used by texts.</div><div class="ttdef"><b>Definition</b> wav.hpp:402</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html">stdex::wav::cue</a></div><div class="ttdoc">Cue point.</div><div class="ttdef"><b>Definition</b> wav.hpp:208</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html_a15ae22213cb33bc694965e97a3035342"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html#a15ae22213cb33bc694965e97a3035342">stdex::wav::cue::chunk_id</a></div><div class="ttdeci">uint32_t chunk_id</div><div class="ttdoc">The four byte ID used by the chunk containing the sample that corresponds to this cue point....</div><div class="ttdef"><b>Definition</b> wav.hpp:211</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html_a2348ff6997191585c1419335314cd5ad"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html#a2348ff6997191585c1419335314cd5ad">stdex::wav::cue::id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdoc">Each cue point has a unique identification value used to associate cue points with information in oth...</div><div class="ttdef"><b>Definition</b> wav.hpp:209</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html_a5ff713152c9608e62a8ee0a97a01bdac"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html#a5ff713152c9608e62a8ee0a97a01bdac">stdex::wav::cue::block_start</a></div><div class="ttdeci">uint32_t block_start</div><div class="ttdoc">The byte offset into the &quot;data&quot; or &quot;slnt&quot; Chunk to the start of the block containing the sample....</div><div class="ttdef"><b>Definition</b> wav.hpp:213</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html_a8a55fcb503405d3004760d11656af74c"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html#a8a55fcb503405d3004760d11656af74c">stdex::wav::cue::position</a></div><div class="ttdeci">uint32_t position</div><div class="ttdoc">The sample offset associated with the cue point in terms of the sample's position in the final stream...</div><div class="ttdef"><b>Definition</b> wav.hpp:210</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html_a9e1a1a62c1497e28161b1303c769a59f"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html#a9e1a1a62c1497e28161b1303c769a59f">stdex::wav::cue::chunk_offset</a></div><div class="ttdeci">uint32_t chunk_offset</div><div class="ttdoc">The byte offset into the Wave List Chunk of the chunk containing the sample that corresponds to this ...</div><div class="ttdef"><b>Definition</b> wav.hpp:212</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1cue_html_ad38b61b681205faa6af40310b305758e"><div class="ttname"><a href="structstdex_1_1wav_1_1cue.html#ad38b61b681205faa6af40310b305758e">stdex::wav::cue::block_offset</a></div><div class="ttdeci">uint32_t block_offset</div><div class="ttdoc">An offset into the block (specified by Block Start) for the sample that corresponds to the cue point....</div><div class="ttdef"><b>Definition</b> wav.hpp:214</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1data_html"><div class="ttname"><a href="structstdex_1_1wav_1_1data.html">stdex::wav::data</a></div><div class="ttdoc">Encoded waveform content.</div><div class="ttdef"><b>Definition</b> wav.hpp:161</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1data_html_ae6a46ff99e77e639823399e94b46f6c5"><div class="ttname"><a href="structstdex_1_1wav_1_1data.html#ae6a46ff99e77e639823399e94b46f6c5">stdex::wav::data::content</a></div><div class="ttdeci">stdex::stream::memory_file content</div><div class="ttdoc">Encoded waveform.</div><div class="ttdef"><b>Definition</b> wav.hpp:162</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html">stdex::wav::format</a></div><div class="ttdoc">Waveform format.</div><div class="ttdef"><b>Definition</b> wav.hpp:79</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a09a6dc6744dbd0331c2dd50379679497"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a09a6dc6744dbd0331c2dd50379679497">stdex::wav::format::bytes_per_second</a></div><div class="ttdeci">uint32_t bytes_per_second</div><div class="ttdoc">How many bytes of wave data must be streamed to a D/A converter per second in order to play the wave ...</div><div class="ttdef"><b>Definition</b> wav.hpp:96</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a5acb6af39b217522c26c565c886d5954"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a5acb6af39b217522c26c565c886d5954">stdex::wav::format::sample_rate</a></div><div class="ttdeci">uint32_t sample_rate</div><div class="ttdoc">The number of sample slices per second (Hz). This value is unaffected by the number of channels.</div><div class="ttdef"><b>Definition</b> wav.hpp:95</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a67f8c858e962c30f4f38f08bfc02354f"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a67f8c858e962c30f4f38f08bfc02354f">stdex::wav::format::bits_per_channel</a></div><div class="ttdeci">uint16_t bits_per_channel</div><div class="ttdoc">The number of bits used to define each sample. This value is usually 8, 16, 24 or 32....</div><div class="ttdef"><b>Definition</b> wav.hpp:98</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a87fad34087b6372c05a9d2c449a49123"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a87fad34087b6372c05a9d2c449a49123">stdex::wav::format::extra</a></div><div class="ttdeci">stdex::stream::memory_file extra</div><div class="ttdoc">Additional format data.</div><div class="ttdef"><b>Definition</b> wav.hpp:99</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a90d39427490442ea5315b9a0200cf8c5"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a90d39427490442ea5315b9a0200cf8c5">stdex::wav::format::compression</a></div><div class="ttdeci">enum stdex::wav::format::compression_t compression</div><div class="ttdoc">Waveform compression.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553">stdex::wav::format::compression_t</a></div><div class="ttdeci">compression_t</div><div class="ttdef"><b>Definition</b> wav.hpp:80</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553a04984c51e6d66d2a85c2f5741f528c62"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a04984c51e6d66d2a85c2f5741f528c62">stdex::wav::format::compression_t::ima_adpcm</a></div><div class="ttdeci">@ ima_adpcm</div><div class="ttdoc">IMA ADPCM.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553a28444c0d7c9a981a6a414f9fd5a7ea35"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a28444c0d7c9a981a6a414f9fd5a7ea35">stdex::wav::format::compression_t::mpeg</a></div><div class="ttdeci">@ mpeg</div><div class="ttdoc">MPEG.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553a49aa00965cc0b1ff88d30355744ebf2c"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a49aa00965cc0b1ff88d30355744ebf2c">stdex::wav::format::compression_t::itu_g711_a_law</a></div><div class="ttdeci">@ itu_g711_a_law</div><div class="ttdoc">ITU G.711 a-law.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553a4f4918e9489ba6475c99ee45b29d0ae5"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a4f4918e9489ba6475c99ee45b29d0ae5">stdex::wav::format::compression_t::itu_g_723_adpcm</a></div><div class="ttdeci">@ itu_g_723_adpcm</div><div class="ttdoc">ITU G.723 ADPCM (Yamaha)</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553a65272ddf98e4ddbea87abd0e2aebba6c"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a65272ddf98e4ddbea87abd0e2aebba6c">stdex::wav::format::compression_t::gsm_6_10</a></div><div class="ttdeci">@ gsm_6_10</div><div class="ttdoc">GSM 6.10.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553a67888b7069da4d83bebe88c0e4f41fc8"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553a67888b7069da4d83bebe88c0e4f41fc8">stdex::wav::format::compression_t::itu_g711_mu_law</a></div><div class="ttdeci">@ itu_g711_mu_law</div><div class="ttdoc">ITU G.711 µ-law.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553aac15dd302601bdac753596694ac78093"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aac15dd302601bdac753596694ac78093">stdex::wav::format::compression_t::experimental</a></div><div class="ttdeci">@ experimental</div><div class="ttdoc">Experimental.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553aad921d60486366258809553a3db49a4a"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aad921d60486366258809553a3db49a4a">stdex::wav::format::compression_t::unknown</a></div><div class="ttdeci">@ unknown</div><div class="ttdoc">Unknown.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553aaf9fbf9c2fa9d447e7c297c0ce6aa1bc"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aaf9fbf9c2fa9d447e7c297c0ce6aa1bc">stdex::wav::format::compression_t::itu_g_721_adpcm</a></div><div class="ttdeci">@ itu_g_721_adpcm</div><div class="ttdoc">ITU G.721 ADPCM.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553ac00e16f1478ac9f85214649555b3313b"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553ac00e16f1478ac9f85214649555b3313b">stdex::wav::format::compression_t::pcm_float</a></div><div class="ttdeci">@ pcm_float</div><div class="ttdoc">PCM/uncompressed floating point.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553aeb80a477a2c667de92ada178f52c3508"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aeb80a477a2c667de92ada178f52c3508">stdex::wav::format::compression_t::microsoft_adpcm</a></div><div class="ttdeci">@ microsoft_adpcm</div><div class="ttdoc">Microsoft ADPCM.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_a9e48aadca63b92583abda67513aa4553aec5c8103218f27aa6ecfd3f11e1a6b45"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#a9e48aadca63b92583abda67513aa4553aec5c8103218f27aa6ecfd3f11e1a6b45">stdex::wav::format::compression_t::pcm</a></div><div class="ttdeci">@ pcm</div><div class="ttdoc">PCM/uncompressed integral.</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_ac2e701c78ac7fa1861220552ac0f9477"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#ac2e701c78ac7fa1861220552ac0f9477">stdex::wav::format::num_channels</a></div><div class="ttdeci">uint16_t num_channels</div><div class="ttdoc">The number of channels specifies how many separate audio signals that are encoded in the wave data ch...</div><div class="ttdef"><b>Definition</b> wav.hpp:94</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1format_html_ad1e8389dc2e46f4a89ca19bb5b9804f5"><div class="ttname"><a href="structstdex_1_1wav_1_1format.html#ad1e8389dc2e46f4a89ca19bb5b9804f5">stdex::wav::format::block_align</a></div><div class="ttdeci">uint16_t block_align</div><div class="ttdoc">The number of bytes per sample slice (all channels). This value is not affected by the number of chan...</div><div class="ttdef"><b>Definition</b> wav.hpp:97</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1header_html"><div class="ttname"><a href="structstdex_1_1wav_1_1header.html">stdex::wav::header</a></div><div class="ttdoc">File header.</div><div class="ttdef"><b>Definition</b> wav.hpp:42</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1header_html_a6e179071fd12784b1f98795f8039d63c"><div class="ttname"><a href="structstdex_1_1wav_1_1header.html#a6e179071fd12784b1f98795f8039d63c">stdex::wav::header::type</a></div><div class="ttdeci">id_t type</div><div class="ttdoc">RIFF type.</div><div class="ttdef"><b>Definition</b> wav.hpp:43</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1label_html"><div class="ttname"><a href="structstdex_1_1wav_1_1label.html">stdex::wav::label</a></div><div class="ttdoc">Label.</div><div class="ttdef"><b>Definition</b> wav.hpp:319</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1label_html_a770a10ddb3575556540679c3e1caccf0"><div class="ttname"><a href="structstdex_1_1wav_1_1label.html#a770a10ddb3575556540679c3e1caccf0">stdex::wav::label::title</a></div><div class="ttdeci">std::string title</div><div class="ttdoc">Title text.</div><div class="ttdef"><b>Definition</b> wav.hpp:321</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1list_html"><div class="ttname"><a href="structstdex_1_1wav_1_1list.html">stdex::wav::list</a></div><div class="ttdoc">Associated data list.</div><div class="ttdef"><b>Definition</b> wav.hpp:389</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html">stdex::wav::ltxt</a></div><div class="ttdoc">Labeled text.</div><div class="ttdef"><b>Definition</b> wav.hpp:266</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_a0a02bebe5034947c73de68b1a7edccc7"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#a0a02bebe5034947c73de68b1a7edccc7">stdex::wav::ltxt::charset</a></div><div class="ttdeci">uint16_t charset</div><div class="ttdoc">Charset used by text.</div><div class="ttdef"><b>Definition</b> wav.hpp:273</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_a1136c4e64b75d45013ca612e36bf66e7"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#a1136c4e64b75d45013ca612e36bf66e7">stdex::wav::ltxt::id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdoc">The starting sample point that corresponds to this text label by providing the ID of a Cue Point defi...</div><div class="ttdef"><b>Definition</b> wav.hpp:267</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_a1574fa16da0753f67e9319f9d7b341c1"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#a1574fa16da0753f67e9319f9d7b341c1">stdex::wav::ltxt::language</a></div><div class="ttdeci">uint16_t language</div><div class="ttdoc">Language code used by text.</div><div class="ttdef"><b>Definition</b> wav.hpp:271</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_a69cfb9640d41b68940662d40d2cec4f6"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#a69cfb9640d41b68940662d40d2cec4f6">stdex::wav::ltxt::country</a></div><div class="ttdeci">uint16_t country</div><div class="ttdoc">Country code used by text.</div><div class="ttdef"><b>Definition</b> wav.hpp:270</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_aabb5c8ea28e9002fb5e32867c23f764e"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#aabb5c8ea28e9002fb5e32867c23f764e">stdex::wav::ltxt::description</a></div><div class="ttdeci">std::string description</div><div class="ttdoc">Description text.</div><div class="ttdef"><b>Definition</b> wav.hpp:274</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_ad8edc09cae42ff8e5a51c95462396845"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#ad8edc09cae42ff8e5a51c95462396845">stdex::wav::ltxt::purpose_id</a></div><div class="ttdeci">id_t purpose_id</div><div class="ttdoc">What the text is used for. For example a value of &quot;scrp&quot; means script text, and &quot;capt&quot; means close-ca...</div><div class="ttdef"><b>Definition</b> wav.hpp:269</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_ae25647c17685b89e304659a691fbfda8"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#ae25647c17685b89e304659a691fbfda8">stdex::wav::ltxt::duration</a></div><div class="ttdeci">uint32_t duration</div><div class="ttdoc">How many samples from the cue point the region or section spans.</div><div class="ttdef"><b>Definition</b> wav.hpp:268</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1ltxt_html_af5a6cbae259ede87a96cc16866953b1f"><div class="ttname"><a href="structstdex_1_1wav_1_1ltxt.html#af5a6cbae259ede87a96cc16866953b1f">stdex::wav::ltxt::dialect</a></div><div class="ttdeci">uint16_t dialect</div><div class="ttdoc">Dialect code used by text.</div><div class="ttdef"><b>Definition</b> wav.hpp:272</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1note_html"><div class="ttname"><a href="structstdex_1_1wav_1_1note.html">stdex::wav::note</a></div><div class="ttdoc">Note.</div><div class="ttdef"><b>Definition</b> wav.hpp:354</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1note_html_a83fe0f7a875af5ea07b02fea48e0acae"><div class="ttname"><a href="structstdex_1_1wav_1_1note.html#a83fe0f7a875af5ea07b02fea48e0acae">stdex::wav::note::note</a></div><div class="ttdeci">std::string note</div><div class="ttdoc">Note text.</div><div class="ttdef"><b>Definition</b> wav.hpp:356</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1note_html_aab98257fb2764c523b4f68d0d8255fc4"><div class="ttname"><a href="structstdex_1_1wav_1_1note.html#aab98257fb2764c523b4f68d0d8255fc4">stdex::wav::note::id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdoc">The sample point that corresponds to this text comment by providing the ID of a Cue Point defined in ...</div><div class="ttdef"><b>Definition</b> wav.hpp:355</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1silence_html"><div class="ttname"><a href="structstdex_1_1wav_1_1silence.html">stdex::wav::silence</a></div><div class="ttdoc">Silence.</div><div class="ttdef"><b>Definition</b> wav.hpp:186</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1silence_html_a99560d13634be1a83c3d92937a26c2f3"><div class="ttname"><a href="structstdex_1_1wav_1_1silence.html#a99560d13634be1a83c3d92937a26c2f3">stdex::wav::silence::num_samples</a></div><div class="ttdeci">uint32_t num_samples</div><div class="ttdoc">The number of silent samples that appear in the waveform at this point in the wave list chunk.</div><div class="ttdef"><b>Definition</b> wav.hpp:187</div></div>
<div class="ttc" id="astructstdex_1_1wav_1_1wave_html"><div class="ttname"><a href="structstdex_1_1wav_1_1wave.html">stdex::wav::wave</a></div><div class="ttdoc">Waveform block.</div><div class="ttdef"><b>Definition</b> wav.hpp:71</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Feb 21 2024 08:55:51 for stdex by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.10.0
</small></address>
</body>
</html>