Ejemplo n.º 1
0
        public PrimaryAudioStreamInfo(MemoryStream ms) : base(PlaylistModel.StreamType.PrimaryAudio)
        {
            readStreamAttribute(ms);

            //StreamAttribute
            byte[]       attributeBuffer = ms.ReadFixedLengthByteArray(ms.ReadInt8());
            MemoryStream ms2             = new MemoryStream(attributeBuffer);

            AudioCodec = (AudioCodec)ms2.ReadInt8();
            int value = ms2.ReadInt8();

            AudioPresentationMode = (StreamModel.AudioPresentationMode)(value >> 4);
            SamplingRate samplingRate = (SamplingRate)(value & 0x0f);

            switch (samplingRate)
            {
            case SamplingRate._48: PrimarySamplingRate = 48000; break;

            case SamplingRate._96: PrimarySamplingRate = 96000; break;

            case SamplingRate._192: PrimarySamplingRate = 192000; break;

            default: throw new NotImplementedException(samplingRate.ToString());
            }

            LanguageCode = ms2.ReadFixedLengthString(3);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Writes our settings to an XML writer
 /// </summary>
 /// <param name="writer">an XML writer</param>
 public void WriteXml(System.Xml.XmlWriter writer)
 {
     writer.WriteAttributeString("BaudRate", BaudRate.ToString());
     writer.WriteAttributeString("ControllerType", ControllerType.ToString());
     writer.WriteAttributeString("SamplingChannels", SamplingChannels.ToString());
     writer.WriteAttributeString("SamplingCompression", SamplingCompression.ToString());
     writer.WriteAttributeString("SamplingMode", SamplingMode.ToString());
     writer.WriteAttributeString("SamplingRate", SamplingRate.ToString());
     writer.WriteAttributeString("SamplingTime", SamplingTime.ToString());
     writer.WriteAttributeString("SerialPortName", SerialPortName);
 }
Ejemplo n.º 3
0
        private void ParseProgram(byte[] buffer)
        {
            MemoryStream ms = new MemoryStream(buffer);

            ms.Position++;
            byte numPrograms = ms.ReadInt8();

            Programs = new Program[numPrograms];
            for (int i = 0; i < numPrograms; i++)
            {
                Programs[i] = new Program();
                Programs[i].ProgramSequenceStart = ms.ReadInt32BE();
                Programs[i].ProgramMapPid        = ms.ReadUInt16BE();
                Programs[i].NumStreams           = ms.ReadInt8();
                Programs[i].NumGroups            = ms.ReadInt8();
                Programs[i].ProgramStreams       = new ProgramStream[Programs[i].NumStreams];
                for (int j = 0; j < Programs[i].NumStreams; j++)
                {
                    ushort PID       = ms.ReadUInt16BE();
                    int    len       = ms.ReadInt8();
                    int    pos       = (int)ms.Position;
                    byte   codecType = ms.ReadInt8();
                    switch (codecType)
                    {
                    case 0x01:
                    case 0x02:
                    case 0x1b:
                    case 0xea:
                        VideoProgramStream child = new VideoProgramStream();
                        child.VideoCodec = (VideoCodec)codecType;
                        int value = ms.ReadInt8();
                        child.VideoResolution = (VideoResolution)(value >> 4);
                        FrameRate frameRate = (FrameRate)(value & 0x0f);
                        switch (frameRate)
                        {
                        case PlaylistModel.StreamModel.FrameRate._23_076: child.FrameRate = 23.976; break;

                        case PlaylistModel.StreamModel.FrameRate._24: child.FrameRate = 24; break;

                        case PlaylistModel.StreamModel.FrameRate._25: child.FrameRate = 25; break;

                        case PlaylistModel.StreamModel.FrameRate._29_976: child.FrameRate = 29.976; break;

                        case PlaylistModel.StreamModel.FrameRate._50: child.FrameRate = 50; break;

                        case PlaylistModel.StreamModel.FrameRate._59_94: child.FrameRate = 59.94; break;

                        default: throw new NotImplementedException(frameRate.ToString());
                        }
                        Programs[i].ProgramStreams[j] = child;
                        break;

                    case 0x03:
                    case 0x04:
                    case 0x80:
                    case 0x81:
                    case 0x82:
                    case 0x83:
                    case 0x84:
                    case 0x85:
                    case 0x86:
                    case 0xa1:
                    case 0xa2:
                        AudioProgramStream child2 = new AudioProgramStream();
                        child2.AudioCodec = (AudioCodec)codecType;
                        int value2 = ms.ReadInt8();
                        child2.AudioPresentationMode = (AudioPresentationMode)(value2 >> 4);
                        SamplingRate samplingRate = (SamplingRate)(value2 & 0x0f);
                        switch (samplingRate)
                        {
                        case SamplingRate._48: child2.PrimarySamplingRate = 48000; break;

                        case SamplingRate._96: child2.PrimarySamplingRate = 96000; break;

                        case SamplingRate._192: child2.PrimarySamplingRate = 192000; break;

                        default: throw new NotImplementedException(samplingRate.ToString());
                        }
                        child2.LanguageCode           = ms.ReadFixedLengthString(3);
                        Programs[i].ProgramStreams[j] = child2;
                        break;

                    case 0x90:
                    case 0x91:
                    case 0xa0:
                        GraphicsProgramStream child3 = new GraphicsProgramStream();
                        child3.LanguageCode           = ms.ReadFixedLengthString(3);
                        Programs[i].ProgramStreams[j] = child3;
                        break;

                    case 0x92:
                        SubtitleProgramStream child4 = new SubtitleProgramStream();
                        child4.CharCode               = ms.ReadInt8();
                        child4.LanguageCode           = ms.ReadFixedLengthString(3);
                        Programs[i].ProgramStreams[j] = child4;
                        break;

                    default:
                        Debug.WriteLine(String.Format("Unknown codec type: {0}", codecType));
                        break;
                    }

                    ms.Position = pos + len;
                    Programs[i].ProgramStreams[j].PID = PID;
                }
            }
        }