xbmc
Classes | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
CBitstreamConverter Class Reference
Collaboration diagram for CBitstreamConverter:
Collaboration graph
[legend]

Classes

struct  omx_bitstream_ctx
 

Public Member Functions

bool Open (enum AVCodecID codec, uint8_t *in_extradata, int in_extrasize, bool to_annexb)
 
void Close (void)
 
bool NeedConvert (void) const
 
bool Convert (uint8_t *pData, int iSize)
 
uint8_t * GetConvertBuffer (void) const
 
int GetConvertSize () const
 
uint8_t * GetExtraData ()
 
const uint8_t * GetExtraData () const
 
int GetExtraSize () const
 
void ResetStartDecode (void)
 
bool CanStartDecode () const
 
void SetConvertDovi (bool value)
 
void SetRemoveDovi (bool value)
 
void SetRemoveHdr10Plus (bool value)
 

Static Public Member Functions

static bool mpeg2_sequence_header (const uint8_t *data, const uint32_t size, mpeg2_sequence *sequence)
 

Protected Types

typedef struct CBitstreamConverter::omx_bitstream_ctx omx_bitstream_ctx
 

Protected Member Functions

int isom_write_avcc (AVIOContext *pb, const uint8_t *data, int len)
 
bool IsIDR (uint8_t unit_type)
 
bool IsSlice (uint8_t unit_type)
 
bool BitstreamConvertInitAVC (void *in_extradata, int in_extrasize)
 
bool BitstreamConvertInitHEVC (void *in_extradata, int in_extrasize)
 
bool BitstreamConvert (uint8_t *pData, int iSize, uint8_t **poutbuf, int *poutbuf_size)
 

Static Protected Member Functions

static int avc_parse_nal_units (AVIOContext *pb, const uint8_t *buf_in, int size)
 
static int avc_parse_nal_units_buf (const uint8_t *buf_in, uint8_t **buf, int *size)
 
static void BitstreamAllocAndCopy (uint8_t **poutbuf, int *poutbuf_size, const uint8_t *sps_pps, uint32_t sps_pps_size, const uint8_t *in, uint32_t in_size, uint8_t nal_type)
 

Protected Attributes

uint8_t * m_convertBuffer
 
int m_convertSize
 
uint8_t * m_inputBuffer
 
int m_inputSize
 
uint32_t m_sps_pps_size
 
omx_bitstream_ctx m_sps_pps_context
 
bool m_convert_bitstream
 
bool m_to_annexb
 
FFmpegExtraData m_extraData
 
bool m_convert_3byteTo4byteNALSize
 
bool m_convert_bytestream
 
AVCodecID m_codec
 
bool m_start_decode
 
bool m_convert_dovi
 
bool m_removeDovi
 
bool m_removeHdr10Plus
 

Member Function Documentation

◆ Open()

bool CBitstreamConverter::Open ( enum AVCodecID  codec,
uint8_t *  in_extradata,
int  in_extrasize,
bool  to_annexb 
)

It seems the extradata is encoded as hvcC format. Temporarily, we support configurationVersion==0 until 14496-15 3rd is finalized. When finalized, configurationVersion will be 1 and we can recognize hvcC by checking if extradata[0]==1 or not.

Todo:
convert annexb to bitstream format

The documentation for this class was generated from the following files: