#ifndef _TSPACKET_H_ #define _TSPACKET_H_ /** * Esse arquivo possui fun??????es que retornam os campos de um pacote TS * As informa??????es necess???rias para a constru??????o deste arquivo estao na especifica??????o * ISO/IEC 13818-1, Table 2-2, pag 18. * **/ #include #include #include #include //#include "section.h" #define PID_PACOTE_NULO 0x1FFF /* 71 == 0x47*/ #define SYNC_BYTE 71 #define PACKET_SIZE 188 #define MAX_PAYLOAD_SIZE 184 #define STUFFING_BYTE 0xFF #define AFC_RESERVED 0 #define AFC_ONLY_PAYLOAD 1 #define AFC_ONLY_ADAPT_FIELD 2 #define AFC_BOTH_PAYLOAD_AND_ADAPT_FIELD 3 #define SC_NOT_SCRAMBLED 0 #define SC_USER_DEFINED_1 1 #define SC_USER_DEFINED_2 2 #define SC_USER_DEFINED_3 3 #ifndef NULL #define NULL 0 #endif /// Assinatura das funcoes: /// Genericas unsigned char * getPayload (unsigned char * pacote, unsigned int * length); unsigned int getPayloadLength (unsigned char * pacote); unsigned int getAdaptationFieldLength (unsigned char * pacote); char hasAdaptationField (unsigned char * pacote); //char assert (int value); unsigned int generateGenericTsPackets(unsigned char * tsPacketInitial, int pid, unsigned char * section, unsigned int tableSize); unsigned int generateTsPacket(unsigned char * tsPacketInitial, int pid, unsigned char * section); void create_ts_null_packet(unsigned char *buffer); /// Gets tamanho unsigned getSectionLength(unsigned char * section); unsigned getSectionDataLength(unsigned char * section); /// Gets do cabecalho ts ... int getSyncByte (unsigned char * pacote); char getTransportErrorIndicator (unsigned char * pacote); unsigned char getPayloadUnitStartIndicator (unsigned char * pacote); char getTransportPriority (unsigned char * pacote); int getPid (unsigned char * pacote); char getTransportScramblingControl(unsigned char * pacote); unsigned int getAdaptationFieldControl (unsigned char * pacote); unsigned int getAdaptationFieldLength (unsigned char * pacote); unsigned getContinuityCounter (unsigned char * pacote); /// Sets do cabecalho ts ... void setSyncByte (unsigned char * pacote, int value); void setTransportErrorIndicator (unsigned char * pacote, unsigned char transportError); void setPayloadUnitStartIndicator (unsigned char * pacote, unsigned char payloadUnitStart); void setTransportPriority (unsigned char * pacote, unsigned char transportPriority); void setPid (unsigned char * pacote, int pid); void setTransportScramblingControl(unsigned char * pacote, unsigned char scramblingControl); void setAdaptationFieldControl (unsigned char * pacote, unsigned char adaptationFieldControl); void setContinuityCounter (unsigned char * pacote, unsigned char continuityCounter); void setPayload (unsigned char * pacote, unsigned char *data, unsigned length); void setAdaptationFieldLength (unsigned char * pacote, int length); /// Adaptation Field char hasPcr (unsigned char * pacote); int64_t getPcrBase (unsigned char * pacote); int64_t getPcrExtension (unsigned char * pacote); char getDiscontinuityIndicator (unsigned char * pacote); char getRandomAccessIndicator (unsigned char * pacote); char getElementaryStreamPriorityIndicator(unsigned char * pacote); char getPcrFlag (unsigned char * pacote); char getOpcrFlag (unsigned char * pacote); char getSplicingPointFlag (unsigned char * pacote); char getTransportPrivateDataFlag (unsigned char * pacote); char getAdaptationFieldExtensionFlag(unsigned char * pacote); void setPcrBase (unsigned char * pacote, int64_t pcrBase); void setPcrExtension (unsigned char * pacote, int64_t pcrExtension); void setDiscontinuityIndicator (unsigned char * pacote, int value); void setRandomAccessIndicator (unsigned char * pacote, int value); void setElementaryStreamPriorityIndicator(unsigned char * pacote, int value); void setPcrFlag (unsigned char * pacote, char flag); void setOpcrFlag (unsigned char * pacote, char flag); void setSplicingPointFlag (unsigned char * pacote, char flag); void setTransportPrivateDataFlag (unsigned char * pacote, char flag); void setFlagsZero (unsigned char * pacote); void setAdaptationFieldExtensionFlag(unsigned char * pacote, char flag); #endif // _TSPACKET_H_