demux.h 1.43 KB
/*
 * demux.h
 *
 *  Created on: 09/10/2008
 *      Author: lacet
 */

#ifndef DEMUX_H_
#define DEMUX_H_

#include "filter.h"
#include <vector>
#include "jthread.h"
#include <pthread.h>
#include "demuxListener.h"
#include "ouvinteDemux.h"
#include "ouvinteInput.h"


using namespace std;

using namespace jthread;

class Demux : public OuvinteInput {

private:

	vector<Filter*> *permanentFilters;
	//vector<Filter*> *filters;
	//Filter* *filters;
	//Filter* filter;
	vector<Filter*> *addedFilter;
	vector<Filter*> *filtersAux;
	SectionBuffer* mySectionBuffer;
	DemuxListener* listener;
	int sectionSize;

	int sectionRead;
	unsigned char section[MAX_SECTION_SIZE];
	int payloadSize;
	int firstPart;
	int quantity;
	int remain;
	int countPacotes;
	unsigned char sectionData[MAX_SECTION_SIZE];
	int continuityCounter;
	int lastContinuityCounter;
        int flagShiftPointerField;

        std::list<OuvinteDemux*> * ouvintes;
        pthread_mutex_t *mutex;

public:
	//void setDemuxListener();
	void setDemuxListener(DemuxListener* listener);
	Filter* filter;
	~Demux();
	Demux(int pid);
	Demux(int pid, DemuxListener* listener);
	Filter* getFilter();
	int getNextSection(unsigned char* packet, Packet *myPacket);
        
        virtual void chegouInput(unsigned char *pacote);
        void registraOuvinte(OuvinteDemux * ouvinte);
        void removeOuvinte(OuvinteDemux * ouvinte);
        void notificaOuvintes(unsigned char * CC);

};

#endif /* DEMUX_H_ */