~ubuntu-branches/ubuntu/feisty/flac/feisty-security

« back to all changes in this revision

Viewing changes to include/FLAC/metadata.h

  • Committer: Bazaar Package Importer
  • Author(s): Tollef Fog Heen
  • Date: 2005-11-10 12:55:33 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20051110125533-2fmlml8wnb06r5vg
Tags: 1.1.2-3ubuntu1
* Merge with Debian
  - We did the C++ transition earlier than Debian, so add c2 suffix to
    liboggflac++ and libflac++

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* libFLAC - Free Lossless Audio Codec library
2
 
 * Copyright (C) 2001,2002,2003,2004  Josh Coalson
 
2
 * Copyright (C) 2001,2002,2003,2004,2005  Josh Coalson
3
3
 *
4
4
 * Redistribution and use in source and binary forms, with or without
5
5
 * modification, are permitted provided that the following conditions
1087
1087
 * FLAC__metadata_object_application_set_data(), you will get an assertion
1088
1088
 * failure.
1089
1089
 *
 
1090
 * For convenience the FLAC__metadata_object_vorbiscomment_*() functions
 
1091
 * maintain a trailing NUL on each Vorbis comment entry.  This is not counted
 
1092
 * toward the length or stored in the stream, but it can make working with plain
 
1093
 * comments (those that don't contain embedded-NULs in the value) easier.
 
1094
 * Entries passed into these functions have trailing NULs added if missing, and
 
1095
 * returned entries are guaranteed to have a trailing NUL.
 
1096
 *
 
1097
 * The FLAC__metadata_object_vorbiscomment_*() functions that take a Vorbis
 
1098
 * comment entry/name/value will first validate that it complies with the Vorbis
 
1099
 * comment specification and return false if it does not.
 
1100
 *
1090
1101
 * There is no need to recalculate the length field on metadata blocks you
1091
1102
 * have modified.  They will be calculated automatically before they  are
1092
1103
 * written back to a file.
1155
1166
/** Sets the application data of an APPLICATION block.
1156
1167
 *
1157
1168
 *  If \a copy is \c true, a copy of the data is stored; otherwise, the object
1158
 
 *  takes ownership of the pointer.  Returns \c false if \a copy == \c true
1159
 
 *  and malloc fails.
 
1169
 *  takes ownership of the pointer.
1160
1170
 *
1161
1171
 * \param object  A pointer to an existing APPLICATION object.
1162
1172
 * \param data    A pointer to the data to set.
1168
1178
 *    \code (data != NULL && length > 0) ||
1169
1179
 * (data == NULL && length == 0 && copy == false) \endcode
1170
1180
 * \retval FLAC__bool
1171
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1181
 *    \c false if \a copy is \c true and malloc() fails, else \c true.
1172
1182
 */
1173
1183
FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy);
1174
1184
 
1327
1337
 *    \code object != NULL \endcode
1328
1338
 *    \code object->type == FLAC__METADATA_TYPE_SEEKTABLE \endcode
1329
1339
 * \retval FLAC__bool
1330
 
 *    \c false if realloc fails, else \c true.
 
1340
 *    \c false if realloc() fails, else \c true.
1331
1341
 */
1332
1342
FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact);
1333
1343
 
1334
1344
/** Sets the vendor string in a VORBIS_COMMENT block.
1335
1345
 *
 
1346
 *  For convenience, a trailing NUL is added to the entry if it doesn't have
 
1347
 *  one already.
 
1348
 *
1336
1349
 *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
1337
 
 *  takes ownership of the \c entry->entry pointer.  Returns \c false if
1338
 
 *  \a copy == \c true and malloc fails.
 
1350
 *  takes ownership of the \c entry.entry pointer.
 
1351
 *
 
1352
 *  \note If this function returns \c false, the caller still owns the
 
1353
 *  pointer.
1339
1354
 *
1340
1355
 * \param object  A pointer to an existing VORBIS_COMMENT object.
1341
1356
 * \param entry   The entry to set the vendor string to.
1343
1358
 * \assert
1344
1359
 *    \code object != NULL \endcode
1345
1360
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
1346
 
 *    \code (entry->entry != NULL && entry->length > 0) ||
1347
 
 * (entry->entry == NULL && entry->length == 0) \endcode
 
1361
 *    \code (entry.entry != NULL && entry.length > 0) ||
 
1362
 * (entry.entry == NULL && entry.length == 0) \endcode
1348
1363
 * \retval FLAC__bool
1349
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1364
 *    \c false if memory allocation fails or \a entry does not comply with the
 
1365
 *    Vorbis comment specification, else \c true.
1350
1366
 */
1351
1367
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
1352
1368
 
1363
1379
 *    \code (object->data.vorbis_comment.comments == NULL && object->data.vorbis_comment.num_comments == 0) ||
1364
1380
 * (object->data.vorbis_comment.comments != NULL && object->data.vorbis_comment.num_comments > 0) \endcode
1365
1381
 * \retval FLAC__bool
1366
 
 *    \c false if memory allocation error, else \c true.
 
1382
 *    \c false if memory allocation fails, else \c true.
1367
1383
 */
1368
1384
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments);
1369
1385
 
1370
1386
/** Sets a comment in a VORBIS_COMMENT block.
1371
1387
 *
 
1388
 *  For convenience, a trailing NUL is added to the entry if it doesn't have
 
1389
 *  one already.
 
1390
 *
1372
1391
 *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
1373
 
 *  takes ownership of the \c entry->entry pointer.  Returns \c false if
1374
 
 *  \a copy == \c true and malloc fails.
 
1392
 *  takes ownership of the \c entry.entry pointer.
 
1393
 *
 
1394
 *  \note If this function returns \c false, the caller still owns the
 
1395
 *  pointer.
1375
1396
 *
1376
1397
 * \param object       A pointer to an existing VORBIS_COMMENT object.
1377
1398
 * \param comment_num  Index into comment array to set.
1381
1402
 *    \code object != NULL \endcode
1382
1403
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
1383
1404
 *    \code comment_num < object->data.vorbis_comment.num_comments \endcode
1384
 
 *    \code (entry->entry != NULL && entry->length > 0) ||
1385
 
 * (entry->entry == NULL && entry->length == 0) \endcode
 
1405
 *    \code (entry.entry != NULL && entry.length > 0) ||
 
1406
 * (entry.entry == NULL && entry.length == 0) \endcode
1386
1407
 * \retval FLAC__bool
1387
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1408
 *    \c false if memory allocation fails or \a entry does not comply with the
 
1409
 *    Vorbis comment specification, else \c true.
1388
1410
 */
1389
1411
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
1390
1412
 
1391
1413
/** Insert a comment in a VORBIS_COMMENT block at the given index.
1392
1414
 *
 
1415
 *  For convenience, a trailing NUL is added to the entry if it doesn't have
 
1416
 *  one already.
 
1417
 *
1393
1418
 *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
1394
 
 *  takes ownership of the \c entry->entry pointer.  Returns \c false if
1395
 
 *  \a copy == \c true and malloc fails.
 
1419
 *  takes ownership of the \c entry.entry pointer.
 
1420
 *
 
1421
 *  \note If this function returns \c false, the caller still owns the
 
1422
 *  pointer.
1396
1423
 *
1397
1424
 * \param object       A pointer to an existing VORBIS_COMMENT object.
1398
1425
 * \param comment_num  The index at which to insert the comment.  The comments
1405
1432
 *    \code object != NULL \endcode
1406
1433
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
1407
1434
 *    \code object->data.vorbis_comment.num_comments >= comment_num \endcode
1408
 
 *    \code (entry->entry != NULL && entry->length > 0) ||
1409
 
 * (entry->entry == NULL && entry->length == 0 && copy == false) \endcode
 
1435
 *    \code (entry.entry != NULL && entry.length > 0) ||
 
1436
 * (entry.entry == NULL && entry.length == 0 && copy == false) \endcode
1410
1437
 * \retval FLAC__bool
1411
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1438
 *    \c false if memory allocation fails or \a entry does not comply with the
 
1439
 *    Vorbis comment specification, else \c true.
1412
1440
 */
1413
1441
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
1414
1442
 
 
1443
/** Appends a comment to a VORBIS_COMMENT block.
 
1444
 *
 
1445
 *  For convenience, a trailing NUL is added to the entry if it doesn't have
 
1446
 *  one already.
 
1447
 *
 
1448
 *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
 
1449
 *  takes ownership of the \c entry.entry pointer.
 
1450
 *
 
1451
 *  \note If this function returns \c false, the caller still owns the
 
1452
 *  pointer.
 
1453
 *
 
1454
 * \param object       A pointer to an existing VORBIS_COMMENT object.
 
1455
 * \param entry        The comment to insert.
 
1456
 * \param copy         See above.
 
1457
 * \assert
 
1458
 *    \code object != NULL \endcode
 
1459
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
 
1460
 *    \code (entry.entry != NULL && entry.length > 0) ||
 
1461
 * (entry.entry == NULL && entry.length == 0 && copy == false) \endcode
 
1462
 * \retval FLAC__bool
 
1463
 *    \c false if memory allocation fails or \a entry does not comply with the
 
1464
 *    Vorbis comment specification, else \c true.
 
1465
 */
 
1466
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
 
1467
 
 
1468
/** Replaces comments in a VORBIS_COMMENT block with a new one.
 
1469
 *
 
1470
 *  For convenience, a trailing NUL is added to the entry if it doesn't have
 
1471
 *  one already.
 
1472
 *
 
1473
 *  Depending on the the value of \a all, either all or just the first comment
 
1474
 *  whose field name(s) match the given entry's name will be replaced by the
 
1475
 *  given entry.  If no comments match, \a entry will simply be appended.
 
1476
 *
 
1477
 *  If \a copy is \c true, a copy of the entry is stored; otherwise, the object
 
1478
 *  takes ownership of the \c entry.entry pointer.
 
1479
 *
 
1480
 *  \note If this function returns \c false, the caller still owns the
 
1481
 *  pointer.
 
1482
 *
 
1483
 * \param object       A pointer to an existing VORBIS_COMMENT object.
 
1484
 * \param entry        The comment to insert.
 
1485
 * \param all          If \c true, all comments whose field name matches
 
1486
 *                     \a entry's field name will be removed, and \a entry will
 
1487
 *                     be inserted at the position of the first matching
 
1488
 *                     comment.  If \c false, only the first comment whose
 
1489
 *                     field name matches \a entry's field name will be
 
1490
 *                     replaced with \a entry.
 
1491
 * \param copy         See above.
 
1492
 * \assert
 
1493
 *    \code object != NULL \endcode
 
1494
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
 
1495
 *    \code (entry.entry != NULL && entry.length > 0) ||
 
1496
 * (entry.entry == NULL && entry.length == 0 && copy == false) \endcode
 
1497
 * \retval FLAC__bool
 
1498
 *    \c false if memory allocation fails or \a entry does not comply with the
 
1499
 *    Vorbis comment specification, else \c true.
 
1500
 */
 
1501
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy);
 
1502
 
1415
1503
/** Delete a comment in a VORBIS_COMMENT block at the given index.
1416
1504
 *
1417
1505
 * \param object       A pointer to an existing VORBIS_COMMENT object.
1420
1508
 *    \code object != NULL \endcode
1421
1509
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
1422
1510
 *    \code object->data.vorbis_comment.num_comments > comment_num \endcode
1423
 
 *    \code (entry->entry != NULL && entry->length > 0) ||
1424
 
 * (entry->entry == NULL && entry->length == 0 && copy == false) \endcode
1425
1511
 * \retval FLAC__bool
1426
 
 *    \c false if realloc fails, else \c true.
 
1512
 *    \c false if realloc() fails, else \c true.
1427
1513
 */
1428
1514
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num);
1429
1515
 
1430
 
/*@@@@ add to unit tests */
 
1516
/** Creates a Vorbis comment entry from NUL-terminated name and value strings.
 
1517
 *
 
1518
 *  On return, the filled-in \a entry->entry pointer will point to malloc()ed
 
1519
 *  memory and shall be owned by the caller.  For convenience the entry will
 
1520
 *  have a terminating NUL.
 
1521
 *
 
1522
 * \param entry              A pointer to a Vorbis comment entry.  The entry's
 
1523
 *                           \c entry pointer should not point to allocated
 
1524
 *                           memory as it will be overwritten.
 
1525
 * \param field_name         The field name in ASCII, \c NUL terminated.
 
1526
 * \param field_value        The field value in UTF-8, \c NUL terminated.
 
1527
 * \assert
 
1528
 *    \code entry != NULL \endcode
 
1529
 *    \code field_name != NULL \endcode
 
1530
 *    \code field_value != NULL \endcode
 
1531
 * \retval FLAC__bool
 
1532
 *    \c false if malloc() fails, or if \a field_name or \a field_value does
 
1533
 *    not comply with the Vorbis comment specification, else \c true.
 
1534
 */
 
1535
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value);
 
1536
 
 
1537
/** Splits a Vorbis comment entry into NUL-terminated name and value strings.
 
1538
 *
 
1539
 *  The returned pointers to name and value will be allocated by malloc()
 
1540
 *  and shall be owned by the caller.
 
1541
 *
 
1542
 * \param entry              An existing Vorbis comment entry.
 
1543
 * \param field_name         The address of where the returned pointer to the
 
1544
 *                           field name will be stored.
 
1545
 * \param field_value        The address of where the returned pointer to the
 
1546
 *                           field value will be stored.
 
1547
 * \assert
 
1548
 *    \code (entry.entry != NULL && entry.length > 0) \endcode
 
1549
 *    \code memchr(entry.entry, '=', entry.length) != NULL \endcode
 
1550
 *    \code field_name != NULL \endcode
 
1551
 *    \code field_value != NULL \endcode
 
1552
 * \retval FLAC__bool
 
1553
 *    \c false if memory allocation fails or \a entry does not comply with the
 
1554
 *    Vorbis comment specification, else \c true.
 
1555
 */
 
1556
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair(const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value);
 
1557
 
1431
1558
/** Check if the given Vorbis comment entry's field name matches the given
1432
1559
 *  field name.
1433
1560
 *
1434
 
 * \param entry              A pointer to an existing Vorbis comment entry.
 
1561
 * \param entry              An existing Vorbis comment entry.
1435
1562
 * \param field_name         The field name to check.
1436
1563
 * \param field_name_length  The length of \a field_name, not including the
1437
 
 *                           terminating \c NULL.
 
1564
 *                           terminating \c NUL.
1438
1565
 * \assert
1439
 
 *    \code entry != NULL \endcode
1440
 
 *    \code (entry->entry != NULL && entry->length > 0) \endcode
 
1566
 *    \code (entry.entry != NULL && entry.length > 0) \endcode
1441
1567
 * \retval FLAC__bool
1442
1568
 *    \c true if the field names match, else \c false
1443
1569
 */
1444
 
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, unsigned field_name_length);
 
1570
FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length);
1445
1571
 
1446
 
/*@@@@ add to unit tests */
1447
1572
/** Find a Vorbis comment with the given field name.
1448
1573
 *
1449
1574
 *  The search begins at entry number \a offset; use an offset of 0 to
1456
1581
 * \assert
1457
1582
 *    \code object != NULL \endcode
1458
1583
 *    \code object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT \endcode
 
1584
 *    \code field_name != NULL \endcode
1459
1585
 * \retval int
1460
1586
 *    The offset in the comment array of the first comment whose field
1461
1587
 *    name matches \a field_name, or \c -1 if no match was found.
1462
1588
 */
1463
1589
FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name);
1464
1590
 
1465
 
/*@@@@ add to unit tests */
1466
1591
/** Remove first Vorbis comment matching the given field name.
1467
1592
 *
1468
1593
 * \param object      A pointer to an existing VORBIS_COMMENT object.
1476
1601
 */
1477
1602
FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name);
1478
1603
 
1479
 
/*@@@@ add to unit tests */
1480
1604
/** Remove all Vorbis comments matching the given field name.
1481
1605
 *
1482
1606
 * \param object      A pointer to an existing VORBIS_COMMENT object.
1561
1685
 *    \code object->data.cue_sheet.num_tracks > track_num \endcode
1562
1686
 *    \code object->data.cue_sheet.tracks[track_num].num_indices >= index_num \endcode
1563
1687
 * \retval FLAC__bool
1564
 
 *    \c false if realloc fails, else \c true.
 
1688
 *    \c false if realloc() fails, else \c true.
1565
1689
 */
1566
1690
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index);
1567
1691
 
1585
1709
 *    \code object->data.cue_sheet.num_tracks > track_num \endcode
1586
1710
 *    \code object->data.cue_sheet.tracks[track_num].num_indices >= index_num \endcode
1587
1711
 * \retval FLAC__bool
1588
 
 *    \c false if realloc fails, else \c true.
 
1712
 *    \c false if realloc() fails, else \c true.
1589
1713
 */
1590
1714
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
1591
1715
 
1604
1728
 *    \code object->data.cue_sheet.num_tracks > track_num \endcode
1605
1729
 *    \code object->data.cue_sheet.tracks[track_num].num_indices > index_num \endcode
1606
1730
 * \retval FLAC__bool
1607
 
 *    \c false if realloc fails, else \c true.
 
1731
 *    \c false if realloc() fails, else \c true.
1608
1732
 */
1609
1733
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
1610
1734
 
1628
1752
/** Sets a track in a CUESHEET block.
1629
1753
 *
1630
1754
 *  If \a copy is \c true, a copy of the track is stored; otherwise, the object
1631
 
 *  takes ownership of the \a track pointer.  Returns \c false if
1632
 
 *  \a copy == \c true and malloc fails.
 
1755
 *  takes ownership of the \a track pointer.
1633
1756
 *
1634
1757
 * \param object       A pointer to an existing CUESHEET object.
1635
1758
 * \param track_num    Index into track array to set.  NOTE: this is not
1644
1767
 *    \code (track->indices != NULL && track->num_indices > 0) ||
1645
1768
 * (track->indices == NULL && track->num_indices == 0)
1646
1769
 * \retval FLAC__bool
1647
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1770
 *    \c false if \a copy is \c true and malloc() fails, else \c true.
1648
1771
 */
1649
1772
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
1650
1773
 
1651
1774
/** Insert a track in a CUESHEET block at the given index.
1652
1775
 *
1653
1776
 *  If \a copy is \c true, a copy of the track is stored; otherwise, the object
1654
 
 *  takes ownership of the \a track pointer.  Returns \c false if
1655
 
 *  \a copy == \c true and malloc fails.
 
1777
 *  takes ownership of the \a track pointer.
1656
1778
 *
1657
1779
 * \param object       A pointer to an existing CUESHEET object.
1658
1780
 * \param track_num    The index at which to insert the track.  NOTE: this
1668
1790
 *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
1669
1791
 *    \code object->data.cue_sheet.num_tracks >= track_num \endcode
1670
1792
 * \retval FLAC__bool
1671
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1793
 *    \c false if \a copy is \c true and malloc() fails, else \c true.
1672
1794
 */
1673
1795
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
1674
1796
 
1687
1809
 *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
1688
1810
 *    \code object->data.cue_sheet.num_tracks >= track_num \endcode
1689
1811
 * \retval FLAC__bool
1690
 
 *    \c false if \a copy is \c true and malloc fails, else \c true.
 
1812
 *    \c false if \a copy is \c true and malloc() fails, else \c true.
1691
1813
 */
1692
1814
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num);
1693
1815
 
1702
1824
 *    \code object->type == FLAC__METADATA_TYPE_CUESHEET \endcode
1703
1825
 *    \code object->data.cue_sheet.num_tracks > track_num \endcode
1704
1826
 * \retval FLAC__bool
1705
 
 *    \c false if realloc fails, else \c true.
 
1827
 *    \c false if realloc() fails, else \c true.
1706
1828
 */
1707
1829
FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num);
1708
1830