Implement IAudioSource.Duration property and IAudioDecoderSettings.Open extension method.

This commit is contained in:
Grigory Chudov
2018-04-07 23:02:01 -04:00
parent be881945ac
commit deb3448a55
27 changed files with 817 additions and 75 deletions

View File

@@ -7,11 +7,6 @@ namespace CUETools.Codecs.MPEG.MPLS
{
public class AudioDecoder : IAudioSource
{
public unsafe AudioDecoder(string path, Stream IO, ushort pid)
: this(new DecoderSettings() { StreamId = pid }, path, IO)
{
}
public unsafe AudioDecoder(DecoderSettings settings, string path, Stream IO)
{
m_settings = settings;
@@ -33,7 +28,7 @@ namespace CUETools.Codecs.MPEG.MPLS
void openEntries()
{
readers = new List<BDLPCM.AudioDecoder>();
readers = new List<IAudioSource>();
var pids = new List<int>();
foreach (var item in hdr_m.play_item)
foreach (var audio in item.audio)
@@ -67,7 +62,8 @@ namespace CUETools.Codecs.MPEG.MPLS
var m2ts = System.IO.Path.Combine(
System.IO.Path.Combine(parent.FullName, "STREAM"),
item.clip_id + ".m2ts");
var entry = new BDLPCM.AudioDecoder(m2ts, null, chosenPid);
var settings = new BDLPCM.DecoderSettings() { StreamId = chosenPid };
var entry = settings.Open(m2ts);
readers.Add(entry);
break;
}
@@ -434,8 +430,8 @@ namespace CUETools.Codecs.MPEG.MPLS
byte[] contents;
AudioPCMConfig pcm;
List<BDLPCM.AudioDecoder> readers;
BDLPCM.AudioDecoder currentReader;
List<IAudioSource> readers;
IAudioSource currentReader;
MPLSHeader hdr_m;
DecoderSettings m_settings;
}