1. 23 Dec, 2021 1 commit
  2. 21 Dec, 2021 1 commit
    • moto's avatar
      Fix load behavior for 24-bit input (#2084) · 4554d242
      moto authored
      Summary:
      ## bug description
      
      When a 24 bits-par-sample audio is loaded via file-like object,
      the loaded Tensor is wrong. It was fine if the audio is loaded
      from local file.
      
      ## The cause of the bug
      
      The core of the sox's decoding mechanism is `sox_read` function,
      one of which parameter is the maximum number of samples to decode
      from the given buffer.
      
      https://fossies.org/dox/sox-14.4.2/formats_8c.html#a2a4f0194a0f919d4f38c57b81aa2c06f)]
      
      The `sox_read` function is called in what is called `drain` effect,
      callback and this callback receives output buffer and its size in
      byte. The previous implementation passed this size value as
      the argument of `sox_read` for the maximum number of samples to
      read. Since buffer size is larger than the number of samples fit in
      the buffer, `sox_read` function always consumed the entire
      buffer. (This behavior is not wrong except when the input is
      24 bits-per-sample and file-like object.)
      
      When the input is read from file-like object, inside of drain
      callback, new data are fetched via Python's `read` method and
      loaded on fixed-size memory region. The size of this memory region
      can be adjusted via `torchaudio.utils.sox_utils.set_buffer_size`,
      but the default value is 8096.
      
      If the input format is 24 bits-per-sample, the end of memory region
      does not necessarily correspond to the end of a valid sample.
      When `sox_read` consumes all the data in the buffer region, the data
      at the end introduces some unexpected values.
      This causes the aforementioned bug
      
      ## Fix
      
      Pass proper (better estimated) maximum number of samples decodable to
      `sox_read`.
      
      Pull Request resolved: https://github.com/pytorch/audio/pull/2084
      
      Reviewed By: carolineechen
      
      Differential Revision: D33236947
      
      Pulled By: mthrok
      
      fbshipit-source-id: 171d9b7945f81db54f98362a68b20f2f95bb11a4
      4554d242
  3. 27 Aug, 2021 1 commit
  4. 20 Jul, 2021 1 commit
  5. 12 Jul, 2021 1 commit
  6. 24 May, 2021 1 commit
  7. 02 Apr, 2021 1 commit
  8. 17 Mar, 2021 1 commit
  9. 15 Mar, 2021 1 commit
  10. 12 Mar, 2021 1 commit
  11. 08 Mar, 2021 1 commit
  12. 05 Mar, 2021 1 commit
  13. 02 Mar, 2021 1 commit
  14. 24 Feb, 2021 1 commit
  15. 23 Feb, 2021 1 commit
  16. 20 Feb, 2021 1 commit
  17. 19 Feb, 2021 1 commit
  18. 18 Feb, 2021 1 commit
  19. 12 Feb, 2021 1 commit
  20. 08 Feb, 2021 1 commit
  21. 04 Feb, 2021 1 commit