2018-04-07 21:09:28 -04:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
namespace CUETools.Codecs.MPEG
|
|
|
|
|
|
{
|
|
|
|
|
|
internal class TsStream
|
|
|
|
|
|
{
|
|
|
|
|
|
internal UInt16 channel; // channel number (1,2 ...)
|
|
|
|
|
|
internal int streamId; // stream number in channel
|
|
|
|
|
|
internal byte type; // 0xff - not ES
|
|
|
|
|
|
internal AudioPCMConfig pcm;
|
|
|
|
|
|
internal byte[] savedBuffer;
|
|
|
|
|
|
internal int savedBufferOffset;
|
|
|
|
|
|
internal int savedBufferSize;
|
|
|
|
|
|
|
|
|
|
|
|
internal byte[] psi; // PAT,PMT cache (only for PSI streams)
|
|
|
|
|
|
internal int psi_len;
|
|
|
|
|
|
internal int psi_offset;
|
|
|
|
|
|
internal int psi_table;
|
|
|
|
|
|
internal bool at_packet_header;
|
|
|
|
|
|
|
|
|
|
|
|
internal byte ts_stream_id; // MPEG stream id
|
|
|
|
|
|
|
|
|
|
|
|
internal bool is_opened;
|
|
|
|
|
|
|
|
|
|
|
|
internal UInt64 dts; // current MPEG stream DTS (presentation time for audio, decode time for video)
|
|
|
|
|
|
internal UInt64 first_dts;
|
|
|
|
|
|
internal UInt64 first_pts;
|
|
|
|
|
|
internal UInt64 last_pts;
|
|
|
|
|
|
internal UInt32 frame_length; // frame length in ticks (90 ticks = 1 ms, 90000/frame_length=fps)
|
|
|
|
|
|
internal UInt32 frame_size; // frame size in bytes
|
|
|
|
|
|
internal UInt64 frame_num; // frame counter
|
|
|
|
|
|
|
|
|
|
|
|
internal TsStream()
|
|
|
|
|
|
{
|
|
|
|
|
|
is_opened = false;
|
|
|
|
|
|
psi = new byte[512];
|
|
|
|
|
|
psi_len = 0;
|
|
|
|
|
|
psi_offset = 0;
|
|
|
|
|
|
psi_table = 0;
|
|
|
|
|
|
channel = 0xffff;
|
|
|
|
|
|
streamId = 0;
|
|
|
|
|
|
type = 0xff;
|
|
|
|
|
|
ts_stream_id = 0;
|
|
|
|
|
|
dts = 0;
|
|
|
|
|
|
first_dts = 0;
|
|
|
|
|
|
first_pts = 0;
|
|
|
|
|
|
last_pts = 0;
|
|
|
|
|
|
frame_length = 0;
|
|
|
|
|
|
frame_size = 0;
|
|
|
|
|
|
frame_num = 0;
|
|
|
|
|
|
pcm = null;
|
|
|
|
|
|
savedBuffer = new byte[192];
|
|
|
|
|
|
savedBufferOffset = 0;
|
|
|
|
|
|
savedBufferSize = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|