libeplayer3: change extradata handling

This commit is contained in:
martii
2014-04-05 11:05:37 +02:00
parent 5e2d44cc5d
commit 85bcfb4a17
13 changed files with 50 additions and 279 deletions

View File

@@ -914,8 +914,8 @@ static int Write(Context_t *context, AudioVideoOut_t *out)
audio = !strcmp("audio", out->type);
linuxdvb_printf(20,
"DataLength=%u PrivateLength=%u Pts=%llu FrameRate=%f\n",
out->len, out->extralen, out->pts, out->frameRate);
"DataLength=%u Pts=%llu FrameRate=%f\n",
out->len, out->pts, out->frameRate);
linuxdvb_printf(20, "v%d a%d\n", video, audio);
if (video) {
@@ -942,8 +942,6 @@ static int Write(Context_t *context, AudioVideoOut_t *out)
call.data = out->data;
call.len = out->len;
call.Pts = out->pts;
call.private_data = out->extradata;
call.private_size = out->extralen;
call.FrameRate = out->frameRate;
call.FrameScale = out->timeScale;
call.Width = out->width;
@@ -986,12 +984,16 @@ static int Write(Context_t *context, AudioVideoOut_t *out)
call.data = out->data;
call.len = out->len;
call.Pts = out->pts;
call.private_data = out->extradata;
call.private_size = out->extralen;
call.FrameRate = out->frameRate;
call.FrameScale = out->timeScale;
call.Version = 0; /* -1; unsigned char cannot be negative */
call.uNoOfChannels = out->uNoOfChannels;
call.uSampleRate = out->uSampleRate;
call.uBitsPerSample = out->uBitsPerSample;
call.bLittleEndian = out->bLittleEndian;
if (writer->writeData)
res = writer->writeData(&call);

View File

@@ -152,8 +152,8 @@ static int writeData(WriterAVCallData_t *call)
iov[ic++].iov_len = FakeHeaderLength;
if (initialHeader) {
iov[ic].iov_base = call->private_data;
iov[ic++].iov_len = call->private_size;
iov[ic].iov_base = call->stream->codec->extradata;
iov[ic++].iov_len = call->stream->codec->extradata_size;
initialHeader = 0;
}

View File

@@ -153,9 +153,9 @@ static int writeData(WriterAVCallData_t *call)
iov[ic++].iov_base = PesHeader;
if (initialHeader) {
initialHeader = 0;
iov[ic].iov_base = call->private_data;
iov[ic++].iov_len = call->private_size;
PacketLength += call->private_size;
iov[ic].iov_base = call->stream->codec->extradata;
iov[ic++].iov_len = call->stream->codec->extradata_size;
PacketLength += call->stream->codec->extradata_size;
}
iov[ic].iov_base = call->data;
iov[ic++].iov_len = call->len;
@@ -173,7 +173,7 @@ static int writeData(WriterAVCallData_t *call)
}
if (initialHeader) {
avcC_t *avcCHeader = (avcC_t *) call->private_data;
avcC_t *avcCHeader = (avcC_t *) call->stream->codec->extradata;
unsigned int i;
unsigned int ParamSets;
unsigned int ParamOffset;

View File

@@ -46,7 +46,6 @@
#include "misc.h"
#include "pes.h"
#include "writer.h"
#include "pcm.h"
/* ***************************** */
/* Makros/Constants */
@@ -207,15 +206,12 @@ static int writeData(WriterAVCallData_t *call)
return 0;
}
pcmPrivateData_t *pcmPrivateData =
(pcmPrivateData_t *) call->private_data;
if (initialHeader) {
initialHeader = 0;
prepareClipPlay(pcmPrivateData->uNoOfChannels,
pcmPrivateData->uSampleRate,
pcmPrivateData->uBitsPerSample,
pcmPrivateData->bLittleEndian);
prepareClipPlay(call->uNoOfChannels,
call->uSampleRate,
call->uBitsPerSample,
call->bLittleEndian);
}
unsigned char *buffer = call->data;
@@ -254,7 +250,7 @@ static int writeData(WriterAVCallData_t *call)
iov[2].iov_len = SubFrameLen;
//write the PCM data
if (pcmPrivateData->uBitsPerSample == 16) {
if (call->uBitsPerSample == 16) {
for (n = 0; n < SubFrameLen; n += 2) {
unsigned char tmp;
tmp = injectBuffer[n];

View File

@@ -144,7 +144,7 @@ static int writeData(WriterAVCallData_t *call)
vc1_printf(10, "VideoPts %lld\n", call->Pts);
vc1_printf(10, "Got Private Size %d\n", call->private_size);
vc1_printf(10, "Got Private Size %d\n", call->stream->codec->extradata_size);
if (initialHeader) {
@@ -202,8 +202,8 @@ static int writeData(WriterAVCallData_t *call)
/* For VC1 the codec private data is a standard vc1 sequence header so we just copy it to the output */
iov[0].iov_base = PesHeader;
iov[1].iov_base = call->private_data;
iov[1].iov_len = call->private_size;
iov[1].iov_base = call->stream->codec->extradata;
iov[1].iov_len = call->stream->codec->extradata_size;
iov[0].iov_len =
InsertPesHeader(PesHeader, iov[1].iov_len,
VC1_VIDEO_PES_START_CODE, INVALID_PTS_VALUE,

View File

@@ -141,12 +141,9 @@ static int writeData(WriterAVCallData_t *call)
}
wmv_printf(10, "VideoPts %lld\n", call->Pts);
wmv_printf(10, "Got Private Size %d\n", call->private_size);
wmv_printf(10, "Got Private Size %d\n", call->stream->codec->extradata_size);
memcpy(private_data.privateData, call->private_data,
call->private_size >
WMV3_PRIVATE_DATA_LENGTH ? WMV3_PRIVATE_DATA_LENGTH : call->
private_size);
memcpy(private_data.privateData, call->stream->codec->extradata, call->stream->codec->extradata_size > WMV3_PRIVATE_DATA_LENGTH ? WMV3_PRIVATE_DATA_LENGTH : call->stream->codec->extradata_size);
private_data.width = call->Width;
private_data.height = call->Height;

View File

@@ -65,9 +65,9 @@ static Writer_t *AvailableWriter[] = {
&WriterAudioMPEGL3,
&WriterAudioAC3,
&WriterAudioEAC3,
&WriterAudioAAC,
// &WriterAudioAAC,
&WriterAudioDTS,
&WriterAudioWMA,
// &WriterAudioWMA,
&WriterAudioFLAC,
&WriterAudioVORBIS,