Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct{
- int table_id;
- int section_syntax_indicator;
- int zero;
- int reserved1;
- int section_length;
- int transport_stream_id;
- int reserved2;
- int version_number;
- int current_next_indicator;
- int section_number;
- int last_section_number;
- int program_map_PID;
- long int CRC_32;
- }PatInfo;
- typedef struct{
- int table_id ;
- int section_syntax_indicator ;
- int zero;
- int reserved1;
- int section_length;
- int program_number;
- int reserved2;
- int version_number;
- int current_next_indicator;
- int section_number;
- int last_section_number;
- int reserved3;
- int PCR_PID;
- int reserved4;
- int program_info_length;
- long int stream_type;
- long int reserved5;
- long int elementary_PID;
- long int reserved6;
- long int ES_info_length;
- long int CRC_32;
- }PmtInfo;
- typedef struct {
- unsigned char package_full[188];
- int sync_byte;
- int transport_error_indicator;
- int payload_unit_start_indicator;
- int transport_priority;
- int PID;
- int transport_scrambling_control;
- int adaptation_field_control;
- int continuity_counter;
- }TransStreamPack;
- void TransportStream(TransStreamPack pkt,unsigned char bytes[188]){
- pkt.sync_byte = (bytes[0] & 0xFF);
- pkt.transport_error_indicator = ((bytes[1] & 0xFF) >> 7) & 0x01;
- pkt.payload_unit_start_indicator = ((bytes[1] & 0xFF) >> 6) & 0x01;
- pkt.transport_priority = ((bytes[1] & 0xFF) >> 5) & 0x01;
- // pkt.PID = binToDec(Integer.toBinaryString((bytes[1] & 0xFF) & 0x1f)
- //+ Integer.toBinaryString(bytes[2] & 0xFF)) & 0x1FFF;
- pkt.transport_scrambling_control = ((bytes[3] & 0xFF) >> 6) & 0x03;
- pkt.adaptation_field_control = ((bytes[3] & 0xFF) >> 4) & 0x03;
- pkt.continuity_counter = (bytes[3] & 0xFF) & 0xF;
- }
- int main (void){
- /*Abrindo arquivo para leitura em modo binario*/
- FILE *stream;
- unsigned char bytes[188];
- size_t filesize;
- int i;
- TransStreamPack ts;
- stream = fopen ("video.ts","rb");
- if(stream==NULL){
- printf("Erro ao abrir arquivo.\n");
- return 0;
- }
- /*Obtendo o tamanho preciso do arquivo em bytes*/
- fseek (stream , 0 , SEEK_END);
- filesize = ftell (stream);
- rewind (stream);
- if(feof(stream))
- return 0;
- /* Lendo o pacote de 188 bytes para obtenção dos dados*/
- fread( bytes, sizeof(bytes), 1, stream );
- TransportStream(ts,bytes);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement