1. 16 Nov, 2008 1 commit
  2. 11 Nov, 2008 3 commits
  3. 04 Nov, 2008 1 commit
    • Max Kellermann's avatar
      decoder: removed stream_types · 85a7d1a1
      Max Kellermann authored
      Instead of checking the stream_types bit set, we can simply check
      whether the methods stream_decode() and file_decode() are implemented.
      85a7d1a1
  4. 02 Nov, 2008 2 commits
  5. 01 Nov, 2008 2 commits
  6. 31 Oct, 2008 2 commits
  7. 30 Oct, 2008 1 commit
  8. 26 Oct, 2008 3 commits
  9. 17 Oct, 2008 1 commit
  10. 10 Oct, 2008 1 commit
  11. 08 Oct, 2008 1 commit
  12. 29 Sep, 2008 1 commit
    • Max Kellermann's avatar
      use C99 struct initializers · de7cda1d
      Max Kellermann authored
      The old struct initializers are error prone and don't allow moving
      elements around.  Since we are going to overhaul some of the APIs
      soon, it's easier to have all implementations use C99 initializers.
      de7cda1d
  13. 23 Sep, 2008 2 commits
    • Max Kellermann's avatar
      flac: moved code from flacWrite() to _flac_common.c · 8bcbe90b
      Max Kellermann authored
      There is still a lot of duplicated code in flac_plugin.c and
      oggflac_plugin.c.  Move code from flac_plugin.c to _flac_common.c, and
      use the new function flac_common_write() also in oggflac_plugin.c,
      porting lots of optimizations over to it.
      8bcbe90b
    • Max Kellermann's avatar
      audio_format: added audio_format_sample_size() · 128d8c7c
      Max Kellermann authored
      The inline function audio_format_sample_size() calculates how many
      bytes each sample consumes.  This function already takes into account
      that 24 bit samples are 4 bytes long, not 3.
      128d8c7c
  14. 29 Aug, 2008 2 commits
    • Max Kellermann's avatar
      oggflac: fix GCC warnings · d8ad109e
      Max Kellermann authored
      Fix lots of "unused parameter" warnings in the OggFLAC decoder
      plugin.  Not sure if anybody uses it anymore, since newer libflac
      obsoletes it.
      d8ad109e
    • Max Kellermann's avatar
      tag: fix the shout and oggflac plugins · 01f9684f
      Max Kellermann authored
      During the tag library refactoring, the shout plugin was disabled, and
      I forgot about adapting it to the new API.  Apply the same fixes to
      the oggflac decoder plugin.
      01f9684f
  15. 26 Aug, 2008 16 commits
    • Max Kellermann's avatar
      flac: decoder command means EOF · 6df980a9
      Max Kellermann authored
      It was possible for the decoder thread to go into an endless loop
      (flac and oggflac decoders): when a "STOP" command arrived, the Read()
      callback would return 0, but the EOF() callback returned false.  Fix:
      when decoder_get_command()!=NONE, return EOF==true.
      6df980a9
    • Max Kellermann's avatar
      check decoder_command!=NONE instead of decoder_command==STOP · e530181e
      Max Kellermann authored
      The code said "decoder_command==STOP" because that was a conversion
      from the old "dc->stop" test.  As we can now check for all commands in
      one test, we can simply rewrite that to decoder_command!=NONE.
      e530181e
    • Max Kellermann's avatar
      added decoder_read() · 940ecf53
      Max Kellermann authored
      On our way to stabilize the decoder API, we will one day remove the
      input stream functions.  The most basic function, read() will be
      provided by decoder_api.h with this patch.  It already contains a loop
      (still with manual polling), error/eof handling and decoder command
      checks.  This kind of code used to be duplicated in all decoder
      plugins.
      940ecf53
    • Max Kellermann's avatar
      oggvorbis: don't detect OGG header if stream is not seekable · a1b430cb
      Max Kellermann authored
      If the input stream is not seekable, the try_decode() function
      consumes valuable data, which is not available to the decode()
      function anymore.  This means that the decode() function does not
      parse the header correctly.  Better skip the detection if we cannot
      seek.  Or implement better buffering, something like unread() or
      buffered rewind().
      a1b430cb
    • Max Kellermann's avatar
      renamed InputPlugin to struct decoder_plugin · e41be362
      Max Kellermann authored
      "decoder plugin" is a better name than "input plugin", since the
      plugin does not actually do the input - InputStream does.  Also don't
      use typedef, so we can forward-declare it if required.
      e41be362
    • Max Kellermann's avatar
      added decoder_seek_where() and decoder_seek_error() · 17e9cc84
      Max Kellermann authored
      Provide access to seeking for the decoder plugins; they have to know
      where to seek, and they need a way to tell us that seeking has failed.
      17e9cc84
    • Max Kellermann's avatar
      added decoder_command_finished() to decoder_api.h · 78c55e24
      Max Kellermann authored
      Some decoder commands are implemented in the decoder plugins, thus
      they need to have an API call to signal that their current command has
      been finished.  Let them use the new decoder_command_finished()
      instead of the internal dc_command_finished().
      78c55e24
    • Max Kellermann's avatar
      added decoder_get_command() · 817a68b2
      Max Kellermann authored
      Another big patch which hides internal mpd APIs from decoder plugins:
      decoder plugins regularly poll dc->command; expose it with a
      decoder_api.h function.
      817a68b2
    • Max Kellermann's avatar
      added parameter total_time to decoder_initialized() · 0d8b551c
      Max Kellermann authored
      Similar to the previous patch: pass total_time instead of manipulating
      dc->totalTime directly.
      0d8b551c
    • Max Kellermann's avatar
      added audio_format parameter to decoder_initialized() · 4590a98f
      Max Kellermann authored
      dc->audioFormat is set once by the decoder plugins before invoking
      decoder_initialized(); hide dc->audioFormat and let the decoder pass
      an AudioFormat pointer to decoder_initialized().
      4590a98f
    • Max Kellermann's avatar
      added decoder_clear() and decoder_flush() · 0d45870c
      Max Kellermann authored
      We are now beginning to remove direct structure accesses from the
      decoder plugins.  decoder_clear() and decoder_flush() mask two very
      common buffer functions.
      0d45870c
    • Max Kellermann's avatar
      added decoder_initialized() · 2bf7ec4f
      Max Kellermann authored
      decoder_initialized() sets the state to DECODE_STATE_DECODE and wakes
      up the player thread.  It is called by the decoder plugin after its
      internal initialization is finished.  More arguments will be added
      later to prevent direct accesses to the DecoderControl struct.
      2bf7ec4f
    • Max Kellermann's avatar
      added struct decoder · 154aa496
      Max Kellermann authored
      The decoder struct should later be made opaque to the decoder plugin,
      because maintaining a stable struct ABI is quite difficult.  The ABI
      should only consist of a small number of stable functions.
      154aa496
    • Max Kellermann's avatar
      added dc_command_finished() · 9e0f7dcd
      Max Kellermann authored
      dc_command_finished() is invoked by the decoder thread when it has
      finished a command (sent by the player thread).  It resets dc.command
      and wakes up the player thread.  This combination was used at a lot of
      places, and by introducing this function, the code will be more
      readable.
      9e0f7dcd
    • Max Kellermann's avatar
      merged start, stop, seek into DecoderControl.command · 8d3942e0
      Max Kellermann authored
      Much of the existing code queries all three variables sequentially.
      Since only one of them can be set at a time, this can be optimized and
      unified by merging all of them into one enum variable.  Later, the
      "command" checks can be expressed in a "switch" statement.
      8d3942e0
    • Max Kellermann's avatar
      clean up CPP includes · b6909da7
      Max Kellermann authored
      Include only headers which are really required.  This speeds up
      compilation and helps detect cross-layer accesses.
      b6909da7
  16. 01 Jun, 2008 1 commit