public override TsDescriptor Create(byte[] buffer, int offset, int length)
        {
            if (length < 4)
            {
                return((TsDescriptor)null);
            }
            int index = offset;

            TsIso639LanguageDescriptor.Language[] languages = new TsIso639LanguageDescriptor.Language[length / 4];
            int num = 0;

            while (length >= 4)
            {
                string @string   = this._latin1.GetString(buffer, index, 3);
                byte   audioType = buffer[3];
                languages[num++] = new TsIso639LanguageDescriptor.Language(@string, audioType);
                index           += 4;
                length          -= 4;
            }
            return((TsDescriptor) new TsIso639LanguageDescriptor(languages));
        }
        public override TsDescriptor Create(byte[] buffer, int offset, int length)
        {
            if (length < BlockLength)
                return null;

            var i = offset;
            var languages = new TsIso639LanguageDescriptor.Language[length / BlockLength];
            var languageIndex = 0;

            while (length >= BlockLength)
            {
                var language = _latin1.GetString(buffer, i, 3);

                var audio_type = buffer[3];

                languages[languageIndex++] = new TsIso639LanguageDescriptor.Language(language, audio_type);

                i += BlockLength;
                length -= BlockLength;
            }

            return new TsIso639LanguageDescriptor(languages);
        }