Audio.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. namespace OpenVIII.AV
  2. {
  3. using FFmpeg.AutoGen;
  4. public class Audio : Ffcc
  5. {
  6. #region Methods
  7. /// <summary>
  8. /// Opens filename and init class.
  9. /// </summary>
  10. public static Audio Load(string filename, int loopStart = -1) =>
  11. Load<Audio>(filename, AVMediaType.AVMEDIA_TYPE_AUDIO, FfccMode.StateMach, loopStart);
  12. /// <summary>
  13. /// Opens filename and init class.
  14. /// </summary>
  15. /// <remarks>
  16. /// Could be better, but there are many hoops to jump through.
  17. /// </remarks>
  18. /// <see cref="https://stackoverflow.com/questions/9604633/reading-a-file-located-in-memory-with-libavformat"/>
  19. /// <seealso cref="http://www.ffmpeg.org/doxygen/trunk/doc_2examples_2avio_reading_8c-example.html"/>
  20. /// <seealso cref="https://stackoverflow.com/questions/24758386/intptr-to-callback-function"/>
  21. ///
  22. public static Audio Load(Sound.Entry entryData, int loopStart = -1, FfccMode ffccMode = FfccMode.ProcessAll) =>
  23. Load(entryData, entryData.HeaderData, loopStart, ffccMode);
  24. public static unsafe Audio Load(BufferData bufferData, byte[] headerData, int loopStart = -1, FfccMode ffccMode = FfccMode.ProcessAll) =>
  25. Load<Audio>(&bufferData, headerData, loopStart, ffccMode, AVMediaType.AVMEDIA_TYPE_AUDIO);
  26. public static unsafe Audio Load(BufferData* bufferData, byte[] headerData, int loopStart = -1, FfccMode ffccMode = FfccMode.ProcessAll) =>
  27. Load<Audio>(bufferData, headerData, loopStart, ffccMode, AVMediaType.AVMEDIA_TYPE_AUDIO);
  28. #endregion Methods
  29. }
  30. }