file_decoder.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:22k
源码类别:

Windows CE

开发平台:

C/C++

  1. /* libOggFLAC - Free Lossless Audio Codec + Ogg library
  2.  * Copyright (C) 2002,2003,2004,2005  Josh Coalson
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  *
  8.  * - Redistributions of source code must retain the above copyright
  9.  * notice, this list of conditions and the following disclaimer.
  10.  *
  11.  * - Redistributions in binary form must reproduce the above copyright
  12.  * notice, this list of conditions and the following disclaimer in the
  13.  * documentation and/or other materials provided with the distribution.
  14.  *
  15.  * - Neither the name of the Xiph.org Foundation nor the names of its
  16.  * contributors may be used to endorse or promote products derived from
  17.  * this software without specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20.  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  22.  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
  23.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30.  */
  31. #ifndef OggFLAC__FILE_DECODER_H
  32. #define OggFLAC__FILE_DECODER_H
  33. #include "export.h"
  34. #include "seekable_stream_decoder.h"
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38. /** file include/OggFLAC/file_decoder.h
  39.  *
  40.  *  brief
  41.  *  This module contains the functions which implement the file
  42.  *  decoder.
  43.  *
  44.  *  See the detailed documentation in the
  45.  *  link oggflac_file_decoder file decoder endlink module.
  46.  */
  47. /** defgroup oggflac_file_decoder OggFLAC/file_decoder.h: file decoder interface
  48.  *  ingroup oggflac_decoder
  49.  *
  50.  *  brief
  51.  *  This module contains the functions which implement the file
  52.  *  decoder.
  53.  *
  54.  * The interface here is nearly identical to FLAC's file decoder,
  55.  * including the callbacks, with the addition of
  56.  * OggFLAC__file_decoder_set_serial_number().  See the
  57.  * link flac_file_decoder FLAC file decoder module endlink
  58.  * for full documentation.
  59.  *
  60.  * {
  61.  */
  62. /** State values for an OggFLAC__FileDecoder
  63.  *
  64.  *  The decoder's state can be obtained by calling OggFLAC__file_decoder_get_state().
  65.  */
  66. typedef enum {
  67. OggFLAC__FILE_DECODER_OK = 0,
  68. /**< The decoder is in the normal OK state. */
  69. OggFLAC__FILE_DECODER_END_OF_FILE,
  70. /**< The decoder has reached the end of the file. */
  71. OggFLAC__FILE_DECODER_ERROR_OPENING_FILE,
  72. /**< An error occurred opening the input file. */
  73. OggFLAC__FILE_DECODER_SEEK_ERROR,
  74. /**< An error occurred while seeking. */
  75. OggFLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR,
  76. /**< An error occurred in the underlying seekable stream decoder;
  77.  * check OggFLAC__file_decoder_get_seekable_stream_decoder_state().
  78.  */
  79. OggFLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR,
  80. /**< Memory allocation failed. */
  81. OggFLAC__FILE_DECODER_ALREADY_INITIALIZED,
  82. /**< OggFLAC__file_decoder_init() was called when the decoder was
  83.  * already initialized, usually because
  84.  * OggFLAC__file_decoder_finish() was not called.
  85.  */
  86. OggFLAC__FILE_DECODER_INVALID_CALLBACK,
  87. /**< The decoder was initialized before setting all the required callbacks. */
  88. OggFLAC__FILE_DECODER_UNINITIALIZED
  89. /**< The decoder is in the uninitialized state. */
  90. } OggFLAC__FileDecoderState;
  91. /** Maps an OggFLAC__FileDecoderState to a C string.
  92.  *
  93.  *  Using an OggFLAC__FileDecoderState as the index to this array
  94.  *  will give the string equivalent.  The contents should not be modified.
  95.  */
  96. extern OggFLAC_API const char * const OggFLAC__FileDecoderStateString[];
  97. /***********************************************************************
  98.  *
  99.  * class OggFLAC__FileDecoder : public OggFLAC__SeekableStreamDecoder
  100.  *
  101.  ***********************************************************************/
  102. struct OggFLAC__FileDecoderProtected;
  103. struct OggFLAC__FileDecoderPrivate;
  104. /** The opaque structure definition for the file decoder type.  See the
  105.  *  link oggflac_file_decoder file decoder module endlink for a detailed
  106.  *  description.
  107.  */
  108. typedef struct {
  109. struct OggFLAC__FileDecoderProtected *protected_; /* avoid the C++ keyword 'protected' */
  110. struct OggFLAC__FileDecoderPrivate *private_; /* avoid the C++ keyword 'private' */
  111. } OggFLAC__FileDecoder;
  112. /** Signature for the write callback.
  113.  *  See OggFLAC__file_decoder_set_write_callback()
  114.  *  and OggFLAC__SeekableStreamDecoderWriteCallback for more info.
  115.  *
  116.  * param  decoder  The decoder instance calling the callback.
  117.  * param  frame    The description of the decoded frame.
  118.  * param  buffer   An array of pointers to decoded channels of data.
  119.  * param  client_data  The callee's client data set through
  120.  *                      OggFLAC__file_decoder_set_client_data().
  121.  * retval FLAC__StreamDecoderWriteStatus
  122.  *    The callee's return status.
  123.  */
  124. typedef FLAC__StreamDecoderWriteStatus (*OggFLAC__FileDecoderWriteCallback)(const OggFLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
  125. /** Signature for the metadata callback.
  126.  *  See OggFLAC__file_decoder_set_metadata_callback()
  127.  *  and OggFLAC__SeekableStreamDecoderMetadataCallback for more info.
  128.  *
  129.  * param  decoder  The decoder instance calling the callback.
  130.  * param  metadata The decoded metadata block.
  131.  * param  client_data  The callee's client data set through
  132.  *                      OggFLAC__file_decoder_set_client_data().
  133.  */
  134. typedef void (*OggFLAC__FileDecoderMetadataCallback)(const OggFLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
  135. /** Signature for the error callback.
  136.  *  See OggFLAC__file_decoder_set_error_callback()
  137.  *  and OggFLAC__SeekableStreamDecoderErrorCallback for more info.
  138.  *
  139.  * param  decoder  The decoder instance calling the callback.
  140.  * param  status   The error encountered by the decoder.
  141.  * param  client_data  The callee's client data set through
  142.  *                      OggFLAC__file_decoder_set_client_data().
  143.  */
  144. typedef void (*OggFLAC__FileDecoderErrorCallback)(const OggFLAC__FileDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
  145. /***********************************************************************
  146.  *
  147.  * Class constructor/destructor
  148.  *
  149.  ***********************************************************************/
  150. /** Create a new file decoder instance.  The instance is created with
  151.  *  default settings; see the individual OggFLAC__file_decoder_set_*()
  152.  *  functions for each setting's default.
  153.  *
  154.  * retval OggFLAC__FileDecoder*
  155.  *    c NULL if there was an error allocating memory, else the new instance.
  156.  */
  157. OggFLAC_API OggFLAC__FileDecoder *OggFLAC__file_decoder_new();
  158. /** Free a decoder instance.  Deletes the object pointed to by a decoder.
  159.  *
  160.  * param decoder  A pointer to an existing decoder.
  161.  * assert
  162.  *    code decoder != NULL endcode
  163.  */
  164. OggFLAC_API void OggFLAC__file_decoder_delete(OggFLAC__FileDecoder *decoder);
  165. /***********************************************************************
  166.  *
  167.  * Public class method prototypes
  168.  *
  169.  ***********************************************************************/
  170. /** Set the "MD5 signature checking" flag.
  171.  *  This is inherited from FLAC__FileDecoder; see
  172.  *  FLAC__file_decoder_set_md5_checking().
  173.  *
  174.  * default c false
  175.  * param  decoder  A decoder instance to set.
  176.  * param  value    See above.
  177.  * assert
  178.  *    code decoder != NULL endcode
  179.  * retval FLAC__bool
  180.  *    c false if the decoder is already initialized, else c true.
  181.  */
  182. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_md5_checking(OggFLAC__FileDecoder *decoder, FLAC__bool value);
  183. /** Set the input file name to decode.
  184.  *  This is inherited from FLAC__FileDecoder; see
  185.  *  FLAC__file_decoder_set_filename().
  186.  *
  187.  * default c "-"
  188.  * param  decoder  A decoder instance to set.
  189.  * param  value    The input file name, or "-" for c stdin.
  190.  * assert
  191.  *    code decoder != NULL endcode
  192.  *    code value != NULL endcode
  193.  * retval FLAC__bool
  194.  *    c false if the decoder is already initialized, or there was a memory
  195.  *    allocation error, else c true.
  196.  */
  197. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_filename(OggFLAC__FileDecoder *decoder, const char *value);
  198. /** Set the write callback.
  199.  *  This is inherited from FLAC__FileDecoder; see
  200.  *  FLAC__file_decoder_set_write_callback().
  201.  *
  202.  * note
  203.  * The callback is mandatory and must be set before initialization.
  204.  *
  205.  * default c NULL
  206.  * param  decoder  A decoder instance to set.
  207.  * param  value    See above.
  208.  * assert
  209.  *    code decoder != NULL endcode
  210.  *    code value != NULL endcode
  211.  * retval FLAC__bool
  212.  *    c false if the decoder is already initialized, else c true.
  213.  */
  214. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_write_callback(OggFLAC__FileDecoder *decoder, OggFLAC__FileDecoderWriteCallback value);
  215. /** Set the metadata callback.
  216.  *  This is inherited from FLAC__FileDecoder; see
  217.  *  FLAC__file_decoder_set_metadata_callback().
  218.  *
  219.  * note
  220.  * The callback is mandatory and must be set before initialization.
  221.  *
  222.  * default c NULL
  223.  * param  decoder  A decoder instance to set.
  224.  * param  value    See above.
  225.  * assert
  226.  *    code decoder != NULL endcode
  227.  *    code value != NULL endcode
  228.  * retval FLAC__bool
  229.  *    c false if the decoder is already initialized, else c true.
  230.  */
  231. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_callback(OggFLAC__FileDecoder *decoder, OggFLAC__FileDecoderMetadataCallback value);
  232. /** Set the error callback.
  233.  *  This is inherited from FLAC__FileDecoder; see
  234.  *  FLAC__file_decoder_set_error_callback().
  235.  *
  236.  * note
  237.  * The callback is mandatory and must be set before initialization.
  238.  *
  239.  * default c NULL
  240.  * param  decoder  A decoder instance to set.
  241.  * param  value    See above.
  242.  * assert
  243.  *    code decoder != NULL endcode
  244.  *    code value != NULL endcode
  245.  * retval FLAC__bool
  246.  *    c false if the decoder is already initialized, else c true.
  247.  */
  248. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_error_callback(OggFLAC__FileDecoder *decoder, OggFLAC__FileDecoderErrorCallback value);
  249. /** Set the client data to be passed back to callbacks.
  250.  *  This value will be supplied to callbacks in their a client_data
  251.  *  argument.
  252.  *
  253.  * default c NULL
  254.  * param  decoder  A decoder instance to set.
  255.  * param  value    See above.
  256.  * assert
  257.  *    code decoder != NULL endcode
  258.  * retval FLAC__bool
  259.  *    c false if the decoder is already initialized, else c true.
  260.  */
  261. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_client_data(OggFLAC__FileDecoder *decoder, void *value);
  262. /** Set the serial number for the Ogg stream.
  263.  * The default behavior is to use the serial number of the first Ogg
  264.  * page.  Setting a serial number here will explicitly specify which
  265.  * stream is to be decoded.
  266.  *
  267.  * default c use serial number of first page
  268.  * param  decoder        A decoder instance to set.
  269.  * param  serial_number  See above.
  270.  * assert
  271.  *    code decoder != NULL endcode
  272.  * retval FLAC__bool
  273.  *    c false if the decoder is already initialized, else c true.
  274.  */
  275. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_serial_number(OggFLAC__FileDecoder *decoder, long serial_number);
  276. /** This is inherited from FLAC__FileDecoder; see
  277.  *  FLAC__file_decoder_set_metadata_respond().
  278.  *
  279.  * default By default, only the c STREAMINFO block is returned via the
  280.  *          metadata callback.
  281.  * param  decoder  A decoder instance to set.
  282.  * param  type     See above.
  283.  * assert
  284.  *    code decoder != NULL endcode
  285.  *    a type is valid
  286.  * retval FLAC__bool
  287.  *    c false if the decoder is already initialized, else c true.
  288.  */
  289. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_respond(OggFLAC__FileDecoder *decoder, FLAC__MetadataType type);
  290. /** This is inherited from FLAC__FileDecoder; see
  291.  *  FLAC__file_decoder_set_metadata_respond_application().
  292.  *
  293.  * default By default, only the c STREAMINFO block is returned via the
  294.  *          metadata callback.
  295.  * param  decoder  A decoder instance to set.
  296.  * param  id       See above.
  297.  * assert
  298.  *    code decoder != NULL endcode
  299.  *    code id != NULL endcode
  300.  * retval FLAC__bool
  301.  *    c false if the decoder is already initialized, else c true.
  302.  */
  303. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_respond_application(OggFLAC__FileDecoder *decoder, const FLAC__byte id[4]);
  304. /** This is inherited from FLAC__FileDecoder; see
  305.  *  FLAC__file_decoder_set_metadata_respond_all().
  306.  *
  307.  * default By default, only the c STREAMINFO block is returned via the
  308.  *          metadata callback.
  309.  * param  decoder  A decoder instance to set.
  310.  * assert
  311.  *    code decoder != NULL endcode
  312.  * retval FLAC__bool
  313.  *    c false if the decoder is already initialized, else c true.
  314.  */
  315. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_respond_all(OggFLAC__FileDecoder *decoder);
  316. /** This is inherited from FLAC__FileDecoder; see
  317.  *  FLAC__file_decoder_set_metadata_ignore().
  318.  *
  319.  * default By default, only the c STREAMINFO block is returned via the
  320.  *          metadata callback.
  321.  * param  decoder  A decoder instance to set.
  322.  * param  type     See above.
  323.  * assert
  324.  *    code decoder != NULL endcode
  325.  *    a type is valid
  326.  * retval FLAC__bool
  327.  *    c false if the decoder is already initialized, else c true.
  328.  */
  329. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_ignore(OggFLAC__FileDecoder *decoder, FLAC__MetadataType type);
  330. /** This is inherited from FLAC__FileDecoder; see
  331.  *  FLAC__file_decoder_set_metadata_ignore_application().
  332.  *
  333.  * default By default, only the c STREAMINFO block is returned via the
  334.  *          metadata callback.
  335.  * param  decoder  A decoder instance to set.
  336.  * param  id       See above.
  337.  * assert
  338.  *    code decoder != NULL endcode
  339.  *    code id != NULL endcode
  340.  * retval FLAC__bool
  341.  *    c false if the decoder is already initialized, else c true.
  342.  */
  343. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_ignore_application(OggFLAC__FileDecoder *decoder, const FLAC__byte id[4]);
  344. /** This is inherited from FLAC__FileDecoder; see
  345.  *  FLAC__file_decoder_set_metadata_ignore_all().
  346.  *
  347.  * default By default, only the c STREAMINFO block is returned via the
  348.  *          metadata callback.
  349.  * param  decoder  A decoder instance to set.
  350.  * assert
  351.  *    code decoder != NULL endcode
  352.  * retval FLAC__bool
  353.  *    c false if the decoder is already initialized, else c true.
  354.  */
  355. OggFLAC_API FLAC__bool OggFLAC__file_decoder_set_metadata_ignore_all(OggFLAC__FileDecoder *decoder);
  356. /** Get the current decoder state.
  357.  *
  358.  * param  decoder  A decoder instance to query.
  359.  * assert
  360.  *    code decoder != NULL endcode
  361.  * retval OggFLAC__FileDecoderState
  362.  *    The current decoder state.
  363.  */
  364. OggFLAC_API OggFLAC__FileDecoderState OggFLAC__file_decoder_get_state(const OggFLAC__FileDecoder *decoder);
  365. /** Get the state of the underlying seekable stream decoder.
  366.  *  Useful when the file decoder state is
  367.  *  c OggFLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR.
  368.  *
  369.  * param  decoder  A decoder instance to query.
  370.  * assert
  371.  *    code decoder != NULL endcode
  372.  * retval FLAC__FileDecoderState
  373.  *    The seekable stream decoder state.
  374.  */
  375. OggFLAC_API OggFLAC__SeekableStreamDecoderState OggFLAC__file_decoder_get_seekable_stream_decoder_state(const OggFLAC__FileDecoder *decoder);
  376. /** Get the state of the underlying stream decoder.
  377.  *  Useful when the file decoder state is
  378.  *  c OggFLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR
  379.  *  and the seekable stream decoder state is
  380.  *  c OggFLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR.
  381.  *
  382.  * param  decoder  A decoder instance to query.
  383.  * assert
  384.  *    code decoder != NULL endcode
  385.  * retval OggFLAC__StreamDecoderState
  386.  *    The stream decoder state.
  387.  */
  388. OggFLAC_API OggFLAC__StreamDecoderState OggFLAC__file_decoder_get_stream_decoder_state(const OggFLAC__FileDecoder *decoder);
  389. /** Get the state of the underlying FLAC stream decoder.
  390.  *  Useful when the file decoder state is
  391.  *  c OggFLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR
  392.  *  and the seekable stream decoder state is
  393.  *  c OggFLAC__SEEKABLE_STREAM_DECODER_STREAM_DECODER_ERROR
  394.  *  and the stream decoder state is
  395.  *  c OggFLAC__STREAM_DECODER_FLAC_STREAM_DECODER_ERROR.
  396.  *
  397.  * param  decoder  A decoder instance to query.
  398.  * assert
  399.  *    code decoder != NULL endcode
  400.  * retval FLAC__StreamDecoderState
  401.  *    The FLAC stream decoder state.
  402.  */
  403. OggFLAC_API FLAC__StreamDecoderState OggFLAC__file_decoder_get_FLAC_stream_decoder_state(const OggFLAC__FileDecoder *decoder);
  404. /** Get the current decoder state as a C string.
  405.  *  This version automatically resolves
  406.  *  c OggFLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR
  407.  *  by getting the seekable stream decoder's state.
  408.  *
  409.  * param  decoder  A decoder instance to query.
  410.  * assert
  411.  *    code decoder != NULL endcode
  412.  * retval const char *
  413.  *    The decoder state as a C string.  Do not modify the contents.
  414.  */
  415. OggFLAC_API const char *OggFLAC__file_decoder_get_resolved_state_string(const OggFLAC__FileDecoder *decoder);
  416. /** This is inherited from FLAC__FileDecoder; see
  417.  *  FLAC__file_decoder_get_md5_checking().
  418.  *
  419.  * param  decoder  A decoder instance to query.
  420.  * assert
  421.  *    code decoder != NULL endcode
  422.  * retval FLAC__bool
  423.  *    See above.
  424.  */
  425. OggFLAC_API FLAC__bool OggFLAC__file_decoder_get_md5_checking(const OggFLAC__FileDecoder *decoder);
  426. /** This is inherited from FLAC__FileDecoder; see
  427.  *  FLAC__file_decoder_get_channels().
  428.  *
  429.  * param  decoder  A decoder instance to query.
  430.  * assert
  431.  *    code decoder != NULL endcode
  432.  * retval unsigned
  433.  *    See above.
  434.  */
  435. OggFLAC_API unsigned OggFLAC__file_decoder_get_channels(const OggFLAC__FileDecoder *decoder);
  436. /** This is inherited from FLAC__FileDecoder; see
  437.  *  FLAC__file_decoder_get_channel_assignment().
  438.  *
  439.  * param  decoder  A decoder instance to query.
  440.  * assert
  441.  *    code decoder != NULL endcode
  442.  * retval OggFLAC__ChannelAssignment
  443.  *    See above.
  444.  */
  445. OggFLAC_API FLAC__ChannelAssignment OggFLAC__file_decoder_get_channel_assignment(const OggFLAC__FileDecoder *decoder);
  446. /** This is inherited from FLAC__FileDecoder; see
  447.  *  FLAC__file_decoder_get_bits_per_sample().
  448.  *
  449.  * param  decoder  A decoder instance to query.
  450.  * assert
  451.  *    code decoder != NULL endcode
  452.  * retval unsigned
  453.  *    See above.
  454.  */
  455. OggFLAC_API unsigned OggFLAC__file_decoder_get_bits_per_sample(const OggFLAC__FileDecoder *decoder);
  456. /** This is inherited from FLAC__FileDecoder; see
  457.  *  FLAC__file_decoder_get_sample_rate().
  458.  *
  459.  * param  decoder  A decoder instance to query.
  460.  * assert
  461.  *    code decoder != NULL endcode
  462.  * retval unsigned
  463.  *    See above.
  464.  */
  465. OggFLAC_API unsigned OggFLAC__file_decoder_get_sample_rate(const OggFLAC__FileDecoder *decoder);
  466. /** This is inherited from FLAC__FileDecoder; see
  467.  *  FLAC__file_decoder_get_blocksize().
  468.  *
  469.  * param  decoder  A decoder instance to query.
  470.  * assert
  471.  *    code decoder != NULL endcode
  472.  * retval unsigned
  473.  *    See above.
  474.  */
  475. OggFLAC_API unsigned OggFLAC__file_decoder_get_blocksize(const OggFLAC__FileDecoder *decoder);
  476. /** Initialize the decoder instance.
  477.  *  Should be called after OggFLAC__file_decoder_new() and
  478.  *  OggFLAC__file_decoder_set_*() but before any of the
  479.  *  OggFLAC__file_decoder_process_*() functions.  Will set and return
  480.  *  the decoder state, which will be OggFLAC__FILE_DECODER_OK if
  481.  *  initialization succeeded.
  482.  *
  483.  * param  decoder  An uninitialized decoder instance.
  484.  * assert
  485.  *    code decoder != NULL endcode
  486.  * retval OggFLAC__FileDecoderState
  487.  *    c OggFLAC__FILE_DECODER_OK if initialization was successful; see
  488.  *    OggFLAC__FileDecoderState for the meanings of other return values.
  489.  */
  490. OggFLAC_API OggFLAC__FileDecoderState OggFLAC__file_decoder_init(OggFLAC__FileDecoder *decoder);
  491. /** Finish the decoding process.
  492.  *  Flushes the decoding buffer, releases resources, resets the decoder
  493.  *  settings to their defaults, and returns the decoder state to
  494.  *  OggFLAC__FILE_DECODER_UNINITIALIZED.
  495.  *
  496.  *  In the event of a prematurely-terminated decode, it is not strictly
  497.  *  necessary to call this immediately before OggFLAC__file_decoder_delete()
  498.  *  but it is good practice to match every OggFLAC__file_decoder_init() with
  499.  *  an OggFLAC__file_decoder_finish().
  500.  *
  501.  * param  decoder  An uninitialized decoder instance.
  502.  * assert
  503.  *    code decoder != NULL endcode
  504.  * retval FLAC__bool
  505.  *    c false if MD5 checking is on AND a STREAMINFO block was available
  506.  *    AND the MD5 signature in the STREAMINFO block was non-zero AND the
  507.  *    signature does not match the one computed by the decoder; else
  508.  *    c true.
  509.  */
  510. OggFLAC_API FLAC__bool OggFLAC__file_decoder_finish(OggFLAC__FileDecoder *decoder);
  511. /** This is inherited from FLAC__FileDecoder; see
  512.  *  FLAC__file_decoder_process_single().
  513.  *
  514.  * param  decoder  A decoder instance.
  515.  * assert
  516.  *    code decoder != NULL endcode
  517.  * retval FLAC__bool
  518.  *    See above.
  519.  */
  520. OggFLAC_API FLAC__bool OggFLAC__file_decoder_process_single(OggFLAC__FileDecoder *decoder);
  521. /** This is inherited from FLAC__FileDecoder; see
  522.  *  FLAC__file_decoder_process_until_end_of_metadata().
  523.  *
  524.  * param  decoder  A decoder instance.
  525.  * assert
  526.  *    code decoder != NULL endcode
  527.  * retval FLAC__bool
  528.  *    See above.
  529.  */
  530. OggFLAC_API FLAC__bool OggFLAC__file_decoder_process_until_end_of_metadata(OggFLAC__FileDecoder *decoder);
  531. /** This is inherited from FLAC__FileDecoder; see
  532.  *  FLAC__file_decoder_process_until_end_of_stream().
  533.  *
  534.  * param  decoder  A decoder instance.
  535.  * assert
  536.  *    code decoder != NULL endcode
  537.  * retval FLAC__bool
  538.  *    See above.
  539.  */
  540. OggFLAC_API FLAC__bool OggFLAC__file_decoder_process_until_end_of_file(OggFLAC__FileDecoder *decoder);
  541. /** This is inherited from OggFLAC__SeekableStreamDecoder; see
  542.  *  OggFLAC__seekable_stream_decoder_seek_absolute().
  543.  *
  544.  * param  decoder  A decoder instance.
  545.  * param  sample   The target sample number to seek to.
  546.  * assert
  547.  *    code decoder != NULL endcode
  548.  * retval FLAC__bool
  549.  *    c true if successful, else c false.
  550.  */
  551. OggFLAC_API FLAC__bool OggFLAC__file_decoder_seek_absolute(OggFLAC__FileDecoder *decoder, FLAC__uint64 sample);
  552. /* } */
  553. #ifdef __cplusplus
  554. }
  555. #endif
  556. #endif