80 lines
2.8 KiB
C
Executable File
80 lines
2.8 KiB
C
Executable File
/******************************************************************************
|
|
Copyright (C), 2001-2018, Allwinner Tech. Co., Ltd.
|
|
******************************************************************************
|
|
File Name : EncodedStream.h
|
|
Version : Initial Draft
|
|
Author : Allwinner BU3-XAPSW Team
|
|
Created : 2018/01/03
|
|
Last Modified :
|
|
Description : common struct definition in Demux, VEnc and AEnc.
|
|
Function List :
|
|
History :
|
|
******************************************************************************/
|
|
|
|
#ifndef _ENCODEDSTREAM_H_
|
|
#define _ENCODEDSTREAM_H_
|
|
|
|
#include <plat_type.h>
|
|
#include <vencoder.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
#define CEDARV_FLAG_KEYFRAME 0x00000001
|
|
#define CEDARV_FLAG_EOS 0x00000002
|
|
#define CEDARV_FLAG_PTS_VALID 0x00000004
|
|
#define CEDARV_FLAG_FIRST_PART 0x00000008
|
|
#define CEDARV_FLAG_LAST_PART 0x00000010
|
|
#define CEDARV_FLAG_THUMB 0x00000020 //indicate EncodedStream has thumb picture, only used for jpeg.
|
|
|
|
#define ENCODED_FRAME_ID_INVALID (0xFFFF9000)
|
|
|
|
typedef enum CDX_PACKETTYPE
|
|
{
|
|
CDX_PacketUnkown = 0,
|
|
CDX_PacketVideo,
|
|
CDX_PacketAudio,
|
|
CDX_PacketSubtitle,
|
|
CDX_PacketImage
|
|
} CDX_PACKETTYPE;
|
|
|
|
typedef struct _EncodedStream
|
|
{
|
|
int media_type; // indicate video/audio/subtitle, CDX_PACKETTYPE
|
|
int nID; // BufID
|
|
int nFilledLen; // data size. For dmx->vdec, -1 means buffer is not enough.
|
|
int nTobeFillLen; // required buffer size
|
|
int64_t nTimeStamp; // TimeStamp, unit:us
|
|
unsigned int nFlags; // CEDARV_FLAG_FIRST_PART, Cedarv Flags, ref definition above
|
|
|
|
unsigned char* pBuffer; //maybe vdec provide.
|
|
unsigned char* pBufferExtra; //maybe vdec provide.
|
|
unsigned char* pBufferExtra2; //jpeg encode may need three data buffer.
|
|
unsigned int nBufferLen; //maybe vdec provide.
|
|
unsigned int nBufferExtraLen; //maybe vdec provide.
|
|
unsigned int nBufferExtraLen2;
|
|
|
|
unsigned int video_stream_type; // indicate VIDEO_TYPE_MAJOR, CDX_VIDEO_STREAM_MAJOR
|
|
FrameInfo video_frame_info; // video frame info from venc lib
|
|
|
|
int infoVersion; // demuxer version, default value is -1
|
|
void *pChangedStreamsInfo; // VideoInfo/AudioInfo/SubtitleInfo, from demuxer
|
|
int64_t duration; // only for subtitle, default value is -1
|
|
}EncodedStream;
|
|
|
|
typedef struct encoder_node_t
|
|
{
|
|
EncodedStream stEncodedStream;
|
|
int mUsedRefCnt; // mux component use it to record used ref count.
|
|
int mPortIndex; ////streamId = portIndex = suffix of RecSink's stream array. portIndex can match to veChn.
|
|
struct list_head mList;
|
|
}ENCODER_NODE_T;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
#endif /* _ENCODEDSTREAM_H_ */
|