Exemplo n.º 1
0
        public static Subchannel DeinterleaveSubchannel(byte[] subchannel)
        {
            Subchannel sub = new Subchannel();

            for (int i = 0; i < 12; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    sub.p[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x80), j);
                    sub.q[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x40), j-1);
                    sub.r[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x20), j-2);
                    sub.s[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x10), j-3);
                    sub.t[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x8), j-4);
                    sub.u[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x4), j-5);
                    sub.v[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x2), j-6);
                    sub.w[i] += ShiftRight((byte)(subchannel[j + i * 8] & 0x1), j-7);
                }
            }

            return sub;
        }
Exemplo n.º 2
0
        public static Subchannel UnpackSubchannel(byte[] subchannel)
        {
            Subchannel sub = new Subchannel();

            Array.Copy(subchannel, 0, sub.p, 0, 12);
            Array.Copy(subchannel, 12, sub.q, 0, 12);
            Array.Copy(subchannel, 24, sub.r, 0, 12);
            Array.Copy(subchannel, 36, sub.s, 0, 12);
            Array.Copy(subchannel, 48, sub.t, 0, 12);
            Array.Copy(subchannel, 60, sub.u, 0, 12);
            Array.Copy(subchannel, 72, sub.v, 0, 12);
            Array.Copy(subchannel, 84, sub.w, 0, 12);

            return sub;
        }
Exemplo n.º 3
0
        public static byte[] InterleaveSubchannel(Subchannel sub)
        {
            byte[] subchannel = new byte[96];

            for (int i = 0; i < 12; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.p[i] & (0x80 >> j)), j);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.q[i] & (0x80 >> j)), j-1);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.r[i] & (0x80 >> j)), j-2);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.s[i] & (0x80 >> j)), j-3);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.t[i] & (0x80 >> j)), j-4);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.u[i] & (0x80 >> j)), j-5);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.v[i] & (0x80 >> j)), j-6);
                    subchannel[j + i * 8] += ShiftLeft((byte)(sub.w[i] & (0x80 >> j)), j-7);
                }
            }

            return subchannel;
        }