libeplayer3/writer: add fd to writer class

This commit is contained in:
martii
2014-05-01 12:51:26 +02:00
parent e2e5582c64
commit b767224487
11 changed files with 58 additions and 51 deletions

View File

@@ -35,13 +35,13 @@
class WriterAC3 : public Writer
{
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
bool Write(AVPacket *packet, int64_t pts);
WriterAC3();
};
bool WriterAC3::Write(int fd, AVStream * /* stream */, AVPacket *packet, int64_t pts)
bool WriterAC3::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];

View File

@@ -37,20 +37,23 @@ class WriterDIVX : public Writer
{
private:
bool initialHeader;
AVStream *stream;
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
void Init();
bool Write(AVPacket *packet, int64_t pts);
void Init(int fd, AVStream *_stream);
WriterDIVX();
};
void WriterDIVX::Init()
void WriterDIVX::Init(int _fd, AVStream *_stream)
{
fd = _fd;
stream = _stream;
initialHeader = true;
}
bool WriterDIVX::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
bool WriterDIVX::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
@@ -101,7 +104,6 @@ WriterDIVX::WriterDIVX()
Register(this, AV_CODEC_ID_MSMPEG4V1, VIDEO_ENCODING_MPEG4P2);
Register(this, AV_CODEC_ID_MSMPEG4V2, VIDEO_ENCODING_MPEG4P2);
Register(this, AV_CODEC_ID_MSMPEG4V3, VIDEO_ENCODING_MPEG4P2);
Init();
}
static WriterDIVX writer_divx __attribute__ ((init_priority (300)));

View File

@@ -36,13 +36,13 @@
class WriterDTS : public Writer
{
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
bool Write(AVPacket *packet, int64_t pts);
WriterDTS();
};
bool WriterDTS::Write(int fd, AVStream * /* stream */, AVPacket *packet, int64_t pts)
bool WriterDTS::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_AUDIO_HEADER_SIZE];

View File

@@ -32,13 +32,13 @@
class WriterH263 : public Writer
{
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
bool Write(AVPacket *packet, int64_t pts);
WriterH263();
};
bool WriterH263::Write(int fd, AVStream * /* stream */, AVPacket *packet, int64_t pts)
bool WriterH263::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];

View File

@@ -52,21 +52,24 @@ class WriterH264 : public Writer
private:
bool initialHeader;
unsigned int NalLengthBytes;
AVStream *stream;
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
void Init();
bool Write(AVPacket *packet, int64_t pts);
void Init(int _fd, AVStream *_stream);
WriterH264();
};
void WriterH264::Init(void)
void WriterH264::Init(int _fd, AVStream *_stream)
{
fd = _fd;
stream = _stream;
initialHeader = true;
NalLengthBytes = 1;
}
bool WriterH264::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
bool WriterH264::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
unsigned int TimeDelta;
@@ -249,7 +252,6 @@ bool WriterH264::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
WriterH264::WriterH264()
{
Register(this, AV_CODEC_ID_H264, VIDEO_ENCODING_H264);
Init();
}
static WriterH264 writerh264 __attribute__ ((init_priority (300)));

View File

@@ -35,13 +35,13 @@
class WriterMP3 : public Writer
{
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
bool Write(AVPacket *packet, int64_t pts);
WriterMP3();
};
bool WriterMP3::Write(int fd, AVStream * /* stream */, AVPacket *packet, int64_t pts)
bool WriterMP3::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];

View File

@@ -35,13 +35,13 @@
class WriterMPEG2 : public Writer
{
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
bool Write(AVPacket *packet, int64_t pts);
WriterMPEG2();
};
bool WriterMPEG2::Write(int fd, AVStream * /* stream */, AVPacket *packet, int64_t pts)
bool WriterMPEG2::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];

View File

@@ -71,6 +71,7 @@ class WriterPCM : public Writer
int uSampleRate;
int uBitsPerSample;
AVStream *stream;
SwrContext *swr;
AVFrame *decoded_frame;
int out_sample_rate;
@@ -80,10 +81,10 @@ class WriterPCM : public Writer
bool restart_audio_resampling;
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
bool Write(AVPacket *packet, int64_t pts);
bool prepareClipPlay();
bool writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size);
void Init();
bool writePCM(int64_t Pts, uint8_t *data, unsigned int size);
void Init(int _fd, AVStream *_stream);
WriterPCM();
};
@@ -148,7 +149,7 @@ bool WriterPCM::prepareClipPlay()
return true;
}
bool WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
bool WriterPCM::writePCM(int64_t Pts, uint8_t *data, unsigned int size)
{
bool res = true;
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
@@ -219,17 +220,16 @@ bool WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
return res;
}
void WriterPCM::Init()
void WriterPCM::Init(int _fd, AVStream *_stream)
{
fd = _fd;
stream = _stream;
initialHeader = true;
restart_audio_resampling = true;
}
bool WriterPCM::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
bool WriterPCM::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0)
return false;
if (!packet) {
restart_audio_resampling = true;
return true;
@@ -332,7 +332,7 @@ bool WriterPCM::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
out_samples = swr_convert(swr, &output, out_samples, (const uint8_t **) &decoded_frame->data[0], in_samples);
if (!writePCM(fd, pts, output, out_samples * sizeof(short) * out_channels)) {
if (!writePCM(pts, output, out_samples * sizeof(short) * out_channels)) {
restart_audio_resampling = true;
break;
}
@@ -353,7 +353,6 @@ WriterPCM::WriterPCM()
decoded_frame = av_frame_alloc();
Register(this, AV_CODEC_ID_INJECTPCM, AUDIO_ENCODING_LPCMA);
Init();
}
static WriterPCM writer_pcm __attribute__ ((init_priority (300)));

View File

@@ -50,20 +50,23 @@ class WriterVC1 : public Writer
private:
bool initialHeader;
uint8_t FrameHeaderSeen;
AVStream *stream;
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
void Init();
bool Write(AVPacket *packet, int64_t pts);
void Init(int _fd, AVStream *_stream);
WriterVC1();
};
void WriterVC1::Init()
void WriterVC1::Init(int _fd, AVStream *_stream)
{
fd = _fd;
stream = _stream;
initialHeader = true;
}
bool WriterVC1::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
bool WriterVC1::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
if (initialHeader) {
@@ -181,7 +184,6 @@ bool WriterVC1::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
WriterVC1::WriterVC1()
{
Register(this, AV_CODEC_ID_VC1, VIDEO_ENCODING_VC1);
Init();
}
static WriterVC1 writer_vc1 __attribute__ ((init_priority (300)));

View File

@@ -57,20 +57,23 @@ class WriterWMV : public Writer
{
private:
bool initialHeader;
AVStream *stream;
public:
bool Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts);
void Init();
bool Write(AVPacket *packet, int64_t pts);
void Init(int _fd, AVStream *_stream);
WriterWMV();
};
void WriterWMV::Init()
void WriterWMV::Init(int _fd, AVStream *_stream)
{
fd = _fd;
stream = _stream;
initialHeader = true;
}
bool WriterWMV::Write(int fd, AVStream *stream, AVPacket *packet, int64_t pts)
bool WriterWMV::Write(AVPacket *packet, int64_t pts)
{
if (fd < 0 || !packet || !packet->data)
if (!packet || !packet->data)
return false;
if (initialHeader) {
@@ -164,7 +167,6 @@ WriterWMV::WriterWMV()
Register(this, AV_CODEC_ID_WMV1, VIDEO_ENCODING_WMV);
Register(this, AV_CODEC_ID_WMV2, VIDEO_ENCODING_WMV);
Register(this, AV_CODEC_ID_WMV3, VIDEO_ENCODING_WMV);
Init();
}
static WriterWMV writer_wmv __attribute__ ((init_priority (300)));

View File

@@ -58,7 +58,7 @@ void Writer::Register(Writer *w, enum AVCodecID id, audio_encoding_t encoding)
aencoding[id] = encoding;
}
bool Writer::Write(int /* fd */, AVStream * /*stream*/, AVPacket * /* packet */, int64_t /* pts */)
bool Writer::Write(AVPacket * /* packet */, int64_t /* pts */)
{
return false;
}