1. 15 Feb, 2018 2 commits
  2. 01 Dec, 2017 1 commit
  3. 22 Sep, 2017 1 commit
  4. 16 May, 2017 1 commit
  5. 28 Nov, 2016 1 commit
    • Petr Kulhavy's avatar
      audio-converter: optimize endian conversion · 010b9547
      Petr Kulhavy authored
      Optimize LE<->BE conversion by adding a dedicated fast path instead of
      using the generic converter. Implement transform_ip function in order to do the
      endian swap in place.
      
      This saves buffer allocation for the intermediate format, can be done in place
      and also performs the conversion in one step instead of unpack-convert-pack.
      
      For all bit widths the naive algorithm is implemented, which provides the best
      performance when compiled with -O3. ORC was considered but eventually removed
      as it requires a dedicated function for in-place conversion (due to the
      "restrict" parameters).
      
      A more complex algorithm for the 24-bit conversion with unrolled loop and
      32-bit processing is implemented in the #if 0 section. It performs better if
      compiled with -O2. With -O3 however the naive algorithm performs better.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=773073
      010b9547
  6. 28 Mar, 2016 3 commits
    • Wim Taymans's avatar
      audio-converter: simplify API · de374916
      Wim Taymans authored
      Remove the consumed/produced output fields from the resampler and
      converter. Let the caler specify the right number of input/output
      samples so we can be more optimal.
      Use just one function to update the converter configuration.
      Simplify some things internally.
      Make it possible to use writable input as temp space in audioconvert.
      de374916
    • Wim Taymans's avatar
      audio-converter: more work on resampling · 1d9a7935
      Wim Taymans authored
      - Fix the resampler in the audio converter
      - fix memory leaks
      1d9a7935
    • Wim Taymans's avatar
      audio-converter: add resampler · 75d668e1
      Wim Taymans authored
      Add a resampler to the processing chain when needed.
      port the audio resampler to the new audioconverter library
      75d668e1
  7. 26 Jan, 2016 2 commits
  8. 08 Jan, 2016 3 commits
    • Wim Taymans's avatar
      audio-converter: small API tweaks · 85afad72
      Wim Taymans authored
      Pass flags in _converter_new() so that we can configure ourselves
      differently depending on some options.
      SOURCE_WRITABLE -> IN_WRITABLE because the array is called 'in'
      85afad72
    • Wim Taymans's avatar
      audio-converter: prepare API for rate changes · 7f49b946
      Wim Taymans authored
      Use the update function to update the sample rates along with the config
      once we implement resampling.
      7f49b946
    • Wim Taymans's avatar
      audio-convert: simplify API · 98016345
      Wim Taymans authored
      Simplify the API, we don't need the consumed and produced output
      arguments. The caller needs to use the _get_in_frames/get_out_frames API
      to check how much input is needed and how much output will be produced.
      98016345
  9. 16 Dec, 2015 1 commit
    • Wim Taymans's avatar
      audio-converter: rework the main processing loop · 08734e75
      Wim Taymans authored
      Rework the main processing loop. We now create an audio processing
      chain from small core functions. This is very similar to how the
      video-converter core works and allows us to statically calculate an
      optimal allocation strategy for all possible combinations of operations.
      Make sure we support non-interleaved data everywhere.
      Add functions to calculate in and out frames and latency.
      08734e75
  10. 14 Dec, 2015 1 commit
  11. 09 Dec, 2015 1 commit
  12. 10 Nov, 2015 1 commit
  13. 06 Nov, 2015 4 commits
  14. 30 Oct, 2015 1 commit
    • Wim Taymans's avatar
      audioconvert: rework audioconvert · 5cf367ae
      Wim Taymans authored
      Rewrite audioconvert to try to make it more clear what steps are
      executed during conversion.
      Add passthrough step that just does a memcpy when possible.
      Add ORC optimized dither and quantization functions.
      Implement noise-shaping on S32 samples only and allow for arbitrary
      noise shaping coefficients if we want this later.
      5cf367ae
  15. 28 Oct, 2015 2 commits
  16. 23 Oct, 2015 1 commit
    • Wim Taymans's avatar
      audioconvert: use pack/unpack functions · 2b626a5a
      Wim Taymans authored
      Rework the converter to use the pack/unpack functions
      Because the unpack functions can only unpack to 1 format, add a separate
      conversion step for doubles when the unpack function produces int.
      Do conversion to S32 in the quantize function directly.
      Tweak the conversion factor for doing float->int conversion slightly to
      get the full range of negative samples, use clamp to make sure we don't
      exceed our int range on the positive axis (see also #755301)
      2b626a5a
  17. 01 Apr, 2015 1 commit
  18. 03 Nov, 2012 1 commit
  19. 18 Aug, 2011 1 commit
    • Wim Taymans's avatar
      audio: rework audio caps. · dae84881
      Wim Taymans authored
      Rework the audio caps similar to the video caps. Remove
      width/depth/endianness/signed fields and replace with a simple string
      format and media type audio/x-raw.
      Create a GstAudioInfo and some helper methods to parse caps.
      Remove duplicate code from the ringbuffer and replace with audio info.
      Use AudioInfo in the base audio filter class.
      Port elements to new API.
      dae84881
  20. 11 Mar, 2010 1 commit
  21. 23 Jul, 2008 1 commit
    • Sebastian Dröge's avatar
      gst/audioconvert/: Implement a linear congruential generator as pseudo random... · ef5004e5
      Sebastian Dröge authored
      gst/audioconvert/: Implement a linear congruential generator as pseudo random number generator for the dither noise. ...
      
      Original commit message from CVS:
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstaudioquantize.c:
      (gst_audio_quantize_setup_dither),
      (gst_audio_quantize_free_dither):
      * gst/audioconvert/gstfastrandom.h:
      Implement a linear congruential generator as pseudo random number
      generator for the dither noise. This is about 2 times faster than
      using GLib's mersenne twister. Also this uses only integer math for
      generating integers while GLib internally uses floating point math.
      ef5004e5
  22. 22 May, 2008 1 commit
    • Jan Schmidt's avatar
      Add some documentation comments, and some new headers to be scanned. · d58def62
      Jan Schmidt authored
      Original commit message from CVS:
      * docs/plugins/Makefile.am:
      * docs/plugins/gst-plugins-base-plugins-overrides.txt:
      * docs/plugins/gst-plugins-base-plugins-sections.txt:
      * docs/plugins/gst-plugins-base-plugins.args:
      * docs/plugins/gst-plugins-base-plugins.hierarchy:
      * docs/plugins/gst-plugins-base-plugins.interfaces:
      * docs/plugins/gst-plugins-base-plugins.prerequisites:
      * docs/plugins/inspect/plugin-adder.xml:
      * docs/plugins/inspect/plugin-alsa.xml:
      * docs/plugins/inspect/plugin-audioconvert.xml:
      * docs/plugins/inspect/plugin-audiorate.xml:
      * docs/plugins/inspect/plugin-audioresample.xml:
      * docs/plugins/inspect/plugin-audiotestsrc.xml:
      * docs/plugins/inspect/plugin-cdparanoia.xml:
      * docs/plugins/inspect/plugin-decodebin.xml:
      * docs/plugins/inspect/plugin-ffmpegcolorspace.xml:
      * docs/plugins/inspect/plugin-gdp.xml:
      * docs/plugins/inspect/plugin-gio.xml:
      * docs/plugins/inspect/plugin-gnomevfs.xml:
      * docs/plugins/inspect/plugin-libvisual.xml:
      * docs/plugins/inspect/plugin-ogg.xml:
      * docs/plugins/inspect/plugin-pango.xml:
      * docs/plugins/inspect/plugin-playback.xml:
      * docs/plugins/inspect/plugin-queue2.xml:
      * docs/plugins/inspect/plugin-subparse.xml:
      * docs/plugins/inspect/plugin-tcp.xml:
      * docs/plugins/inspect/plugin-theora.xml:
      * docs/plugins/inspect/plugin-typefindfunctions.xml:
      * docs/plugins/inspect/plugin-uridecodebin.xml:
      * docs/plugins/inspect/plugin-video4linux.xml:
      * docs/plugins/inspect/plugin-videorate.xml:
      * docs/plugins/inspect/plugin-videoscale.xml:
      * docs/plugins/inspect/plugin-videotestsrc.xml:
      * docs/plugins/inspect/plugin-volume.xml:
      * docs/plugins/inspect/plugin-vorbis.xml:
      * docs/plugins/inspect/plugin-ximagesink.xml:
      * docs/plugins/inspect/plugin-xvimagesink.xml:
      * ext/cdparanoia/gstcdparanoiasrc.c:
      * ext/ogg/gstoggdemux.c:
      * ext/ogg/gstoggdemux.h:
      * ext/ogg/gstoggmux.c:
      * ext/ogg/gstoggmux.h:
      * gst/audioconvert/audioconvert.c:
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstaudioconvert.h:
      * gst/gdp/gstgdpdepay.h:
      * gst/gdp/gstgdppay.h:
      * gst/playback/gstdecodebin.c:
      * gst/playback/gstdecodebin2.c:
      * gst/playback/gstplaybin.c:
      * gst/playback/gstplaybin2.c:
      * gst/playback/gsturidecodebin.c:
      * gst/tcp/gstmultifdsink.c:
      * gst/tcp/gstmultifdsink.h:
      * gst/tcp/gsttcp.h:
      Add some documentation comments, and some new headers to be scanned.
      Rename some internal enum declarations (audioconvert's DitherType and
      NoiseShapingType, GstUnitType from the TCP elements) to match the
      documented GObject type names so that the docs pick them up.
      Name the playbin2 docs markups properly so they get picked up. They'll
      need renaming back when/if playbin2 becomes playbin.
      100% symbol coverage for the plugin docs, booya.
      d58def62
  23. 06 May, 2008 1 commit
    • Tim-Philipp Müller's avatar
      gst/audioconvert/: Add support for more than 8 channels and NONE channel... · fd54092a
      Tim-Philipp Müller authored
      gst/audioconvert/: Add support for more than 8 channels and NONE channel layouts. For more than 8 channels no channel...
      
      Original commit message from CVS:
      Based on a patch by: Tim-Philipp Müller  <tim.muller at collabora co uk>
      * gst/audioconvert/audioconvert.c: (audio_convert_prepare_context):
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstaudioconvert.c:
      (gst_audio_convert_parse_caps),
      (structure_has_fixed_channel_positions),
      (gst_audio_convert_transform_caps):
      * gst/audioconvert/gstchannelmix.c: (gst_channel_mix_fill_matrix):
      Add support for more than 8 channels and NONE channel layouts. For
      more than 8 channels no channel conversion is supported yet, only
      format conversions are supported. Fixes bug #398033.
      * tests/check/elements/audioconvert.c: (verify_convert),
      (GST_START_TEST), (audioconvert_suite):
      Add some unit tests by Tim for checking the NONE channel layouts
      and more than 8 channels and add some more unit tests for channel
      conversions.
      fd54092a
  24. 28 Jun, 2007 1 commit
    • Sebastian Dröge's avatar
      gst/audioconvert/: Implement dithering and noise shaping in audioconvert. By default now · dbb857b9
      Sebastian Dröge authored
      Original commit message from CVS:
      * gst/audioconvert/Makefile.am:
      * gst/audioconvert/audioconvert.c: (audio_convert_get_func_index),
      (check_default), (audio_convert_prepare_context),
      (audio_convert_clean_context), (audio_convert_convert):
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstaudioconvert.c:
      (gst_audio_convert_dithering_get_type),
      (gst_audio_convert_ns_get_type), (gst_audio_convert_class_init),
      (gst_audio_convert_init), (gst_audio_convert_set_caps),
      (gst_audio_convert_set_property), (gst_audio_convert_get_property):
      * gst/audioconvert/gstaudioconvert.h:
      * gst/audioconvert/gstaudioquantize.c:
      (gst_audio_quantize_setup_noise_shaping),
      (gst_audio_quantize_free_noise_shaping),
      (gst_audio_quantize_setup_dither),
      (gst_audio_quantize_free_dither),
      (gst_audio_quantize_setup_quantize_func),
      (gst_audio_quantize_setup), (gst_audio_quantize_free):
      * gst/audioconvert/gstaudioquantize.h:
      Implement dithering and noise shaping in audioconvert. By default now
      TPDF dithering (and no noise shaping) will be used when converting
      from a higher bit depth to 20 bit depth or smaller, otherwise
      everything will be as it is now.
      For the last audioconvert in a pipeline it would make sense to
      use some kind of noise shaping, enabling it by default for all
      conversions would give undesired results though. Fixes #360246.
      * tests/check/elements/audioconvert.c: (setup_audioconvert),
      (GST_START_TEST):
      Adjust unit test for the new audioconvert.
      dbb857b9
  25. 22 Feb, 2007 1 commit
    • Stefan Kost's avatar
      Add float as an intermediate format, as well as float mixing. Enable test that... · 00d7c52d
      Stefan Kost authored
      Add float as an intermediate format, as well as float mixing. Enable test that was failing before. Fixes #339837
      
      Original commit message from CVS:
      * gst/audioconvert/audioconvert.c: (float), (double), (float_hq),
      (double_hq), (audio_convert_get_func_index),
      (audio_convert_prepare_context), (audio_convert_convert):
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstchannelmix.c: (gst_channel_mix_setup_matrix),
      (gst_channel_mix_mix_int), (gst_channel_mix_mix_float):
      * gst/audioconvert/gstchannelmix.h:
      * tests/check/elements/audioconvert.c: (GST_START_TEST):
      Add float as an intermediate format, as well as float mixing. Enable
      test that was failing before. Fixes #339837
      00d7c52d
  26. 06 Dec, 2005 1 commit
  27. 19 Oct, 2005 1 commit
    • Wim Taymans's avatar
      Bye bye buffer-frames. · fc8ce006
      Wim Taymans authored
      Original commit message from CVS:
      * check/elements/audioconvert.c:
      * docs/libs/tmpl/gstaudio.sgml:
      * docs/libs/tmpl/gstcolorbalance.sgml:
      * ext/vorbis/vorbisdec.c: (vorbis_dec_sink_event),
      (vorbis_handle_identification_packet), (vorbis_handle_data_packet):
      * ext/vorbis/vorbisenc.c: (raw_caps_factory):
      * gst-libs/gst/audio/audio.c: (gst_audio_structure_set_int):
      * gst-libs/gst/audio/audio.h:
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstaudioconvert.c:
      (gst_audio_convert_parse_caps):
      * gst/volume/gstvolume.c:
      Bye bye buffer-frames.
      fc8ce006
  28. 10 Oct, 2005 1 commit
  29. 12 Sep, 2005 1 commit
    • Wim Taymans's avatar
      gst/audioconvert/audioconvert.*: Cleanups, speedups, simplifications, added... · 1237e1e7
      Wim Taymans authored
      gst/audioconvert/audioconvert.*: Cleanups, speedups, simplifications, added back support for 24 bits.
      
      Original commit message from CVS:
      * gst/audioconvert/audioconvert.c: (float),
      (audio_convert_prepare_context), (audio_convert_convert):
      * gst/audioconvert/audioconvert.h:
      Cleanups, speedups, simplifications, added back support
      for 24 bits.
      1237e1e7
  30. 26 Aug, 2005 1 commit
    • Wim Taymans's avatar
      gst/audioconvert/: Cleanups, librarify a bit, optimize, better negotiation and more. · ceb84de9
      Wim Taymans authored
      Original commit message from CVS:
      * gst/audioconvert/Makefile.am:
      * gst/audioconvert/audioconvert.c: (if), (float),
      (audio_convert_get_func_index), (check_default),
      (audio_convert_clean_fmt), (audio_convert_prepare_context),
      (audio_convert_clean_context), (audio_convert_get_sizes),
      (get_temp_buffer), (audio_convert_convert):
      * gst/audioconvert/audioconvert.h:
      * gst/audioconvert/gstaudioconvert.c:
      (gst_audio_convert_class_init), (gst_audio_convert_init),
      (gst_audio_convert_dispose), (gst_audio_convert_parse_caps),
      (gst_audio_convert_get_unit_size),
      (gst_audio_convert_transform_caps),
      (gst_audio_convert_fixate_caps), (gst_audio_convert_set_caps),
      (gst_audio_convert_transform_ip), (gst_audio_convert_transform):
      * gst/audioconvert/gstaudioconvert.h:
      * gst/audioconvert/gstchannelmix.c: (gst_channel_mix_unset_matrix),
      (gst_channel_mix_fill_identical),
      (gst_channel_mix_fill_compatible), (gst_channel_mix_detect_pos),
      (gst_channel_mix_fill_one_other), (gst_channel_mix_fill_others),
      (gst_channel_mix_fill_normalize), (gst_channel_mix_fill_matrix),
      (gst_channel_mix_setup_matrix), (gst_channel_mix_passthrough),
      (gst_channel_mix_mix):
      * gst/audioconvert/gstchannelmix.h:
      Cleanups, librarify a bit, optimize, better negotiation and more.
      ceb84de9