Exemplo n.º 1
0
        public Arquivo_PLS(Arquivo_PLS oldValue)
        {
            this.versao = oldValue.versao;

            this.formato = new byte[oldValue.formato.Length];
            oldValue.formato.CopyTo(this.formato, 0);

            this.qtdArquivos = oldValue.qtdArquivos;

            this.listaVideos = new List <Video>();
            foreach (Video iv in oldValue.listaVideos)
            {
                //IVideo ivTemp = iv;

                if (iv is VideoV01)
                {
                    this.listaVideos.Add(new VideoV01((VideoV01)iv));
                }

                if (iv is VideoV02)
                {
                    this.listaVideos.Add(new VideoV02((VideoV02)iv));
                }

                //if (iv is VideoV03)
                //    this.listaVideos.Add(new VideoV03((VideoV03)iv));

                if (iv is VideoV04)
                {
                    this.listaVideos.Add(new VideoV04((VideoV04)iv));
                }
            }

            foreach (String s in oldValue.listaPaths)
            {
                this.listaPaths.Add(s);
            }
        }
Exemplo n.º 2
0
        public void LoadFromBytes(byte[] dados)
        {
            if (null == this.listaVideos)
            {
                this.listaVideos = new List <IVideo>();
            }
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoVideo04 *listaArquivos = (FormatoVideo04 *)pSrc;

                    Byte[] temporario = new byte[listaArquivos->qntFrames];

                    listaArquivos->Tamanho = (UInt32)dados.Length;

                    this.versao = listaArquivos->versao;

                    uint qtdFrames = listaArquivos->qntFrames;

                    // Limpa a lista
                    this.listaVideos.Clear();
                    int indice = sizeof(FormatoVideo04) - sizeof(UInt32);

                    for (int i = 0; i < qtdFrames; i++)
                    {
                        FormatoFrame temporaria = new FormatoFrame();

                        temporaria.x = BitConverter.ToUInt32(dados, indice);
                        indice      += sizeof(uint);

                        temporaria.y = BitConverter.ToUInt32(dados, indice);
                        indice      += sizeof(uint);

                        temporaria.height = BitConverter.ToUInt32(dados, indice);
                        indice           += sizeof(uint);

                        temporaria.width = BitConverter.ToUInt32(dados, indice);
                        indice          += sizeof(uint);



                        listaFrames.Add(temporaria);

                        // Pegar o tamanho do Arquivo
                        uint   tamanhoArquivo = BitConverter.ToUInt32(dados, indice);
                        byte[] dadosVideo     = new byte[tamanhoArquivo];

                        Array.Copy(dados, indice, dadosVideo, 0, tamanhoArquivo);

                        // índice do tamanho
                        indice += sizeof(uint);
                        // índice da versão
                        indice++;

                        // Pegar o formato do Arquivo Ex.: V02
                        if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V01"))
                        {
                            // Instancia o video a partir do formato
                            VideoV01 video = new VideoV01();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }
                        else if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V02"))
                        {
                            // Instancia o video a partir do formato
                            VideoV02 video = new VideoV02();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }
                        else if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("PLS"))
                        {
                            // Instancia o video a partir do formato
                            Arquivo_PLS video = new Arquivo_PLS();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }

                        indice = indice + dadosVideo.Length - (sizeof(uint) + 1 /*tamanho da versão*/);
                    }
                }
            }
        }