mirror of
https://github.com/tuxbox-neutrino/libstb-hal.git
synced 2025-08-26 23:13:16 +02:00
libeplayer3/writer: unsigned char => uint8_t
This commit is contained in:
@@ -3,11 +3,13 @@
|
|||||||
|
|
||||||
/* some useful things needed by many files ... */
|
/* some useful things needed by many files ... */
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
#define INVALID_PTS_VALUE 0x200000000ll
|
#define INVALID_PTS_VALUE 0x200000000ll
|
||||||
|
|
||||||
struct BitPacker_t
|
struct BitPacker_t
|
||||||
{
|
{
|
||||||
unsigned char *Ptr; /* write pointer */
|
uint8_t *Ptr; /* write pointer */
|
||||||
unsigned int BitBuffer; /* bitreader shifter */
|
unsigned int BitBuffer; /* bitreader shifter */
|
||||||
int Remaining; /* number of remaining in the shifter */
|
int Remaining; /* number of remaining in the shifter */
|
||||||
};
|
};
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
#define VC1_VIDEO_PES_START_CODE 0xfd
|
#define VC1_VIDEO_PES_START_CODE 0xfd
|
||||||
#define AAC_AUDIO_PES_START_CODE 0xcf
|
#define AAC_AUDIO_PES_START_CODE 0xcf
|
||||||
|
|
||||||
int InsertPesHeader(uint8_t *data, int size, unsigned char stream_id, int64_t pts, int pic_start_code);
|
int InsertPesHeader(uint8_t *data, int size, uint8_t stream_id, int64_t pts, int pic_start_code);
|
||||||
int InsertVideoPrivateDataHeader(uint8_t *data, int payload_size);
|
int InsertVideoPrivateDataHeader(uint8_t *data, int payload_size);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -42,7 +42,7 @@ bool WriterAC3::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* stream
|
|||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
struct iovec iov[2];
|
struct iovec iov[2];
|
||||||
|
|
||||||
iov[0].iov_base = PesHeader;
|
iov[0].iov_base = PesHeader;
|
||||||
|
@@ -53,10 +53,10 @@ bool WriterDIVX::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, A
|
|||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
unsigned char FakeHeaders[64]; // 64bytes should be enough to make the fake headers
|
uint8_t FakeHeaders[64]; // 64bytes should be enough to make the fake headers
|
||||||
unsigned int FakeHeaderLength;
|
unsigned int FakeHeaderLength;
|
||||||
unsigned char Version = 5;
|
uint8_t Version = 5;
|
||||||
unsigned int FakeStartCode = (Version << 8) | PES_VERSION_FAKE_START_CODE;
|
unsigned int FakeStartCode = (Version << 8) | PES_VERSION_FAKE_START_CODE;
|
||||||
unsigned int usecPerFrame = 41708; /* Hellmaster1024: default value */
|
unsigned int usecPerFrame = 41708; /* Hellmaster1024: default value */
|
||||||
BitPacker_t ld = { FakeHeaders, 0, 32 };
|
BitPacker_t ld = { FakeHeaders, 0, 32 };
|
||||||
|
@@ -45,16 +45,16 @@ bool WriterDTS::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* stream
|
|||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned char PesHeader[PES_AUDIO_HEADER_SIZE];
|
uint8_t PesHeader[PES_AUDIO_HEADER_SIZE];
|
||||||
|
|
||||||
// #define DO_BYTESWAP
|
// #define DO_BYTESWAP
|
||||||
#ifdef DO_BYTESWAP
|
#ifdef DO_BYTESWAP
|
||||||
unsigned char Data[packet->size];
|
uint8_t Data[packet->size];
|
||||||
memcpy(Data, packet->data, packet->size);
|
memcpy(Data, packet->data, packet->size);
|
||||||
|
|
||||||
/* 16-bit byte swap all data before injecting it */
|
/* 16-bit byte swap all data before injecting it */
|
||||||
for (i = 0; i < packet->size; i += 2) {
|
for (i = 0; i < packet->size; i += 2) {
|
||||||
unsigned char Tmp = Data[i];
|
uint8_t Tmp = Data[i];
|
||||||
Data[i] = Data[i + 1];
|
Data[i] = Data[i + 1];
|
||||||
Data[i + 1] = Tmp;
|
Data[i + 1] = Tmp;
|
||||||
}
|
}
|
||||||
|
@@ -40,9 +40,9 @@ class WriterFLAC : public Writer
|
|||||||
bool WriterFLAC::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* stream */, AVPacket *packet, int64_t pts)
|
bool WriterFLAC::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* stream */, AVPacket *packet, int64_t pts)
|
||||||
{
|
{
|
||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return -1;
|
return false;
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
struct iovec iov[2];
|
struct iovec iov[2];
|
||||||
|
|
||||||
iov[0].iov_base = PesHeader;
|
iov[0].iov_base = PesHeader;
|
||||||
|
@@ -40,7 +40,7 @@ bool WriterH263::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* strea
|
|||||||
{
|
{
|
||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
|
|
||||||
int HeaderLength = InsertPesHeader(PesHeader, packet->size, H263_VIDEO_PES_START_CODE, pts, 0);
|
int HeaderLength = InsertPesHeader(PesHeader, packet->size, H263_VIDEO_PES_START_CODE, pts, 0);
|
||||||
|
|
||||||
|
@@ -37,16 +37,16 @@
|
|||||||
#define CONTAINER_PARAMETERS_VERSION 0x00
|
#define CONTAINER_PARAMETERS_VERSION 0x00
|
||||||
|
|
||||||
typedef struct avcC_s {
|
typedef struct avcC_s {
|
||||||
unsigned char Version; // configurationVersion
|
uint8_t Version; // configurationVersion
|
||||||
unsigned char Profile; // AVCProfileIndication
|
uint8_t Profile; // AVCProfileIndication
|
||||||
unsigned char Compatibility; // profile_compatibility
|
uint8_t Compatibility; // profile_compatibility
|
||||||
unsigned char Level; // AVCLevelIndication
|
uint8_t Level; // AVCLevelIndication
|
||||||
unsigned char NalLengthMinusOne; // held in bottom two bits
|
uint8_t NalLengthMinusOne; // held in bottom two bits
|
||||||
unsigned char NumParamSets; // held in bottom 5 bits
|
uint8_t NumParamSets; // held in bottom 5 bits
|
||||||
unsigned char Params[1]; // {length,params}{length,params}...sequence then picture
|
uint8_t Params[1]; // {length,params}{length,params}...sequence then picture
|
||||||
} avcC_t;
|
} avcC_t;
|
||||||
|
|
||||||
const unsigned char Head[] = { 0, 0, 0, 1 };
|
const uint8_t Head[] = { 0, 0, 0, 1 };
|
||||||
|
|
||||||
class WriterH264 : public Writer
|
class WriterH264 : public Writer
|
||||||
{
|
{
|
||||||
@@ -70,7 +70,7 @@ bool WriterH264::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, A
|
|||||||
{
|
{
|
||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
unsigned int TimeDelta;
|
unsigned int TimeDelta;
|
||||||
unsigned int TimeScale;
|
unsigned int TimeScale;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
@@ -122,7 +122,7 @@ bool WriterH264::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, A
|
|||||||
|
|
||||||
ParametersLength = 0;
|
ParametersLength = 0;
|
||||||
|
|
||||||
unsigned char HeaderData[19];
|
uint8_t HeaderData[19];
|
||||||
HeaderData[ParametersLength++] = 0x00; // Start code
|
HeaderData[ParametersLength++] = 0x00; // Start code
|
||||||
HeaderData[ParametersLength++] = 0x00;
|
HeaderData[ParametersLength++] = 0x00;
|
||||||
HeaderData[ParametersLength++] = 0x01;
|
HeaderData[ParametersLength++] = 0x01;
|
||||||
@@ -212,7 +212,7 @@ bool WriterH264::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, A
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned int NalLength;
|
unsigned int NalLength;
|
||||||
unsigned char NalData[4];
|
uint8_t NalData[4];
|
||||||
int NalPresent = 1;
|
int NalPresent = 1;
|
||||||
|
|
||||||
memcpy(NalData, packet->data + VideoPosition, NalLengthBytes);
|
memcpy(NalData, packet->data + VideoPosition, NalLengthBytes);
|
||||||
|
@@ -42,7 +42,7 @@ bool WriterMP3::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* stream
|
|||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
struct iovec iov[2];
|
struct iovec iov[2];
|
||||||
|
|
||||||
iov[0].iov_base = PesHeader;
|
iov[0].iov_base = PesHeader;
|
||||||
|
@@ -44,7 +44,7 @@ bool WriterMPEG2::Write(int fd, AVFormatContext * /* avfc */, AVStream * /* stre
|
|||||||
if (fd < 0 || !packet)
|
if (fd < 0 || !packet)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
|
|
||||||
for (int Position = 0; Position < packet->size; ) {
|
for (int Position = 0; Position < packet->size; ) {
|
||||||
int PacketLength = std::min(packet->size - Position, MAX_PES_PACKET_SIZE);
|
int PacketLength = std::min(packet->size - Position, MAX_PES_PACKET_SIZE);
|
||||||
|
@@ -40,7 +40,7 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// reference: search for TypeLpcmDVDAudio in player/frame_parser/frame_parser_audio_lpcm.cpp
|
// reference: search for TypeLpcmDVDAudio in player/frame_parser/frame_parser_audio_lpcm.cpp
|
||||||
static const unsigned char clpcm_prv[14] = {
|
static const uint8_t clpcm_prv[14] = {
|
||||||
0xA0, //sub_stream_id
|
0xA0, //sub_stream_id
|
||||||
0, 0, //resvd and UPC_EAN_ISRC stuff, unused
|
0, 0, //resvd and UPC_EAN_ISRC stuff, unused
|
||||||
0x0A, //private header length
|
0x0A, //private header length
|
||||||
@@ -59,8 +59,8 @@ class WriterPCM : public Writer
|
|||||||
private:
|
private:
|
||||||
unsigned int SubFrameLen;
|
unsigned int SubFrameLen;
|
||||||
unsigned int SubFramesPerPES;
|
unsigned int SubFramesPerPES;
|
||||||
unsigned char lpcm_prv[14];
|
uint8_t lpcm_prv[14];
|
||||||
unsigned char breakBuffer[8192];
|
uint8_t breakBuffer[8192];
|
||||||
unsigned int breakBufferFillSize;
|
unsigned int breakBufferFillSize;
|
||||||
int uNoOfChannels;
|
int uNoOfChannels;
|
||||||
int uSampleRate;
|
int uSampleRate;
|
||||||
@@ -137,7 +137,7 @@ bool WriterPCM::prepareClipPlay()
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("inappropriate bits per sample (%d) - must be 16 or 24\n", uBitsPerSample);
|
printf("inappropriate bits per sample (%d) - must be 16 or 24\n", uBitsPerSample);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -145,7 +145,7 @@ bool WriterPCM::prepareClipPlay()
|
|||||||
|
|
||||||
int WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
|
int WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
|
||||||
{
|
{
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
|
|
||||||
if (initialHeader) {
|
if (initialHeader) {
|
||||||
initialHeader = false;
|
initialHeader = false;
|
||||||
@@ -153,25 +153,25 @@ int WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned int n;
|
unsigned int n;
|
||||||
unsigned char *injectBuffer = (unsigned char *) malloc(SubFrameLen);
|
uint8_t *injectBuffer = (uint8_t *) malloc(SubFrameLen);
|
||||||
unsigned int pos;
|
unsigned int pos;
|
||||||
|
|
||||||
for (pos = 0; pos < size;) {
|
for (pos = 0; pos < size;) {
|
||||||
//printf("PCM %s - Position=%d\n", __FUNCTION__, pos);
|
//printf("PCM %s - Position=%d\n", __FUNCTION__, pos);
|
||||||
if ((size - pos) < SubFrameLen) {
|
if ((size - pos) < SubFrameLen) {
|
||||||
breakBufferFillSize = size - pos;
|
breakBufferFillSize = size - pos;
|
||||||
memcpy(breakBuffer, &data[pos], sizeof(unsigned char) * breakBufferFillSize);
|
memcpy(breakBuffer, &data[pos], sizeof(uint8_t) * breakBufferFillSize);
|
||||||
//printf("PCM %s - Unplayed=%d\n", __FUNCTION__, breakBufferFillSize);
|
//printf("PCM %s - Unplayed=%d\n", __FUNCTION__, breakBufferFillSize);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//get first PES's worth
|
//get first PES's worth
|
||||||
if (breakBufferFillSize > 0) {
|
if (breakBufferFillSize > 0) {
|
||||||
memcpy(injectBuffer, breakBuffer, sizeof(unsigned char) * breakBufferFillSize);
|
memcpy(injectBuffer, breakBuffer, sizeof(uint8_t) * breakBufferFillSize);
|
||||||
memcpy(&injectBuffer[breakBufferFillSize], &data[pos], sizeof(unsigned char) * (SubFrameLen - breakBufferFillSize));
|
memcpy(&injectBuffer[breakBufferFillSize], &data[pos], sizeof(uint8_t) * (SubFrameLen - breakBufferFillSize));
|
||||||
pos += (SubFrameLen - breakBufferFillSize);
|
pos += (SubFrameLen - breakBufferFillSize);
|
||||||
breakBufferFillSize = 0;
|
breakBufferFillSize = 0;
|
||||||
} else {
|
} else {
|
||||||
memcpy(injectBuffer, &data[pos], sizeof(unsigned char) * SubFrameLen);
|
memcpy(injectBuffer, &data[pos], sizeof(uint8_t) * SubFrameLen);
|
||||||
pos += SubFrameLen;
|
pos += SubFrameLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,8 +186,7 @@ int WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
|
|||||||
//write the PCM data
|
//write the PCM data
|
||||||
if (uBitsPerSample == 16) {
|
if (uBitsPerSample == 16) {
|
||||||
for (n = 0; n < SubFrameLen; n += 2) {
|
for (n = 0; n < SubFrameLen; n += 2) {
|
||||||
unsigned char tmp;
|
uint8_t tmp = injectBuffer[n];
|
||||||
tmp = injectBuffer[n];
|
|
||||||
injectBuffer[n] = injectBuffer[n + 1];
|
injectBuffer[n] = injectBuffer[n + 1];
|
||||||
injectBuffer[n + 1] = tmp;
|
injectBuffer[n + 1] = tmp;
|
||||||
}
|
}
|
||||||
@@ -196,7 +195,7 @@ int WriterPCM::writePCM(int fd, int64_t Pts, uint8_t *data, unsigned int size)
|
|||||||
// A1c A1b A1a-B1c B1b B1a-A2c A2b A2a-B2c B2b B2a
|
// A1c A1b A1a-B1c B1b B1a-A2c A2b A2a-B2c B2b B2a
|
||||||
// to A1a A1b B1a B1b.A2a A2b B2a B2b-A1c B1c A2c B2c
|
// to A1a A1b B1a B1b.A2a A2b B2a B2b-A1c B1c A2c B2c
|
||||||
for (n = 0; n < SubFrameLen; n += 12) {
|
for (n = 0; n < SubFrameLen; n += 12) {
|
||||||
unsigned char t, *p = &injectBuffer[n];
|
uint8_t t, *p = &injectBuffer[n];
|
||||||
t = p[0];
|
t = p[0];
|
||||||
p[0] = p[2];
|
p[0] = p[2];
|
||||||
p[2] = p[5];
|
p[2] = p[5];
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "pes.h"
|
#include "pes.h"
|
||||||
|
|
||||||
int InsertVideoPrivateDataHeader(unsigned char *data, int payload_size)
|
int InsertVideoPrivateDataHeader(uint8_t *data, int payload_size)
|
||||||
{
|
{
|
||||||
BitPacker_t ld2 = { data, 0, 32 };
|
BitPacker_t ld2 = { data, 0, 32 };
|
||||||
int i;
|
int i;
|
||||||
@@ -49,7 +49,7 @@ int InsertVideoPrivateDataHeader(unsigned char *data, int payload_size)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int InsertPesHeader(uint8_t *data, int size, unsigned char stream_id, int64_t pts, int pic_start_code)
|
int InsertPesHeader(uint8_t *data, int size, uint8_t stream_id, int64_t pts, int pic_start_code)
|
||||||
{
|
{
|
||||||
BitPacker_t ld2 = { data, 0, 32 };
|
BitPacker_t ld2 = { data, 0, 32 };
|
||||||
|
|
||||||
|
@@ -49,7 +49,7 @@ class WriterVC1 : public Writer
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
bool initialHeader;
|
bool initialHeader;
|
||||||
unsigned char FrameHeaderSeen;
|
uint8_t FrameHeaderSeen;
|
||||||
double frameRate;
|
double frameRate;
|
||||||
public:
|
public:
|
||||||
bool Write(int fd, AVFormatContext *avfc, AVStream *stream, AVPacket *packet, int64_t pts);
|
bool Write(int fd, AVFormatContext *avfc, AVStream *stream, AVPacket *packet, int64_t pts);
|
||||||
@@ -71,11 +71,11 @@ bool WriterVC1::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
initialHeader = false;
|
initialHeader = false;
|
||||||
FrameHeaderSeen = false;
|
FrameHeaderSeen = false;
|
||||||
|
|
||||||
const unsigned char SequenceLayerStartCode[] =
|
const uint8_t SequenceLayerStartCode[] =
|
||||||
{ 0x00, 0x00, 0x01, VC1_SEQUENCE_LAYER_METADATA_START_CODE };
|
{ 0x00, 0x00, 0x01, VC1_SEQUENCE_LAYER_METADATA_START_CODE };
|
||||||
|
|
||||||
|
|
||||||
const unsigned char Metadata[] = {
|
const uint8_t Metadata[] = {
|
||||||
0x00, 0x00, 0x00, 0xc5,
|
0x00, 0x00, 0x00, 0xc5,
|
||||||
0x04, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00,
|
||||||
0xc0, 0x00, 0x00, 0x00, /* Struct C set for for advanced profile */
|
0xc0, 0x00, 0x00, 0x00, /* Struct C set for for advanced profile */
|
||||||
@@ -87,9 +87,9 @@ bool WriterVC1::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
0x00, 0x00, 0x00, 0x00
|
0x00, 0x00, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
unsigned char PesPayload[128];
|
uint8_t PesPayload[128];
|
||||||
unsigned char *PesPtr;
|
uint8_t *PesPtr;
|
||||||
unsigned int usecPerFrame = ((10000000.0 / av_q2d(stream->r_frame_rate)));
|
unsigned int usecPerFrame = ((10000000.0 / av_q2d(stream->r_frame_rate)));
|
||||||
struct iovec iov[2];
|
struct iovec iov[2];
|
||||||
|
|
||||||
@@ -142,15 +142,15 @@ bool WriterVC1::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
|
|
||||||
if (packet->size > 0) {
|
if (packet->size > 0) {
|
||||||
int Position = 0;
|
int Position = 0;
|
||||||
unsigned char insertSampleHeader = 1;
|
bool insertSampleHeader = true;
|
||||||
|
|
||||||
while (Position < packet->size) {
|
while (Position < packet->size) {
|
||||||
int PacketLength = std::min(packet->size - Position, MAX_PES_PACKET_SIZE);
|
int PacketLength = std::min(packet->size - Position, MAX_PES_PACKET_SIZE);
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE];
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE];
|
||||||
int HeaderLength = InsertPesHeader(PesHeader, PacketLength, VC1_VIDEO_PES_START_CODE, pts, 0);
|
int HeaderLength = InsertPesHeader(PesHeader, PacketLength, VC1_VIDEO_PES_START_CODE, pts, 0);
|
||||||
|
|
||||||
if (insertSampleHeader) {
|
if (insertSampleHeader) {
|
||||||
const unsigned char Vc1FrameStartCode[] = { 0, 0, 1, VC1_FRAME_START_CODE };
|
const uint8_t Vc1FrameStartCode[] = { 0, 0, 1, VC1_FRAME_START_CODE };
|
||||||
|
|
||||||
if (!FrameHeaderSeen && (packet->size > 3) && (memcmp(packet->data, Vc1FrameStartCode, 4) == 0))
|
if (!FrameHeaderSeen && (packet->size > 3) && (memcmp(packet->data, Vc1FrameStartCode, 4) == 0))
|
||||||
FrameHeaderSeen = true;
|
FrameHeaderSeen = true;
|
||||||
@@ -158,7 +158,7 @@ bool WriterVC1::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
memcpy(&PesHeader[HeaderLength], Vc1FrameStartCode, sizeof(Vc1FrameStartCode));
|
memcpy(&PesHeader[HeaderLength], Vc1FrameStartCode, sizeof(Vc1FrameStartCode));
|
||||||
HeaderLength += sizeof(Vc1FrameStartCode);
|
HeaderLength += sizeof(Vc1FrameStartCode);
|
||||||
}
|
}
|
||||||
insertSampleHeader = 0;
|
insertSampleHeader = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct iovec iov[2];
|
struct iovec iov[2];
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
#define WMV3_PRIVATE_DATA_LENGTH 4
|
#define WMV3_PRIVATE_DATA_LENGTH 4
|
||||||
|
|
||||||
static const unsigned char Metadata[] = {
|
static const uint8_t Metadata[] = {
|
||||||
0x00, 0x00, 0x00, 0xc5,
|
0x00, 0x00, 0x00, 0xc5,
|
||||||
0x04, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00,
|
||||||
#define METADATA_STRUCT_C_START 8
|
#define METADATA_STRUCT_C_START 8
|
||||||
@@ -75,8 +75,8 @@ bool WriterWMV::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
|
|
||||||
if (initialHeader) {
|
if (initialHeader) {
|
||||||
#define PES_MIN_HEADER_SIZE 9
|
#define PES_MIN_HEADER_SIZE 9
|
||||||
unsigned char PesPacket[PES_MIN_HEADER_SIZE + 128];
|
uint8_t PesPacket[PES_MIN_HEADER_SIZE + 128];
|
||||||
unsigned char *PesPtr;
|
uint8_t *PesPtr;
|
||||||
unsigned int MetadataLength;
|
unsigned int MetadataLength;
|
||||||
unsigned int usecPerFrame = ((10000000.0 / av_q2d(stream->r_frame_rate)));
|
unsigned int usecPerFrame = ((10000000.0 / av_q2d(stream->r_frame_rate)));
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ bool WriterWMV::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
memcpy(PesPtr, Metadata, sizeof(Metadata));
|
memcpy(PesPtr, Metadata, sizeof(Metadata));
|
||||||
PesPtr += METADATA_STRUCT_C_START;
|
PesPtr += METADATA_STRUCT_C_START;
|
||||||
|
|
||||||
unsigned char privateData[WMV3_PRIVATE_DATA_LENGTH] = { 0 };
|
uint8_t privateData[WMV3_PRIVATE_DATA_LENGTH] = { 0 };
|
||||||
memcpy(privateData, stream->codec->extradata, stream->codec->extradata_size > WMV3_PRIVATE_DATA_LENGTH ? WMV3_PRIVATE_DATA_LENGTH : stream->codec->extradata_size);
|
memcpy(privateData, stream->codec->extradata, stream->codec->extradata_size > WMV3_PRIVATE_DATA_LENGTH ? WMV3_PRIVATE_DATA_LENGTH : stream->codec->extradata_size);
|
||||||
|
|
||||||
memcpy(PesPtr, privateData, WMV3_PRIVATE_DATA_LENGTH);
|
memcpy(PesPtr, privateData, WMV3_PRIVATE_DATA_LENGTH);
|
||||||
@@ -126,7 +126,7 @@ bool WriterWMV::Write(int fd, AVFormatContext * /* avfc */, AVStream *stream, AV
|
|||||||
|
|
||||||
int PacketLength = std::min(packet->size - Position, MAX_PES_PACKET_SIZE);
|
int PacketLength = std::min(packet->size - Position, MAX_PES_PACKET_SIZE);
|
||||||
|
|
||||||
unsigned char PesHeader[PES_MAX_HEADER_SIZE] = { 0 };
|
uint8_t PesHeader[PES_MAX_HEADER_SIZE] = { 0 };
|
||||||
int HeaderLength = InsertPesHeader(PesHeader, PacketLength, VC1_VIDEO_PES_START_CODE, pts, 0);
|
int HeaderLength = InsertPesHeader(PesHeader, PacketLength, VC1_VIDEO_PES_START_CODE, pts, 0);
|
||||||
|
|
||||||
if (insertSampleHeader) {
|
if (insertSampleHeader) {
|
||||||
|
Reference in New Issue
Block a user