1 /*************************************************************************** 2 Base class for Mpeg Demuxer 3 ------------------- 4 5 copyright : (C) 2005--2008 by mean 6 email : fixounet@free.fr 7 ***************************************************************************/ 8 9 /*************************************************************************** 10 * * 11 * This program is free software; you can redistribute it and/or modify * 12 * it under the terms of the GNU General Public License as published by * 13 * the Free Software Foundation; either version 2 of the License, or * 14 * (at your option) any later version. * 15 * * 16 ***************************************************************************/ 17 18 #ifndef DMX_DMX 19 #define DMX_DMX 20 21 #include "ADM_coreDemuxerMpeg6_export.h" 22 #include "dmx_io.h" 23 24 #include "dmx_indexer.h" 25 26 typedef enum 27 { 28 DMX_PAYLOAD_ERROR=0, 29 DMX_PAYLOAD_MPEG2=1, 30 DMX_PAYLOAD_MPEG4, 31 DMX_PAYLOAD_H264 32 }dmx_payloadType; 33 /** 34 \class dmx_demuxer 35 \brief low level mpeg demuxer, also used for the hack called MS-DVR 36 37 */ 38 class ADM_COREDEMUXER6_EXPORT dmx_demuxer 39 { 40 protected : 41 42 uint64_t _size; 43 uint8_t _lastErr; // Very important : The derivated signals an error using that! 44 45 public: 46 dmx_demuxer(); 47 virtual ~dmx_demuxer(); 48 49 virtual uint8_t open(const char *name)=0; hasAudio(void)50 virtual uint8_t hasAudio(void) { return 0;} 51 52 virtual uint8_t forward(uint32_t f)=0; 53 virtual uint8_t stamp(void)=0; 54 virtual uint64_t elapsed(void)=0; 55 56 virtual uint8_t getPos( uint64_t *abs,uint64_t *rel)=0; 57 virtual uint8_t setPos( uint64_t abs,uint64_t rel)=0; 58 getSize(void)59 virtual uint64_t getSize( void) { return _size;} 60 virtual uint8_t getStats(uint64_t *stat)=0; getAllPTS(uint64_t * stat)61 virtual uint8_t getAllPTS(uint64_t *stat) {return 0;}; 62 63 virtual uint32_t read(uint8_t *w,uint32_t len)=0; 64 virtual uint8_t read8i(void)=0; 65 virtual uint16_t read16i(void)=0; 66 virtual uint32_t read32i(void)=0; 67 syncH264(uint8_t * stream,uint64_t * abs,uint64_t * r,uint64_t * pts,uint64_t * dts)68 virtual uint8_t syncH264( uint8_t *stream,uint64_t *abs,uint64_t *r,uint64_t *pts, uint64_t *dts) {return 0;}; 69 70 virtual uint8_t sync( uint8_t *stream,uint64_t *abs,uint64_t *r,uint64_t *pts, uint64_t *dts)=0; changePid(uint32_t pid,uint32_t pes)71 virtual uint8_t changePid(uint32_t pid,uint32_t pes) {return 0;} 72 // Read a PES packet readPes(uint8_t * data,uint32_t * pesBlockLen,uint32_t * dts,uint32_t * pts)73 virtual uint8_t readPes(uint8_t *data, uint32_t *pesBlockLen, uint32_t *dts,uint32_t *pts) {return 0;} 74 }; 75 76 77 #endif 78