Exemplo n.º 1
0
        //Finds labels using LABL block between header and footer, also initializes array
        //protected bool GetLabels(int count)
        //{
        //    RWSDHeader* header = (RWSDHeader*)WorkingUncompressed.Address;
        //    int len = header->_header._length;
        //    RSEQ_LABLHeader* labl = (RSEQ_LABLHeader*)((int)header + len);

        //    if ((WorkingUncompressed.Length > len) && (labl->_tag == RSEQ_LABLHeader.Tag))
        //    {
        //        _labels = new LabelItem[count];
        //        count = labl->_numEntries;
        //        for (int i = 0; i < count; i++)
        //        {
        //            RSEQ_LABLEntry* entry = labl->Get(i);
        //            _labels[i] = new LabelItem() { String = entry->Name, Tag = entry->_id };
        //        }
        //        return true;
        //    }

        //    return false;
        //}

        private void ParseBlocks()
        {
            VoidPtr dataAddr = Header;
            int     len      = Header->_header._length;
            int     total    = WorkingUncompressed.Length;

            //Look for labl block
            RSEQ_LABLHeader *labl = (RSEQ_LABLHeader *)(dataAddr + len);

            if ((total > len) && (labl->_tag == RSEQ_LABLHeader.Tag))
            {
                int count = labl->_numEntries;
                _labels = new LabelItem[count];
                count   = labl->_numEntries;
                for (int i = 0; i < count; i++)
                {
                    RSEQ_LABLEntry *entry = labl->Get(i);
                    _labels[i] = new LabelItem()
                    {
                        String = entry->Name, Tag = entry->_id
                    };
                }
                len += labl->_size;
            }

            //Set data source
            if (total > len)
            {
                _audioSource = new DataSource(dataAddr + len, total - len);
            }
        }
Exemplo n.º 2
0
        //Finds labels using LABL block between header and footer, also initializes array
        protected bool GetLabels(int count)
        {
            RWSDHeader *     header = (RWSDHeader *)WorkingUncompressed.Address;
            int              len    = header->_header._length;
            RSEQ_LABLHeader *labl   = (RSEQ_LABLHeader *)((int)header + len);

            if ((WorkingUncompressed.Length > len) && (labl->_tag == RSEQ_LABLHeader.Tag))
            {
                _labels = new LabelItem[count];
                count   = labl->_numEntries;
                for (int i = 0; i < count; i++)
                {
                    RSEQ_LABLEntry *entry = labl->Get(i);
                    _labels[i] = new LabelItem()
                    {
                        String = entry->Name, Tag = entry->_id
                    };
                }
                return(true);
            }

            return(false);
        }