Advertisement
Thiagofsr

Project Lavid

Jun 21st, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct{
  6.     int table_id;
  7.     int section_syntax_indicator;
  8.     int zero;
  9.     int reserved1;
  10.     int section_length;
  11.     int transport_stream_id;
  12.     int reserved2;
  13.     int version_number;
  14.     int current_next_indicator;
  15.     int section_number;
  16.     int last_section_number;
  17.     int program_map_PID;
  18.     long int CRC_32;
  19. }PatInfo;
  20.  
  21. typedef struct{
  22.    int table_id ;
  23.     int section_syntax_indicator ;
  24.     int zero;
  25.     int reserved1;
  26.     int section_length;
  27.     int program_number;
  28.     int reserved2;
  29.     int version_number;
  30.     int current_next_indicator;
  31.     int section_number;
  32.     int last_section_number;
  33.     int reserved3;
  34.     int PCR_PID;
  35.     int reserved4;
  36.     int program_info_length;
  37.     long int stream_type;
  38.     long int reserved5;
  39.     long int elementary_PID;
  40.     long int reserved6;
  41.     long int ES_info_length;
  42.     long int CRC_32;
  43. }PmtInfo;
  44.  
  45. typedef struct {
  46.  
  47.     int sync_byte;
  48.     int transport_error_indicator;
  49.     int payload_unit_start_indicator;
  50.     int transport_priority;
  51.     int PID;
  52.     int transport_scrambling_control;
  53.     int adaptation_field_control;
  54.     int continuity_counter;
  55. }TransStreamPack;
  56.  
  57.  
  58. int main(){
  59.     int main (void){
  60.     FILE *stream;
  61.     unsigned char buffer[188];
  62.     size_t filesize;
  63.     int i;
  64.  
  65.     stream = fopen ("video.ts","rb");
  66.     if(stream==NULL){
  67.         printf("Erro ao abrir arquivo.\n");
  68.         return 0;
  69.  
  70.     }
  71.     //Obtendo tamanho do arquivo
  72.     fseek (stream , 0 , SEEK_END);
  73.     filesize = ftell (stream);
  74.     rewind (stream);
  75.     if(feof(stream))
  76.         return 0;
  77.  
  78.     fread( buffer, sizeof( buffer ), 1, stream );
  79.  
  80.     /* Montei as estruturas com todos os dados que preciso preencher das tabelas.
  81.      O problema encontra-se em como localizar os dados através dos bytes dos
  82.      packets. Sei que cada packet possui um tamanho de 188 bytes, e também que
  83.      no início de cada packet encontra-se o cabeçalho contendo os dados da
  84.      TransportStreamPackage, que é exatamente a estrutura que me guiará no processo.
  85.      Lendo, vi que o cabeçalho é constituído de 4 bytes. Então como proceder para
  86.      pegar os dados? :D
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.     }
  94.  
  95.  
  96.  
  97. return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement