Advertisement
Thiagofsr

Untitled

Jun 21st, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.48 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.     unsigned char package_full[188];
  48.     int sync_byte;
  49.     int transport_error_indicator;
  50.     int payload_unit_start_indicator;
  51.     int transport_priority;
  52.     int PID;
  53.     int transport_scrambling_control;
  54.     int adaptation_field_control;
  55.     int continuity_counter;
  56. }TransStreamPack;
  57.  
  58.  
  59.  
  60.  
  61. void TransportStream(TransStreamPack pkt,unsigned char bytes[188]){
  62.        
  63.         pkt.sync_byte = (bytes[0] & 0xFF);
  64.        
  65.         pkt.transport_error_indicator = ((bytes[1] & 0xFF) >> 7) & 0x01;
  66.         pkt.payload_unit_start_indicator = ((bytes[1] & 0xFF) >> 6) & 0x01;
  67.         pkt.transport_priority = ((bytes[1] & 0xFF) >> 5) & 0x01;
  68.       //  pkt.PID = binToDec(Integer.toBinaryString((bytes[1] & 0xFF) & 0x1f)
  69.         //+ Integer.toBinaryString(bytes[2] & 0xFF)) & 0x1FFF;
  70.         pkt.transport_scrambling_control = ((bytes[3] & 0xFF) >> 6) & 0x03;
  71.         pkt.adaptation_field_control = ((bytes[3] & 0xFF) >> 4) & 0x03;
  72.         pkt.continuity_counter = (bytes[3] & 0xFF) & 0xF;
  73.  
  74.  
  75.  
  76. }
  77.  
  78.  
  79.  
  80.  int main (void){
  81.     /*Abrindo arquivo para leitura em modo binario*/
  82.  
  83.     FILE *stream;
  84.     unsigned char bytes[188];
  85.     size_t filesize;
  86.     int i;
  87.     TransStreamPack ts;
  88.  
  89.     stream = fopen ("video.ts","rb");
  90.     if(stream==NULL){
  91.         printf("Erro ao abrir arquivo.\n");
  92.         return 0;
  93.  
  94.     }
  95.     /*Obtendo o tamanho preciso do arquivo em bytes*/
  96.  
  97.     fseek (stream , 0 , SEEK_END);
  98.     filesize = ftell (stream);
  99.     rewind (stream);
  100.     if(feof(stream))
  101.         return 0;
  102.  
  103.     /* Lendo o pacote de 188 bytes para obtenção dos dados*/
  104.  
  105.     fread( bytes, sizeof(bytes), 1, stream );
  106.     TransportStream(ts,bytes);
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement