You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdemultimedia/mpeglib/lib/mpgplayer/mpegStreamPlayer.h

91 lines
1.8 KiB

/*
feeds audio/video streams to the decoders
Copyright (C) 2000 Martin Vogt
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published by
the Free Software Foundation.
For more information look at the file COPYRIGHT in this package
*/
#ifndef __MPEGSTREAMPLAYER_H
#define __MPEGSTREAMPLAYER_H
#include "../decoder/decoderPlugin.h"
#include "../util/syncClock.h"
class MpegSystemHeader;
class MpegStreamPlayer {
protected:
SyncClock* syncClock;
DecoderPlugin* audioDecoder;
DecoderPlugin* videoDecoder;
BufferInputStream* audioInput;
BufferInputStream* videoInput;
OutputStream* output;
InputStream* input;
TimeStamp* timeStampVideo;
TimeStamp* timeStampAudio;
int packetCnt;
int audioPacketCnt;
int videoPacketCnt;
int seekPos;
int writeToDisk;
char* nukeBuffer;
public:
MpegStreamPlayer(InputStream* input,
OutputStream* output,
DecoderPlugin* audioDecoder,
DecoderPlugin* videoDecoder);
~MpegStreamPlayer();
int isInit();
void processThreadCommand(Command* command);
//
// Mpeg special functions [START]
//
int processSystemHeader(MpegSystemHeader* mpegSystemHeader);
int insertAudioData(MpegSystemHeader* header,int len);
int insertVideoData(MpegSystemHeader* header,int len);
//
// Mpeg special functions [END]
//
int insertAudioDataRaw(unsigned char* input,int len,TimeStamp* stamp);
int insertVideoDataRaw(unsigned char* input,int len,TimeStamp* stamp);
void dumpData(MpegSystemHeader* mpegSystemHeader);
void setWriteToDisk(int lwriteToDisk);
int getWriteToDisk();
int hasEnd();
protected:
int processResyncRequest();
int getByteDirect();
void nuke(int byte);
// useful methods
int finishAudio(int len);
int finishVideo(int len);
};
#endif