Preserve native broadcast video and add patient shared stream startup
This commit is contained in:
@@ -27,9 +27,10 @@ public static class BroadcastSlateProgram
|
||||
var p = start + 4 + ((clip[start + 3] & 32) != 0 ? clip[start + 4] + 1 : 0);
|
||||
if (p + 14 <= start + 188 && clip[p] == 0 && clip[p + 1] == 0 && clip[p + 2] == 1 && (clip[p + 7] & 128) != 0)
|
||||
{
|
||||
long pts = ((long)(clip[p + 9] & 14) << 29) | ((long)clip[p + 10] << 22) | ((long)(clip[p + 11] & 254) << 14) | ((long)clip[p + 12] << 7) | (clip[p + 13] >> 1);
|
||||
long pts = ((long)(clip[p + 9] & 14) << 29) | ((long)clip[p + 10] << 22) | ((long)(clip[p + 11] & 254) << 14) | ((long)clip[p + 12] << 7) | ((long)clip[p + 13] >> 1);
|
||||
for (var i = 0; i < tracks.Output.Length; i++)
|
||||
if (tracks.Output[i].Codec == "DVBSUB") output.Write(ClearSubtitle(tracks.Input[i], 256 + i, pts));
|
||||
if (tracks.Output[i].Codec == "DVBSUB") output.Write(ClearSubtitle(tracks.Input[i], 256 + i, pts,
|
||||
tracks.Input[0].Width ?? ContinuityStreams.Width, tracks.Input[0].Height ?? ContinuityStreams.Height));
|
||||
cleared = true;
|
||||
}
|
||||
}
|
||||
@@ -50,12 +51,12 @@ public static class BroadcastSlateProgram
|
||||
if (!written) throw new InvalidDataException("Status clip has no expected program map");
|
||||
return output.ToArray();
|
||||
}
|
||||
private static byte[] ClearSubtitle(MediaStream stream, int pid, long pts)
|
||||
private static byte[] ClearSubtitle(MediaStream stream, int pid, long pts, int width, int height)
|
||||
{
|
||||
var extra = (stream as BroadcastMediaStream)?.SubtitleExtraData;
|
||||
var page = extra is { Length: >= 2 } ? (extra[0] << 8) | extra[1] : 1;
|
||||
var payload = new byte[] { 32, 0,
|
||||
15, 20, (byte)(page >> 8), (byte)page, 0, 5, 0, 7, 127, 4, 55,
|
||||
15, 20, (byte)(page >> 8), (byte)page, 0, 5, 0, (byte)((width - 1) >> 8), (byte)(width - 1), (byte)((height - 1) >> 8), (byte)(height - 1),
|
||||
15, 16, (byte)(page >> 8), (byte)page, 0, 2, 1, 3,
|
||||
15, 128, (byte)(page >> 8), (byte)page, 0, 0, 255 };
|
||||
var pes = new List<byte> { 0, 0, 1, 189, 0, (byte)(payload.Length + 8), 128, 128, 5,
|
||||
|
||||
Reference in New Issue
Block a user