Exemplo n.º 1
0
        public static int probe(MemoryStream b)
        {
            long marker = 0xffffffff;

            int  score = 0;
            bool inVideoPes = false, hasHeader = false, slicesStarted = false;

            while (b.hasRemaining())
            {
                int code = b.get() & 0xff;
                marker = (marker << 8) | code;
                if (marker < 0x100 || marker > 0x1ff)
                {
                    continue;
                }

                if (MPSUtils.videoMarker(marker))
                {
                    if (inVideoPes)
                    {
                        break;
                    }
                    else
                    {
                        inVideoPes = true;
                    }
                }
                else if (marker >= 0x1B0 && marker <= 0x1B8 && inVideoPes)
                {
                    if ((hasHeader && marker != 0x1B5 && marker != 0x1B2) || slicesStarted)
                    {
                        break;
                    }
                    score += 5;
                }
                else if (marker == 0x100 && inVideoPes)
                {
                    if (slicesStarted)
                    {
                        break;
                    }
                    hasHeader = true;
                }
                else if (marker > 0x100 && marker < 0x1B0)
                {
                    if (!hasHeader)
                    {
                        break;
                    }
                    if (!slicesStarted)
                    {
                        score        += 50;
                        slicesStarted = true;
                    }
                    score += 1;
                }
            }

            return(score);
        }
Exemplo n.º 2
0
        public PESPacket nextPacket(MemoryStream outb)
        {
            MemoryStream dup = outb.duplicate();

            while (!MPSUtils.psMarker(curMarker))
            {
                if (!skipToMarker())
                {
                    return(null);
                }
            }

            MemoryStream fork = dup.duplicate();

            readToNextMarker(dup);
            PESPacket pkt = MPSUtils.readPESHeader(fork, curPos());

            if (pkt.length == 0)
            {
                while (!MPSUtils.psMarker(curMarker) && readToNextMarker(dup))
                {
                    ;
                }
            }
            else
            {
                read(dup, pkt.length - dup.position() + 6);
            }
            fork.limit(dup.position());
            pkt.data = fork;
            return(pkt);
        }
Exemplo n.º 3
0
        public List <MPEGDemuxerTrack> getAudioTracks()
        {
            List <MPEGDemuxerTrack> result = new List <MPEGDemuxerTrack>();

            foreach (BaseTrack p in streams.Values)
            {
                if (MPSUtils.audioStream(p.streamId))
                {
                    result.Add(p);
                }
            }
            return(result);
        }
Exemplo n.º 4
0
 public override DemuxerTrackMeta getMeta()
 {
     return(new DemuxerTrackMeta(MPSUtils.videoStream(streamId) ? DemuxerTrackMeta.Type.VIDEO : (MPSUtils.audioStream(streamId) ? DemuxerTrackMeta.Type.AUDIO : DemuxerTrackMeta.Type.OTHER), null,
                                 0, 0, null));
 }