iVideoTrackReader iVideoTrack.createReader(EncodedQueue queue) { VideoSampleReader reader = VideoSampleReader.create(mp4); var videoSample = mp4.videoTrackSample; // Decrypt the SPS and initialize sample reader with it. // Some slice header fields are present or missing based on the data in SPS, for this reason reader needs decrypted SPS. var sps = videoSample.parseSps(); reader.setSps(ref sps); #if DEBUG if (null == queue) { return(reader); } #endif // Enqueue SPS and PPS NALUs var b = queue.nextEnqueue; videoSample.writeParameters(b, eParameterSet.SPS); queue.enqueue(b); b = queue.nextEnqueue; videoSample.writeParameters(b, eParameterSet.PPS); queue.enqueue(b); return(reader); }
/// <summary>Enqueue SPS and PPS NALUs</summary> internal override void enqueueParameters(EncodedQueue queue) { var b = queue.nextEnqueue; b.writeSps(sps[0]); queue.enqueue(b); b = queue.nextEnqueue; b.writePps(pps[0]); queue.enqueue(b); }
public VideoReader(MkvMediaFile file, TrackEntry track, VideoParams videoParams, EncodedQueue queue) : base(file, track) { this.queue = queue; #if DEBUG if (null == queue) { return; } #endif // Enqueue SPS and PPS NALUs videoParams.enqueueParameters(queue); }
iVideoTrackReader iVideoTrack.createReader(EncodedQueue queue) => new VideoReader(file, track, videoParams, queue);
internal abstract void enqueueParameters(EncodedQueue queue);
internal override void enqueueParameters(EncodedQueue queue) { throw new NotImplementedException(); }