1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-28 22:28:44 +02:00
audacity/lib-src/libflac/doc/html/api/group__flac__metadata__object.html
2015-05-01 03:33:07 -05:00

2408 lines
142 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>FLAC: FLAC/metadata.h: metadata object methods</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>
<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 style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">FLAC
&#160;<span id="projectnumber">1.3.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">FLAC/metadata.h: metadata object methods<div class="ingroups"><a class="el" href="group__flac.html">FLAC C API</a> &raquo; <a class="el" href="group__flac__metadata.html">FLAC/metadata.h: metadata interfaces</a></div></div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga5df7bc8c72cafed1391bdc5ffc876e0f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga5df7bc8c72cafed1391bdc5ffc876e0f">FLAC__metadata_object_new</a> (<a class="el" href="group__flac__format.html#gac71714ba8ddbbd66d26bb78a427fac01">FLAC__MetadataType</a> type)</td></tr>
<tr class="separator:ga5df7bc8c72cafed1391bdc5ffc876e0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29af0ecc2a015ef22289f206bc308d80"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga29af0ecc2a015ef22289f206bc308d80">FLAC__metadata_object_clone</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object)</td></tr>
<tr class="separator:ga29af0ecc2a015ef22289f206bc308d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6b3159744a1e5c4ce9d349fd0ebae800"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga6b3159744a1e5c4ce9d349fd0ebae800">FLAC__metadata_object_delete</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object)</td></tr>
<tr class="separator:ga6b3159744a1e5c4ce9d349fd0ebae800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6853bcafe731b1db37105d49f3085349"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga6853bcafe731b1db37105d49f3085349">FLAC__metadata_object_is_equal</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *block1, const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *block2)</td></tr>
<tr class="separator:ga6853bcafe731b1db37105d49f3085349"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga07cd39bbe12f4f4e144e38c5265b997d"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga07cd39bbe12f4f4e144e38c5265b997d">FLAC__metadata_object_application_set_data</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__byte *data, unsigned length, FLAC__bool copy)</td></tr>
<tr class="separator:ga07cd39bbe12f4f4e144e38c5265b997d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaffa16bae5e3683c983dc137fd56f0c26"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaffa16bae5e3683c983dc137fd56f0c26">FLAC__metadata_object_seektable_resize_points</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned new_num_points)</td></tr>
<tr class="separator:gaffa16bae5e3683c983dc137fd56f0c26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa1a69eb95a3c17aa973466589e85f3c1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaa1a69eb95a3c17aa973466589e85f3c1">FLAC__metadata_object_seektable_set_point</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned point_num, <a class="el" href="structFLAC____StreamMetadata__SeekPoint.html">FLAC__StreamMetadata_SeekPoint</a> point)</td></tr>
<tr class="separator:gaa1a69eb95a3c17aa973466589e85f3c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga794109d40ff0065659c005f1cf86d3c9"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga794109d40ff0065659c005f1cf86d3c9">FLAC__metadata_object_seektable_insert_point</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned point_num, <a class="el" href="structFLAC____StreamMetadata__SeekPoint.html">FLAC__StreamMetadata_SeekPoint</a> point)</td></tr>
<tr class="separator:ga794109d40ff0065659c005f1cf86d3c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e42ac803f857eaa7814838c49a15c5f"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga8e42ac803f857eaa7814838c49a15c5f">FLAC__metadata_object_seektable_delete_point</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned point_num)</td></tr>
<tr class="separator:ga8e42ac803f857eaa7814838c49a15c5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacd3e1b83fabc1dabccb725b2876c8f53"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gacd3e1b83fabc1dabccb725b2876c8f53">FLAC__metadata_object_seektable_is_legal</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object)</td></tr>
<tr class="separator:gacd3e1b83fabc1dabccb725b2876c8f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6280327ed000ee85846a5533fd40a33b"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga6280327ed000ee85846a5533fd40a33b">FLAC__metadata_object_seektable_template_append_placeholders</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned num)</td></tr>
<tr class="separator:ga6280327ed000ee85846a5533fd40a33b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b3aca4fbebc206cd79f13ac36f653f0"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga0b3aca4fbebc206cd79f13ac36f653f0">FLAC__metadata_object_seektable_template_append_point</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__uint64 sample_number)</td></tr>
<tr class="separator:ga0b3aca4fbebc206cd79f13ac36f653f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac838116fa0e48242651944ab94bab508"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gac838116fa0e48242651944ab94bab508">FLAC__metadata_object_seektable_template_append_points</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__uint64 sample_numbers[], unsigned num)</td></tr>
<tr class="separator:gac838116fa0e48242651944ab94bab508"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7dcbd38a3a71a8aa26e93a6992a8f83e"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga7dcbd38a3a71a8aa26e93a6992a8f83e">FLAC__metadata_object_seektable_template_append_spaced_points</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned num, FLAC__uint64 total_samples)</td></tr>
<tr class="separator:ga7dcbd38a3a71a8aa26e93a6992a8f83e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6bce5ee9332ea070d65482a2c1ce1c2d"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga6bce5ee9332ea070d65482a2c1ce1c2d">FLAC__metadata_object_seektable_template_append_spaced_points_by_samples</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned samples, FLAC__uint64 total_samples)</td></tr>
<tr class="separator:ga6bce5ee9332ea070d65482a2c1ce1c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb0449b639ba5c618826d893c2961260"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gafb0449b639ba5c618826d893c2961260">FLAC__metadata_object_seektable_template_sort</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__bool compact)</td></tr>
<tr class="separator:gafb0449b639ba5c618826d893c2961260"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5cf1a57afab200b4b67730a77d3ee162"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga5cf1a57afab200b4b67730a77d3ee162">FLAC__metadata_object_vorbiscomment_set_vendor_string</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, FLAC__bool copy)</td></tr>
<tr class="separator:ga5cf1a57afab200b4b67730a77d3ee162"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga829152404c9d160c7bc67699dd7f857e"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga829152404c9d160c7bc67699dd7f857e">FLAC__metadata_object_vorbiscomment_resize_comments</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned new_num_comments)</td></tr>
<tr class="separator:ga829152404c9d160c7bc67699dd7f857e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaefadb16fe0fff9600beab0edbac8d226"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaefadb16fe0fff9600beab0edbac8d226">FLAC__metadata_object_vorbiscomment_set_comment</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned comment_num, <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, FLAC__bool copy)</td></tr>
<tr class="separator:gaefadb16fe0fff9600beab0edbac8d226"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga44ec196a99c8cd7d1d50817c8532ddb3"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga44ec196a99c8cd7d1d50817c8532ddb3">FLAC__metadata_object_vorbiscomment_insert_comment</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned comment_num, <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, FLAC__bool copy)</td></tr>
<tr class="separator:ga44ec196a99c8cd7d1d50817c8532ddb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga889b8b9c5bbd1070a1214c3da8b72863"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga889b8b9c5bbd1070a1214c3da8b72863">FLAC__metadata_object_vorbiscomment_append_comment</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, FLAC__bool copy)</td></tr>
<tr class="separator:ga889b8b9c5bbd1070a1214c3da8b72863"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0608308e8c4c09aa610747d8dff90a34"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga0608308e8c4c09aa610747d8dff90a34">FLAC__metadata_object_vorbiscomment_replace_comment</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, FLAC__bool all, FLAC__bool copy)</td></tr>
<tr class="separator:ga0608308e8c4c09aa610747d8dff90a34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe14896322f7d638f5de0c61addd1dc7"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gafe14896322f7d638f5de0c61addd1dc7">FLAC__metadata_object_vorbiscomment_delete_comment</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned comment_num)</td></tr>
<tr class="separator:gafe14896322f7d638f5de0c61addd1dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab644c34515c04630c62a7645fab2947e"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gab644c34515c04630c62a7645fab2947e">FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair</a> (<a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> *entry, const char *field_name, const char *field_value)</td></tr>
<tr class="separator:gab644c34515c04630c62a7645fab2947e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29079764fabda53cb3e890e6d05c8345"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga29079764fabda53cb3e890e6d05c8345">FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair</a> (const <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, char **field_name, char **field_value)</td></tr>
<tr class="separator:ga29079764fabda53cb3e890e6d05c8345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4c32b1055642b11cd77628ac9508ded"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gac4c32b1055642b11cd77628ac9508ded">FLAC__metadata_object_vorbiscomment_entry_matches</a> (const <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> entry, const char *field_name, unsigned field_name_length)</td></tr>
<tr class="separator:gac4c32b1055642b11cd77628ac9508ded"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23d79d11e427e1590f406a7137c8bff2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga23d79d11e427e1590f406a7137c8bff2">FLAC__metadata_object_vorbiscomment_find_entry_from</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned offset, const char *field_name)</td></tr>
<tr class="separator:ga23d79d11e427e1590f406a7137c8bff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga017d743b3200a27b8567ef33592224b8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga017d743b3200a27b8567ef33592224b8">FLAC__metadata_object_vorbiscomment_remove_entry_matching</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, const char *field_name)</td></tr>
<tr class="separator:ga017d743b3200a27b8567ef33592224b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5a3ff5856098c449622ba850684aec75"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga5a3ff5856098c449622ba850684aec75">FLAC__metadata_object_vorbiscomment_remove_entries_matching</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, const char *field_name)</td></tr>
<tr class="separator:ga5a3ff5856098c449622ba850684aec75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe2983a9c09685e34626cab39b3fb52c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gafe2983a9c09685e34626cab39b3fb52c">FLAC__metadata_object_cuesheet_track_new</a> (void)</td></tr>
<tr class="separator:gafe2983a9c09685e34626cab39b3fb52c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1293d6df6daf2d65143d8bb40eed9261"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga1293d6df6daf2d65143d8bb40eed9261">FLAC__metadata_object_cuesheet_track_clone</a> (const <a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *object)</td></tr>
<tr class="separator:ga1293d6df6daf2d65143d8bb40eed9261"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa533fd7b72fa079e783de4b155b241ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaa533fd7b72fa079e783de4b155b241ce">FLAC__metadata_object_cuesheet_track_delete</a> (<a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *object)</td></tr>
<tr class="separator:gaa533fd7b72fa079e783de4b155b241ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga484f21de7d533e4825cf807d29ef0204"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga484f21de7d533e4825cf807d29ef0204">FLAC__metadata_object_cuesheet_track_resize_indices</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num, unsigned new_num_indices)</td></tr>
<tr class="separator:ga484f21de7d533e4825cf807d29ef0204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8be6ad7b27a18c91eb0b91dc305e433"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gae8be6ad7b27a18c91eb0b91dc305e433">FLAC__metadata_object_cuesheet_track_insert_index</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num, unsigned index_num, <a class="el" href="structFLAC____StreamMetadata__CueSheet__Index.html">FLAC__StreamMetadata_CueSheet_Index</a> index)</td></tr>
<tr class="separator:gae8be6ad7b27a18c91eb0b91dc305e433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafd40ef6dcc277f99934deee5367cc627"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gafd40ef6dcc277f99934deee5367cc627">FLAC__metadata_object_cuesheet_track_insert_blank_index</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num, unsigned index_num)</td></tr>
<tr class="separator:gafd40ef6dcc277f99934deee5367cc627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga84584f2244b7d8597b8fec1d81ea5fb8"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga84584f2244b7d8597b8fec1d81ea5fb8">FLAC__metadata_object_cuesheet_track_delete_index</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num, unsigned index_num)</td></tr>
<tr class="separator:ga84584f2244b7d8597b8fec1d81ea5fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac99e38ed08f342665c63913bd0cc33fc"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gac99e38ed08f342665c63913bd0cc33fc">FLAC__metadata_object_cuesheet_resize_tracks</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned new_num_tracks)</td></tr>
<tr class="separator:gac99e38ed08f342665c63913bd0cc33fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa4708c652be442b19227695621b62088"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaa4708c652be442b19227695621b62088">FLAC__metadata_object_cuesheet_set_track</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num, <a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *track, FLAC__bool copy)</td></tr>
<tr class="separator:gaa4708c652be442b19227695621b62088"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa974947ae8ec1c86cbb155e0af7593e9"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaa974947ae8ec1c86cbb155e0af7593e9">FLAC__metadata_object_cuesheet_insert_track</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num, <a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *track, FLAC__bool copy)</td></tr>
<tr class="separator:gaa974947ae8ec1c86cbb155e0af7593e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4a8c0855971e650df3331daf84d3fd1"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gab4a8c0855971e650df3331daf84d3fd1">FLAC__metadata_object_cuesheet_insert_blank_track</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num)</td></tr>
<tr class="separator:gab4a8c0855971e650df3331daf84d3fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae1912dfbc599c79732025fd5a5f279cc"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gae1912dfbc599c79732025fd5a5f279cc">FLAC__metadata_object_cuesheet_delete_track</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, unsigned track_num)</td></tr>
<tr class="separator:gae1912dfbc599c79732025fd5a5f279cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a443d9299ce69694ad59bec4519d7b2"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga1a443d9299ce69694ad59bec4519d7b2">FLAC__metadata_object_cuesheet_is_legal</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__bool check_cd_da_subset, const char **violation)</td></tr>
<tr class="separator:ga1a443d9299ce69694ad59bec4519d7b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff2f825950b3e4dda4c8ddbf8e2f7ecd"><td class="memItemLeft" align="right" valign="top">FLAC__uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#gaff2f825950b3e4dda4c8ddbf8e2f7ecd">FLAC__metadata_object_cuesheet_calculate_cddb_id</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object)</td></tr>
<tr class="separator:gaff2f825950b3e4dda4c8ddbf8e2f7ecd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4511ae9ca994c9f4ab035a3c1aa98f45"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga4511ae9ca994c9f4ab035a3c1aa98f45">FLAC__metadata_object_picture_set_mime_type</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, char *mime_type, FLAC__bool copy)</td></tr>
<tr class="separator:ga4511ae9ca994c9f4ab035a3c1aa98f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga293fe7d8b8b9e49d2414db0925b0f442"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga293fe7d8b8b9e49d2414db0925b0f442">FLAC__metadata_object_picture_set_description</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__byte *description, FLAC__bool copy)</td></tr>
<tr class="separator:ga293fe7d8b8b9e49d2414db0925b0f442"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga00c330534ef8336ed92b30f9e676bb5f"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga00c330534ef8336ed92b30f9e676bb5f">FLAC__metadata_object_picture_set_data</a> (<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy)</td></tr>
<tr class="separator:ga00c330534ef8336ed92b30f9e676bb5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga88268a5186e37d4b98b4df7870561128"><td class="memItemLeft" align="right" valign="top">FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__flac__metadata__object.html#ga88268a5186e37d4b98b4df7870561128">FLAC__metadata_object_picture_is_legal</a> (const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *object, const char **violation)</td></tr>
<tr class="separator:ga88268a5186e37d4b98b4df7870561128"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This module contains methods for manipulating FLAC metadata objects. </p>
<p>Since many are variable length we have to be careful about the memory management. We decree that all pointers to data in the object are owned by the object and memory-managed by the object.</p>
<p>Use the <a class="el" href="group__flac__metadata__object.html#ga5df7bc8c72cafed1391bdc5ffc876e0f">FLAC__metadata_object_new()</a> and <a class="el" href="group__flac__metadata__object.html#ga6b3159744a1e5c4ce9d349fd0ebae800">FLAC__metadata_object_delete()</a> functions to create all instances. When using the FLAC__metadata_object_set_*() functions to set pointers to data, set <em>copy</em> to <code>true</code> to have the function make it's own copy of the data, or to <code>false</code> to give the object ownership of your data. In the latter case your pointer must be freeable by free() and will be free()d when the object is <a class="el" href="group__flac__metadata__object.html#ga6b3159744a1e5c4ce9d349fd0ebae800">FLAC__metadata_object_delete()</a>d. It is legal to pass a null pointer as the data pointer to a FLAC__metadata_object_set_*() function as long as the length argument is 0 and the <em>copy</em> argument is <code>false</code>.</p>
<p>The <a class="el" href="group__flac__metadata__object.html#ga5df7bc8c72cafed1391bdc5ffc876e0f">FLAC__metadata_object_new()</a> and <a class="el" href="group__flac__metadata__object.html#ga29af0ecc2a015ef22289f206bc308d80">FLAC__metadata_object_clone()</a> function will return <code>NULL</code> in the case of a memory allocation error, otherwise a new object. The FLAC__metadata_object_set_*() functions return <code>false</code> in the case of a memory allocation error.</p>
<p>We don't have the convenience of C++ here, so note that the library relies on you to keep the types straight. In other words, if you pass, for example, a FLAC__StreamMetadata* that represents a STREAMINFO block to <a class="el" href="group__flac__metadata__object.html#ga07cd39bbe12f4f4e144e38c5265b997d">FLAC__metadata_object_application_set_data()</a>, you will get an assertion failure.</p>
<p>For convenience the FLAC__metadata_object_vorbiscomment_*() functions maintain a trailing NUL on each Vorbis comment entry. This is not counted toward the length or stored in the stream, but it can make working with plain comments (those that don't contain embedded-NULs in the value) easier. Entries passed into these functions have trailing NULs added if missing, and returned entries are guaranteed to have a trailing NUL.</p>
<p>The FLAC__metadata_object_vorbiscomment_*() functions that take a Vorbis comment entry/name/value will first validate that it complies with the Vorbis comment specification and return false if it does not.</p>
<p>There is no need to recalculate the length field on metadata blocks you have modified. They will be calculated automatically before they are written back to a file. </p>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga5df7bc8c72cafed1391bdc5ffc876e0f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a>* FLAC__metadata_object_new </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__flac__format.html#gac71714ba8ddbbd66d26bb78a427fac01">FLAC__MetadataType</a>&#160;</td>
<td class="paramname"><em>type</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new metadata object instance of the given type.</p>
<p>The object will be "empty"; i.e. values and data pointers will be <code>0</code>, with the exception of FLAC__METADATA_TYPE_VORBIS_COMMENT, which will have the vendor string set (but zero comments).</p>
<p>Do not pass in a value greater than or equal to <em>FLAC__METADATA_TYPE_UNDEFINED</em> unless you really know what you're doing.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>Type of object to create </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__StreamMetadata*</td><td><code>NULL</code> if there was an error allocating memory or the type code is greater than FLAC__MAX_METADATA_TYPE_CODE, else the new instance. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga29af0ecc2a015ef22289f206bc308d80"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a>* FLAC__metadata_object_clone </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a copy of an existing metadata object.</p>
<p>The copy is a "deep" copy, i.e. dynamically allocated data within the object is also copied. The caller takes ownership of the new block and is responsible for freeing it with <a class="el" href="group__flac__metadata__object.html#ga6b3159744a1e5c4ce9d349fd0ebae800">FLAC__metadata_object_delete()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>Pointer to object to copy. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__StreamMetadata*</td><td><code>NULL</code> if there was an error allocating memory, else the new instance. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6b3159744a1e5c4ce9d349fd0ebae800"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FLAC__metadata_object_delete </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Free a metadata object. Deletes the object pointed to by <em>object</em>.</p>
<p>The delete is a "deep" delete, i.e. dynamically allocated data within the object is also deleted.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing object. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<a class="anchor" id="ga6853bcafe731b1db37105d49f3085349"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_is_equal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>block1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>block2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compares two metadata objects.</p>
<p>The compare is "deep", i.e. dynamically allocated data within the object is also compared.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">block1</td><td>A pointer to an existing object. </td></tr>
<tr><td class="paramname">block2</td><td>A pointer to an existing object. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;block1 != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;block2 != NULL </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>true</code> if objects are identical, else <code>false</code>. </td></tr>
</table>
</dd>
</dl>
<p>Referenced by <a class="el" href="group__flacpp__metadata__object.html#ga6737ae25a19d76b88d9b2b4b7070d0cb">FLAC::Metadata::Prototype::operator==()</a>.</p>
</div>
</div>
<a class="anchor" id="ga07cd39bbe12f4f4e144e38c5265b997d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_application_set_data </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__byte *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the application data of an APPLICATION block.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the data is stored; otherwise, the object takes ownership of the pointer. The existing data will be freed if this function is successful, otherwise the original data will remain if <em>copy</em> is <code>true</code> and malloc() fails.</p>
<dl class="section note"><dt>Note</dt><dd>It is safe to pass a const pointer to <em>data</em> if <em>copy</em> is <code>true</code>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing APPLICATION object. </td></tr>
<tr><td class="paramname">data</td><td>A pointer to the data to set. </td></tr>
<tr><td class="paramname">length</td><td>The length of <em>data</em> in bytes. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_APPLICATION </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (data != NULL &amp;&amp; length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(data == NULL &amp;&amp; length == 0 &amp;&amp; copy == false) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaffa16bae5e3683c983dc137fd56f0c26"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_resize_points </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>new_num_points</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Resize the seekpoint array.</p>
<p>If the size shrinks, elements will truncated; if it grows, new placeholder points will be added to the end.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">new_num_points</td><td>The desired length of the array; may be <code>0</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (object-&gt;data.seek_table.points == NULL &amp;&amp; object-&gt;data.seek_table.num_points == 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(object-&gt;data.seek_table.points != NULL &amp;&amp; object-&gt;data.seek_table.num_points &gt; 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation error, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa1a69eb95a3c17aa973466589e85f3c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FLAC__metadata_object_seektable_set_point </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>point_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__SeekPoint.html">FLAC__StreamMetadata_SeekPoint</a>&#160;</td>
<td class="paramname"><em>point</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a seekpoint in a seektable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">point_num</td><td>Index into seekpoint array to set. </td></tr>
<tr><td class="paramname">point</td><td>The point to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.seek_table.num_points &gt; point_num </div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<a class="anchor" id="ga794109d40ff0065659c005f1cf86d3c9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_insert_point </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>point_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__SeekPoint.html">FLAC__StreamMetadata_SeekPoint</a>&#160;</td>
<td class="paramname"><em>point</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a seekpoint into a seektable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">point_num</td><td>Index into seekpoint array to set. </td></tr>
<tr><td class="paramname">point</td><td>The point to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.seek_table.num_points &gt;= point_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation error, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga8e42ac803f857eaa7814838c49a15c5f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_delete_point </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>point_num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a seekpoint from a seektable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">point_num</td><td>Index into seekpoint array to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.seek_table.num_points &gt; point_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation error, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gacd3e1b83fabc1dabccb725b2876c8f53"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_is_legal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check a seektable to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the seektable.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if seek table is illegal, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6280327ed000ee85846a5533fd40a33b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a number of placeholder points to the end of a seek table.</p>
<dl class="section note"><dt>Note</dt><dd>As with the other ..._seektable_template_... functions, you should call <a class="el" href="group__flac__metadata__object.html#gafb0449b639ba5c618826d893c2961260">FLAC__metadata_object_seektable_template_sort()</a> when finished to make the seek table legal.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">num</td><td>The number of placeholder points to append. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga0b3aca4fbebc206cd79f13ac36f653f0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_template_append_point </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__uint64&#160;</td>
<td class="paramname"><em>sample_number</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a specific seek point template to the end of a seek table.</p>
<dl class="section note"><dt>Note</dt><dd>As with the other ..._seektable_template_... functions, you should call <a class="el" href="group__flac__metadata__object.html#gafb0449b639ba5c618826d893c2961260">FLAC__metadata_object_seektable_template_sort()</a> when finished to make the seek table legal.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">sample_number</td><td>The sample number of the seek point template. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac838116fa0e48242651944ab94bab508"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_template_append_points </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__uint64&#160;</td>
<td class="paramname"><em>sample_numbers</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Append specific seek point templates to the end of a seek table.</p>
<dl class="section note"><dt>Note</dt><dd>As with the other ..._seektable_template_... functions, you should call <a class="el" href="group__flac__metadata__object.html#gafb0449b639ba5c618826d893c2961260">FLAC__metadata_object_seektable_template_sort()</a> when finished to make the seek table legal.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">sample_numbers</td><td>An array of sample numbers for the seek points. </td></tr>
<tr><td class="paramname">num</td><td>The number of seek point templates to append. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7dcbd38a3a71a8aa26e93a6992a8f83e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__uint64&#160;</td>
<td class="paramname"><em>total_samples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a set of evenly-spaced seek point templates to the end of a seek table.</p>
<dl class="section note"><dt>Note</dt><dd>As with the other ..._seektable_template_... functions, you should call <a class="el" href="group__flac__metadata__object.html#gafb0449b639ba5c618826d893c2961260">FLAC__metadata_object_seektable_template_sort()</a> when finished to make the seek table legal.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">num</td><td>The number of placeholder points to append. </td></tr>
<tr><td class="paramname">total_samples</td><td>The total number of samples to be encoded; the seekpoints will be spaced approximately <em>total_samples</em> / <em>num</em> samples apart. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;total_samples &gt; 0 </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6bce5ee9332ea070d65482a2c1ce1c2d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>samples</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__uint64&#160;</td>
<td class="paramname"><em>total_samples</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Append a set of evenly-spaced seek point templates to the end of a seek table.</p>
<dl class="section note"><dt>Note</dt><dd>As with the other ..._seektable_template_... functions, you should call <a class="el" href="group__flac__metadata__object.html#gafb0449b639ba5c618826d893c2961260">FLAC__metadata_object_seektable_template_sort()</a> when finished to make the seek table legal.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing SEEKTABLE object. </td></tr>
<tr><td class="paramname">samples</td><td>The number of samples apart to space the placeholder points. The first point will be at sample <code>0</code>, the second at sample <em>samples</em>, then 2*<em>samples</em>, and so on. As long as <em>samples</em> and <em>total_samples</em> are greater than <code>0</code>, there will always be at least one seekpoint at sample <code>0</code>. </td></tr>
<tr><td class="paramname">total_samples</td><td>The total number of samples to be encoded; the seekpoints will be spaced <em>samples</em> samples apart. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;samples &gt; 0 </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;total_samples &gt; 0 </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafb0449b639ba5c618826d893c2961260"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_seektable_template_sort </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>compact</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sort a seek table's seek points according to the format specification, removing duplicates.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to a seek table to be sorted. </td></tr>
<tr><td class="paramname">compact</td><td>If <code>false</code>, behaves like <a class="el" href="group__flac__format.html#ga64dede2811616c7aa41caaed9c855cd4">FLAC__format_seektable_sort()</a>. If <code>true</code>, duplicates are deleted and the seek table is shrunk appropriately; the number of placeholder points present in the seek table will be the same after the call as before. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_SEEKTABLE </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if realloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5cf1a57afab200b4b67730a77d3ee162"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the vendor string in a VORBIS_COMMENT block.</p>
<p>For convenience, a trailing NUL is added to the entry if it doesn't have one already.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the entry is stored; otherwise, the object takes ownership of the <code>entry.entry</code> pointer.</p>
<dl class="section note"><dt>Note</dt><dd>If this function returns <code>false</code>, the caller still owns the pointer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">entry</td><td>The entry to set the vendor string to. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (entry.entry != NULL &amp;&amp; entry.length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(entry.entry == NULL &amp;&amp; entry.length == 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails or <em>entry</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga829152404c9d160c7bc67699dd7f857e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>new_num_comments</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Resize the comment array.</p>
<p>If the size shrinks, elements will truncated; if it grows, new empty fields will be added to the end.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">new_num_comments</td><td>The desired length of the array; may be <code>0</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (object-&gt;data.vorbis_comment.comments == NULL &amp;&amp; object-&gt;data.vorbis_comment.num_comments == 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(object-&gt;data.vorbis_comment.comments != NULL &amp;&amp; object-&gt;data.vorbis_comment.num_comments &gt; 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaefadb16fe0fff9600beab0edbac8d226"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>comment_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets a comment in a VORBIS_COMMENT block.</p>
<p>For convenience, a trailing NUL is added to the entry if it doesn't have one already.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the entry is stored; otherwise, the object takes ownership of the <code>entry.entry</code> pointer.</p>
<dl class="section note"><dt>Note</dt><dd>If this function returns <code>false</code>, the caller still owns the pointer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">comment_num</td><td>Index into comment array to set. </td></tr>
<tr><td class="paramname">entry</td><td>The entry to set the comment to. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;comment_num &lt; object-&gt;data.vorbis_comment.num_comments </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (entry.entry != NULL &amp;&amp; entry.length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(entry.entry == NULL &amp;&amp; entry.length == 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails or <em>entry</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga44ec196a99c8cd7d1d50817c8532ddb3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>comment_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a comment in a VORBIS_COMMENT block at the given index.</p>
<p>For convenience, a trailing NUL is added to the entry if it doesn't have one already.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the entry is stored; otherwise, the object takes ownership of the <code>entry.entry</code> pointer.</p>
<dl class="section note"><dt>Note</dt><dd>If this function returns <code>false</code>, the caller still owns the pointer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">comment_num</td><td>The index at which to insert the comment. The comments at and after <em>comment_num</em> move right one position. To append a comment to the end, set <em>comment_num</em> to <code>object-&gt;data.vorbis_comment.num_comments</code> . </td></tr>
<tr><td class="paramname">entry</td><td>The comment to insert. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.vorbis_comment.num_comments &gt;= comment_num </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (entry.entry != NULL &amp;&amp; entry.length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(entry.entry == NULL &amp;&amp; entry.length == 0 &amp;&amp; copy == false) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails or <em>entry</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga889b8b9c5bbd1070a1214c3da8b72863"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Appends a comment to a VORBIS_COMMENT block.</p>
<p>For convenience, a trailing NUL is added to the entry if it doesn't have one already.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the entry is stored; otherwise, the object takes ownership of the <code>entry.entry</code> pointer.</p>
<dl class="section note"><dt>Note</dt><dd>If this function returns <code>false</code>, the caller still owns the pointer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">entry</td><td>The comment to insert. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (entry.entry != NULL &amp;&amp; entry.length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(entry.entry == NULL &amp;&amp; entry.length == 0 &amp;&amp; copy == false) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails or <em>entry</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga0608308e8c4c09aa610747d8dff90a34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>all</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Replaces comments in a VORBIS_COMMENT block with a new one.</p>
<p>For convenience, a trailing NUL is added to the entry if it doesn't have one already.</p>
<p>Depending on the the value of <em>all</em>, either all or just the first comment whose field name(s) match the given entry's name will be replaced by the given entry. If no comments match, <em>entry</em> will simply be appended.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the entry is stored; otherwise, the object takes ownership of the <code>entry.entry</code> pointer.</p>
<dl class="section note"><dt>Note</dt><dd>If this function returns <code>false</code>, the caller still owns the pointer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">entry</td><td>The comment to insert. </td></tr>
<tr><td class="paramname">all</td><td>If <code>true</code>, all comments whose field name matches <em>entry's</em> field name will be removed, and <em>entry</em> will be inserted at the position of the first matching comment. If <code>false</code>, only the first comment whose field name matches <em>entry's</em> field name will be replaced with <em>entry</em>. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (entry.entry != NULL &amp;&amp; entry.length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(entry.entry == NULL &amp;&amp; entry.length == 0 &amp;&amp; copy == false) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails or <em>entry</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafe14896322f7d638f5de0c61addd1dc7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>comment_num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a comment in a VORBIS_COMMENT block at the given index.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">comment_num</td><td>The index of the comment to delete. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.vorbis_comment.num_comments &gt; comment_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if realloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab644c34515c04630c62a7645fab2947e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a> *&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>field_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>field_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a Vorbis comment entry from NUL-terminated name and value strings.</p>
<p>On return, the filled-in <em>entry-&gt;entry</em> pointer will point to malloc()ed memory and shall be owned by the caller. For convenience the entry will have a terminating NUL.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entry</td><td>A pointer to a Vorbis comment entry. The entry's <code>entry</code> pointer should not point to allocated memory as it will be overwritten. </td></tr>
<tr><td class="paramname">field_name</td><td>The field name in ASCII, <code>NUL</code> terminated. </td></tr>
<tr><td class="paramname">field_value</td><td>The field value in UTF-8, <code>NUL</code> terminated. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;entry != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;field_name != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;field_value != NULL </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if malloc() fails, or if <em>field_name</em> or <em>field_value</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga29079764fabda53cb3e890e6d05c8345"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>field_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>field_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Splits a Vorbis comment entry into NUL-terminated name and value strings.</p>
<p>The returned pointers to name and value will be allocated by malloc() and shall be owned by the caller.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entry</td><td>An existing Vorbis comment entry. </td></tr>
<tr><td class="paramname">field_name</td><td>The address of where the returned pointer to the field name will be stored. </td></tr>
<tr><td class="paramname">field_value</td><td>The address of where the returned pointer to the field value will be stored. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;(entry.entry != NULL &amp;&amp; entry.length &gt; 0) </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;memchr(entry.entry, &#39;=&#39;, entry.length) != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;field_name != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;field_value != NULL </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation fails or <em>entry</em> does not comply with the Vorbis comment specification, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac4c32b1055642b11cd77628ac9508ded"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata__VorbisComment__Entry.html">FLAC__StreamMetadata_VorbisComment_Entry</a>&#160;</td>
<td class="paramname"><em>entry</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>field_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>field_name_length</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if the given Vorbis comment entry's field name matches the given field name.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entry</td><td>An existing Vorbis comment entry. </td></tr>
<tr><td class="paramname">field_name</td><td>The field name to check. </td></tr>
<tr><td class="paramname">field_name_length</td><td>The length of <em>field_name</em>, not including the terminating <code>NUL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;(entry.entry != NULL &amp;&amp; entry.length &gt; 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>true</code> if the field names match, else <code>false</code> </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga23d79d11e427e1590f406a7137c8bff2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FLAC__metadata_object_vorbiscomment_find_entry_from </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>field_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Find a Vorbis comment with the given field name.</p>
<p>The search begins at entry number <em>offset</em>; use an offset of 0 to search from the beginning of the comment array.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">offset</td><td>The offset into the comment array from where to start the search. </td></tr>
<tr><td class="paramname">field_name</td><td>The field name of the comment to find. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;field_name != NULL </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">int</td><td>The offset in the comment array of the first comment whose field name matches <em>field_name</em>, or <code>-1</code> if no match was found. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga017d743b3200a27b8567ef33592224b8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FLAC__metadata_object_vorbiscomment_remove_entry_matching </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>field_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove first Vorbis comment matching the given field name.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">field_name</td><td>The field name of comment to delete. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">int</td><td><code>-1</code> for memory allocation error, <code>0</code> for no matching entries, <code>1</code> for one matching entry deleted. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5a3ff5856098c449622ba850684aec75"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int FLAC__metadata_object_vorbiscomment_remove_entries_matching </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>field_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove all Vorbis comments matching the given field name.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing VORBIS_COMMENT object. </td></tr>
<tr><td class="paramname">field_name</td><td>The field name of comments to delete. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_VORBIS_COMMENT </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">int</td><td><code>-1</code> for memory allocation error, <code>0</code> for no matching entries, else the number of matching entries deleted. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafe2983a9c09685e34626cab39b3fb52c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a>* FLAC__metadata_object_cuesheet_track_new </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new CUESHEET track instance.</p>
<p>The object will be "empty"; i.e. values and data pointers will be <code>0</code>.</p>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__StreamMetadata_CueSheet_Track*</td><td><code>NULL</code> if there was an error allocating memory, else the new instance. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1293d6df6daf2d65143d8bb40eed9261"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a>* FLAC__metadata_object_cuesheet_track_clone </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *&#160;</td>
<td class="paramname"><em>object</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a copy of an existing CUESHEET track object.</p>
<p>The copy is a "deep" copy, i.e. dynamically allocated data within the object is also copied. The caller takes ownership of the new object and is responsible for freeing it with <a class="el" href="group__flac__metadata__object.html#gaa533fd7b72fa079e783de4b155b241ce">FLAC__metadata_object_cuesheet_track_delete()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>Pointer to object to copy. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__StreamMetadata_CueSheet_Track*</td><td><code>NULL</code> if there was an error allocating memory, else the new instance. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa533fd7b72fa079e783de4b155b241ce"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void FLAC__metadata_object_cuesheet_track_delete </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *&#160;</td>
<td class="paramname"><em>object</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a CUESHEET track object</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET track object. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<a class="anchor" id="ga484f21de7d533e4825cf807d29ef0204"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>new_num_indices</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Resize a track's index point array.</p>
<p>If the size shrinks, elements will truncated; if it grows, new blank indices will be added to the end.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index of the track to modify. NOTE: this is not necessarily the same as the track's <em>number</em> field. </td></tr>
<tr><td class="paramname">new_num_indices</td><td>The desired length of the array; may be <code>0</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt; track_num </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (object-&gt;data.cue_sheet.tracks[track_num].indices == NULL &amp;&amp; object-&gt;data.cue_sheet.tracks[track_num].num_indices == 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(object-&gt;data.cue_sheet.tracks[track_num].indices != NULL &amp;&amp; object-&gt;data.cue_sheet.tracks[track_num].num_indices &gt; 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation error, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae8be6ad7b27a18c91eb0b91dc305e433"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>index_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Index.html">FLAC__StreamMetadata_CueSheet_Index</a>&#160;</td>
<td class="paramname"><em>index</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert an index point in a CUESHEET track at the given index.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index of the track to modify. NOTE: this is not necessarily the same as the track's <em>number</em> field. </td></tr>
<tr><td class="paramname">index_num</td><td>The index into the track's index array at which to insert the index point. NOTE: this is not necessarily the same as the index point's <em>number</em> field. The indices at and after <em>index_num</em> move right one position. To append an index point to the end, set <em>index_num</em> to <code>object-&gt;data.cue_sheet.tracks</code>[track_num].num_indices . </td></tr>
<tr><td class="paramname">index</td><td>The index point to insert. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt; track_num </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.tracks[track_num].num_indices &gt;= index_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if realloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafd40ef6dcc277f99934deee5367cc627"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>index_num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a blank index point in a CUESHEET track at the given index.</p>
<p>A blank index point is one in which all field values are zero.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index of the track to modify. NOTE: this is not necessarily the same as the track's <em>number</em> field. </td></tr>
<tr><td class="paramname">index_num</td><td>The index into the track's index array at which to insert the index point. NOTE: this is not necessarily the same as the index point's <em>number</em> field. The indices at and after <em>index_num</em> move right one position. To append an index point to the end, set <em>index_num</em> to <code>object-&gt;data.cue_sheet.tracks</code>[track_num].num_indices . </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt; track_num </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.tracks[track_num].num_indices &gt;= index_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if realloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga84584f2244b7d8597b8fec1d81ea5fb8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>index_num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete an index point in a CUESHEET track at the given index.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index into the track array of the track to modify. NOTE: this is not necessarily the same as the track's <em>number</em> field. </td></tr>
<tr><td class="paramname">index_num</td><td>The index into the track's index array of the index to delete. NOTE: this is not necessarily the same as the index's <em>number</em> field. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt; track_num </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.tracks[track_num].num_indices &gt; index_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if realloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac99e38ed08f342665c63913bd0cc33fc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>new_num_tracks</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Resize the track array.</p>
<p>If the size shrinks, elements will truncated; if it grows, new blank tracks will be added to the end.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">new_num_tracks</td><td>The desired length of the array; may be <code>0</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (object-&gt;data.cue_sheet.tracks == NULL &amp;&amp; object-&gt;data.cue_sheet.num_tracks == 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(object-&gt;data.cue_sheet.tracks != NULL &amp;&amp; object-&gt;data.cue_sheet.num_tracks &gt; 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if memory allocation error, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa4708c652be442b19227695621b62088"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_set_track </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *&#160;</td>
<td class="paramname"><em>track</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets a track in a CUESHEET block.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the track is stored; otherwise, the object takes ownership of the <em>track</em> pointer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>Index into track array to set. NOTE: this is not necessarily the same as the track's <em>number</em> field. </td></tr>
<tr><td class="paramname">track</td><td>The track to set the track to. You may safely pass in a const pointer if <em>copy</em> is <code>true</code>. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;track_num &lt; object-&gt;data.cue_sheet.num_tracks </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (track-&gt;indices != NULL &amp;&amp; track-&gt;num_indices &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(track-&gt;indices == NULL &amp;&amp; track-&gt;num_indices == 0) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa974947ae8ec1c86cbb155e0af7593e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_insert_track </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata__CueSheet__Track.html">FLAC__StreamMetadata_CueSheet_Track</a> *&#160;</td>
<td class="paramname"><em>track</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a track in a CUESHEET block at the given index.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the track is stored; otherwise, the object takes ownership of the <em>track</em> pointer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index at which to insert the track. NOTE: this is not necessarily the same as the track's <em>number</em> field. The tracks at and after <em>track_num</em> move right one position. To append a track to the end, set <em>track_num</em> to <code>object-&gt;data.cue_sheet.num_tracks</code> . </td></tr>
<tr><td class="paramname">track</td><td>The track to insert. You may safely pass in a const pointer if <em>copy</em> is <code>true</code>. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt;= track_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab4a8c0855971e650df3331daf84d3fd1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert a blank track in a CUESHEET block at the given index.</p>
<p>A blank track is one in which all field values are zero.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index at which to insert the track. NOTE: this is not necessarily the same as the track's <em>number</em> field. The tracks at and after <em>track_num</em> move right one position. To append a track to the end, set <em>track_num</em> to <code>object-&gt;data.cue_sheet.num_tracks</code> . </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt;= track_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae1912dfbc599c79732025fd5a5f279cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_delete_track </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>track_num</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a track in a CUESHEET block at the given index.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">track_num</td><td>The index into the track array of the track to delete. NOTE: this is not necessarily the same as the track's <em>number</em> field. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;data.cue_sheet.num_tracks &gt; track_num </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if realloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1a443d9299ce69694ad59bec4519d7b2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_cuesheet_is_legal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>check_cd_da_subset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>violation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check a cue sheet to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the cue sheet.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
<tr><td class="paramname">check_cd_da_subset</td><td>If <code>true</code>, check CUESHEET against more stringent requirements for a CD-DA (audio) disc. </td></tr>
<tr><td class="paramname">violation</td><td>Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. <em>violation</em> may be <code>NULL</code> if you don't need the returned string. Do not free the returned string; it will always point to static data. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if cue sheet is illegal, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaff2f825950b3e4dda4c8ddbf8e2f7ecd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate and return the CDDB/freedb ID for a cue sheet. The function assumes the cue sheet corresponds to a CD; the result is undefined if the cuesheet's is_cd bit is not set.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing CUESHEET object. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_CUESHEET </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__uint32</td><td>The unsigned integer representation of the CDDB/freedb ID </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4511ae9ca994c9f4ab035a3c1aa98f45"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_picture_set_mime_type </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>mime_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the MIME type of a PICTURE block.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the string is stored; otherwise, the object takes ownership of the pointer. The existing string will be freed if this function is successful, otherwise the original string will remain if <em>copy</em> is <code>true</code> and malloc() fails.</p>
<dl class="section note"><dt>Note</dt><dd>It is safe to pass a const pointer to <em>mime_type</em> if <em>copy</em> is <code>true</code>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing PICTURE object. </td></tr>
<tr><td class="paramname">mime_type</td><td>A pointer to the MIME type string. The string must be ASCII characters 0x20-0x7e, NUL-terminated. No validation is done. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_PICTURE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;(mime_type != NULL) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga293fe7d8b8b9e49d2414db0925b0f442"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_picture_set_description </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__byte *&#160;</td>
<td class="paramname"><em>description</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the description of a PICTURE block.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the string is stored; otherwise, the object takes ownership of the pointer. The existing string will be freed if this function is successful, otherwise the original string will remain if <em>copy</em> is <code>true</code> and malloc() fails.</p>
<dl class="section note"><dt>Note</dt><dd>It is safe to pass a const pointer to <em>description</em> if <em>copy</em> is <code>true</code>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing PICTURE object. </td></tr>
<tr><td class="paramname">description</td><td>A pointer to the description string. The string must be valid UTF-8, NUL-terminated. No validation is done. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_PICTURE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;(description != NULL) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga00c330534ef8336ed92b30f9e676bb5f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_picture_set_data </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__byte *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__uint32&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">FLAC__bool&#160;</td>
<td class="paramname"><em>copy</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the picture data of a PICTURE block.</p>
<p>If <em>copy</em> is <code>true</code>, a copy of the data is stored; otherwise, the object takes ownership of the pointer. Also sets the <em>data_length</em> field of the metadata object to what is passed in as the <em>length</em> parameter. The existing data will be freed if this function is successful, otherwise the original data and data_length will remain if <em>copy</em> is <code>true</code> and malloc() fails.</p>
<dl class="section note"><dt>Note</dt><dd>It is safe to pass a const pointer to <em>data</em> if <em>copy</em> is <code>true</code>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to an existing PICTURE object. </td></tr>
<tr><td class="paramname">data</td><td>A pointer to the data to set. </td></tr>
<tr><td class="paramname">length</td><td>The length of <em>data</em> in bytes. </td></tr>
<tr><td class="paramname">copy</td><td>See above. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_PICTURE </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160; (data != NULL &amp;&amp; length &gt; 0) ||</div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;(data == NULL &amp;&amp; length == 0 &amp;&amp; copy == false) </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if <em>copy</em> is <code>true</code> and malloc() fails, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga88268a5186e37d4b98b4df7870561128"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FLAC__bool FLAC__metadata_object_picture_is_legal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>violation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check a PICTURE block to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the PICTURE block.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">object</td><td>A pointer to existing PICTURE block to be checked. </td></tr>
<tr><td class="paramname">violation</td><td>Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. <em>violation</em> may be <code>NULL</code> if you don't need the returned string. Do not free the returned string; it will always point to static data. </td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Assertions:</dt><dd><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object != NULL </div>
</div><!-- fragment --> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;object-&gt;type == FLAC__METADATA_TYPE_PICTURE </div>
</div><!-- fragment --> </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">FLAC__bool</td><td><code>false</code> if PICTURE block is illegal, else <code>true</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<hr size="1">
<div class="copyright">
<!-- @@@ oh so hacky -->
<table>
<tr>
<td align="left">
Copyright (c) 2000-2009 Josh Coalson
Copyright (c) 2011-2014 Xiph.Org Foundation
</td>
<td width="1%" align="right">
<a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=13478&amp;type=1" width="88" height="31" border="0" alt="SourceForge.net Logo" /></a>
</td>
</tr>
</table>
</div>
<!-- Copyright (c) 2000-2009 Josh Coalson -->
<!-- Copyright (c) 2011-2014 Xiph.Org Foundation -->
<!-- Permission is granted to copy, distribute and/or modify this document -->
<!-- under the terms of the GNU Free Documentation License, Version 1.1 -->
<!-- or any later version published by the Free Software Foundation; -->
<!-- with no invariant sections. -->
<!-- A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html -->
</body>
</html>