1. 26 Oct, 2008 2 commits
  2. 10 Oct, 2008 1 commit
  3. 09 Oct, 2008 1 commit
    • Max Kellermann's avatar
      shout: removed DISABLED_SHOUT_ENCODER_PLUGIN · 5583b6c5
      Max Kellermann authored
      Having an array with disabled entries sucks.  Removed that
      DISABLED_SHOUT_ENCODER_PLUGIN macro, and fill the plugin list only
      with plugins which are actually enabled.  This should be done for all
      plugin types.
      5583b6c5
  4. 29 Sep, 2008 2 commits
  5. 23 Sep, 2008 1 commit
  6. 12 Sep, 2008 8 commits
    • Max Kellermann's avatar
      shout: make the shout_buffer static · 265b8fff
      Max Kellermann authored
      Since the buffer size is known at compile time, we can save an
      indirection by declaring it as a char array instead of a pointer.
      That saves an extra allocation, and we can calculate with the
      compile-time constant sizeof(data) instead of the attribute "max_len".
      265b8fff
    • Max Kellermann's avatar
      shout: constant plugin declarations · ebd19499
      Max Kellermann authored
      Declare both shout plugins "const", since they will never change, once
      initialized at compile time.
      ebd19499
    • Max Kellermann's avatar
      shout: removed typedefs on structs and plugin methods · a84de9b0
      Max Kellermann authored
      Don't typedef the structs at all.  It is easier to forward-declare
      this way.
      
      Don't typedef methods.  They are used exactly once, a few lines below.
      a84de9b0
    • Eric Wollesen's avatar
      shout: introduce pluggable encoder API · 4970c42c
      Eric Wollesen authored
      I've perhaps gone a bit overboard, but here's the current rundown:
      
      Both Ogg and MP3 use the "shout" audio output plugin.  The shout audio
      output plugin itself has two new plugins, one for the Ogg encoder,
      and another for the MP3 (LAME) encoder.
      
      Configuration for an Ogg stream doesn't change.  For an MP3 stream,
      configuration is the same as Ogg, with two exceptions.  First, you must
      specify the optional "encoding" parameter, which should be set to "mp3".
      See mpd.conf(5) for more details.  Second, the "quality" parameter is
      reversed for LAME, such that 1 is high quality for LAME, whereas 10 is
      high quality for Ogg.
      
      I've decomposed the code so that all libshout related operations
      are done in audioOutput_shout.c, all Ogg specific functions are in
      audioOutput_shout_ogg.c, and of course then all LAME specific functions
      are handled in audioOutput_shout_mp3.c.
      
      To develop encoder plugins for the shout audio output plugin, I basically
      just mimicked the plugin system used for audio outputs.  This might be
      overkill, but hopefully if anyone ever wants to support some other sort
      of stream, like maybe AAC, FLAC, or WMA (hey it could happen), they will
      hopefully be all set.
      
      The Ogg encoder is slightly less optimal under this configuration.
      It used to send shout data directly out of its ogg_page structures.  Now,
      in the interest of encapsulation, it copies the data from its ogg_page
      structures into a buffer provided by the shout audio output plugin (see
      audioOutput_shout_ogg.c, line 77.)  I suspect the performance impact
      is negligible.
      
      As for metadata, I'm pretty sure they'll both work.  I wrote up a test
      scaffold that would create a fake tag, and tell the plugin to send it
      out to the stream every few seconds.  It seemed to work fine.  Of course,
      if something does break, I'll be glad to fix it.
      
      Lastly, I've renamed lots of things into snake_case, in keeping with
      normalperson's wishes in that regard.
      
      [mk: moved the MP3 patch after this one.  Splitted this patch into
      several parts; the others were already applied before this one.  Fixed
      a bunch GCC warnings and wrong whitespace modifications.  Made it
      compile with mpd-mk by adapting to its prototypes]
      4970c42c
    • Eric Wollesen's avatar
      shout: send shout metadata · 43ee3c3b
      Eric Wollesen authored
      Support sending metadata to a shout server using shout_metadata_new()
      and shout_metadata_add().  The Ogg Vorbis encoder does not support
      this currently.
      
      [mk: this patch was separated from Eric's patch "Refactor and cleanup
      of shout Ogg and MP3 audio outputs", I added a description]
      43ee3c3b
    • Max Kellermann's avatar
      shout: added struct _ogg_vorbis_data · 1333c392
      Max Kellermann authored
      Preparing the merge of Eric Wollesen's patch "Refactor and cleanup of
      shout Ogg and MP3 audio outputs": we declare one of the struct types
      here, to make the merge smoother.
      1333c392
    • Eric Wollesen's avatar
      shout: added shout_buffer · f482f83e
      Eric Wollesen authored
      The Ogg encoder is slightly less optimal under this configuration.  It
      used to send shout data directly out of its ogg_page structures.  Now,
      in the interest of encapsulation, it copies the data from its ogg_page
      structures into a buffer provided by the shout audio output plugin
      (see audioOutput_shout_ogg.c, line 77.)  I suspect the performance
      impact is negligible.
      
      [mk: this patch and its description was separated from Eric's patch
      "Refactor and cleanup of shout Ogg and MP3 audio outputs"]
      f482f83e
    • Max Kellermann's avatar
      shout: moved code to audioOutput_shout_ogg.c · fcac05a2
      Max Kellermann authored
      Begin dividing audioOutput_shout.c: move everything OGG Vorbis related
      to audioOutput_shout_ogg.c.  The header audioOutput_shout.h has to
      keep its dependency on vorbis/vorbisenc.h, because it needs the vorbis
      encoder types.
      
      For this patch, we have to export several internal functions with
      generic names to the ABI; these will be removed later when the encoder
      plugin patches are merged.
      fcac05a2