Kodi Documentation 18.0
Kodi is an open source media player and entertainment hub.
AMLCodec.cpp File Reference
#include "AMLCodec.h"
#include "DynamicDll.h"
#include "cores/VideoPlayer/Interface/Addon/TimingConstants.h"
#include "cores/VideoPlayer/Process/ProcessInfo.h"
#include "cores/VideoPlayer/VideoRenderers/RenderFlags.h"
#include "cores/VideoPlayer/VideoRenderers/RenderManager.h"
#include "settings/AdvancedSettings.h"
#include "windowing/GraphicContext.h"
#include "settings/DisplaySettings.h"
#include "settings/MediaSettings.h"
#include "settings/Settings.h"
#include "threads/Atomics.h"
#include "utils/AMLUtils.h"
#include "utils/log.h"
#include "utils/StringUtils.h"
#include "utils/SysfsUtils.h"
#include "utils/TimeUtils.h"
#include <unistd.h>
#include <queue>
#include <vector>
#include <signal.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/utsname.h>
#include <linux/videodev2.h>
#include <sys/poll.h>
#include <chrono>
#include <thread>
#include <amcodec/codec.h>

Classes

class  PosixFile
 
struct  aml_generic_param
 
class  DllLibamCodecInterface
 
class  DllLibAmCodec
 
struct  hdr_buf
 
struct  am_packet
 
struct  am_private_t
 
struct  vframe_states
 

Macros

#define MODE_3D_DISABLE   0x00000000
 
#define MODE_3D_LR   0x00000101
 
#define MODE_3D_LR_SWITCH   0x00000501
 
#define MODE_3D_BT   0x00000201
 
#define MODE_3D_BT_SWITCH   0x00000601
 
#define MODE_3D_TO_2D_L   0x00000102
 
#define MODE_3D_TO_2D_R   0x00000902
 
#define MODE_3D_TO_2D_T   0x00000202
 
#define MODE_3D_TO_2D_B   0x00000a02
 
#define PTS_FREQ   90000
 
#define UNIT_FREQ   96000
 
#define AV_SYNC_THRESH   PTS_FREQ*30
 
#define TRICKMODE_NONE   0x00
 
#define TRICKMODE_I   0x01
 
#define TRICKMODE_FFFB   0x02
 
#define EXTERNAL_PTS   (1)
 
#define SYNC_OUTSIDE   (2)
 
#define KEYFRAME_PTS_ONLY   0x100
 
#define CODEC_TAG_VC_1   (0x312D4356)
 
#define VFORMAT_VP9   VFORMAT_UNSUPPORT
 
#define VIDEO_DEC_FORMAT_VP9   VIDEO_DEC_FORMAT_MAX
 
#define CODEC_TAG_RV30   (0x30335652)
 
#define CODEC_TAG_RV40   (0x30345652)
 
#define CODEC_TAG_MJPEG   (0x47504a4d)
 
#define CODEC_TAG_mjpeg   (0x47504a4c)
 
#define CODEC_TAG_jpeg   (0x6765706a)
 
#define CODEC_TAG_mjpa   (0x61706a6d)
 
#define RW_WAIT_TIME   (20 * 1000)
 
#define P_PRE   (0x02000000)
 
#define F_PRE   (0x03000000)
 
#define PLAYER_SUCCESS   (0)
 
#define PLAYER_FAILED   (-(P_PRE|0x01))
 
#define PLAYER_NOMEM   (-(P_PRE|0x02))
 
#define PLAYER_EMPTY_P   (-(P_PRE|0x03))
 
#define PLAYER_WR_FAILED   (-(P_PRE|0x21))
 
#define PLAYER_WR_EMPTYP   (-(P_PRE|0x22))
 
#define PLAYER_WR_FINISH   (P_PRE|0x1)
 
#define PLAYER_PTS_ERROR   (-(P_PRE|0x31))
 
#define PLAYER_UNSUPPORT   (-(P_PRE|0x35))
 
#define PLAYER_CHECK_CODEC_ERROR   (-(P_PRE|0x39))
 
#define HDR_BUF_SIZE   1024
 
#define STUFF_BYTES_LENGTH   (256)
 
#define DIVX311_CHUNK_HEAD_SIZE   13
 

Typedefs

typedef struct hdr_buf hdr_buf_t
 
typedef struct am_packet am_packet_t
 
typedef struct am_private_t am_private_t
 
typedef struct vframe_states vframe_states_t
 

Enumerations

enum  pstream_type {
  AM_STREAM_UNKNOWN = 0 , AM_STREAM_TS , AM_STREAM_PS , AM_STREAM_ES ,
  AM_STREAM_RM , AM_STREAM_AUDIO , AM_STREAM_VIDEO
}
 

Functions

void dumpfile_open (am_private_t *para)
 
void dumpfile_close (am_private_t *para)
 
void dumpfile_write (am_private_t *para, void *buf, int bufsiz)
 
void am_packet_release (am_packet_t *pkt)
 
int check_in_pts (am_private_t *para, am_packet_t *pkt)
 
int check_avbuffer_enough (am_private_t *para, am_packet_t *pkt)
 
int write_av_packet (am_private_t *para, am_packet_t *pkt)
 
int vp9_update_frame_header (am_packet_t *pkt)
 
int pre_header_feeding (am_private_t *para, am_packet_t *pkt)
 
int divx3_prefix (am_packet_t *pkt)
 
int set_header_info (am_private_t *para)
 

Variables

CEvent g_aml_sync_event
 

Macro Definition Documentation

◆ AV_SYNC_THRESH

#define AV_SYNC_THRESH   PTS_FREQ*30

◆ CODEC_TAG_jpeg

#define CODEC_TAG_jpeg   (0x6765706a)

◆ CODEC_TAG_mjpa

#define CODEC_TAG_mjpa   (0x61706a6d)

◆ CODEC_TAG_MJPEG

#define CODEC_TAG_MJPEG   (0x47504a4d)

◆ CODEC_TAG_mjpeg

#define CODEC_TAG_mjpeg   (0x47504a4c)

◆ CODEC_TAG_RV30

#define CODEC_TAG_RV30   (0x30335652)

◆ CODEC_TAG_RV40

#define CODEC_TAG_RV40   (0x30345652)

◆ CODEC_TAG_VC_1

#define CODEC_TAG_VC_1   (0x312D4356)

◆ DIVX311_CHUNK_HEAD_SIZE

#define DIVX311_CHUNK_HEAD_SIZE   13

◆ EXTERNAL_PTS

#define EXTERNAL_PTS   (1)

◆ F_PRE

#define F_PRE   (0x03000000)

◆ HDR_BUF_SIZE

#define HDR_BUF_SIZE   1024

◆ KEYFRAME_PTS_ONLY

#define KEYFRAME_PTS_ONLY   0x100

◆ MODE_3D_BT

#define MODE_3D_BT   0x00000201

◆ MODE_3D_BT_SWITCH

#define MODE_3D_BT_SWITCH   0x00000601

◆ MODE_3D_DISABLE

#define MODE_3D_DISABLE   0x00000000

◆ MODE_3D_LR

#define MODE_3D_LR   0x00000101

◆ MODE_3D_LR_SWITCH

#define MODE_3D_LR_SWITCH   0x00000501

◆ MODE_3D_TO_2D_B

#define MODE_3D_TO_2D_B   0x00000a02

◆ MODE_3D_TO_2D_L

#define MODE_3D_TO_2D_L   0x00000102

◆ MODE_3D_TO_2D_R

#define MODE_3D_TO_2D_R   0x00000902

◆ MODE_3D_TO_2D_T

#define MODE_3D_TO_2D_T   0x00000202

◆ P_PRE

#define P_PRE   (0x02000000)

◆ PLAYER_CHECK_CODEC_ERROR

#define PLAYER_CHECK_CODEC_ERROR   (-(P_PRE|0x39))

◆ PLAYER_EMPTY_P

#define PLAYER_EMPTY_P   (-(P_PRE|0x03))

◆ PLAYER_FAILED

#define PLAYER_FAILED   (-(P_PRE|0x01))

◆ PLAYER_NOMEM

#define PLAYER_NOMEM   (-(P_PRE|0x02))

◆ PLAYER_PTS_ERROR

#define PLAYER_PTS_ERROR   (-(P_PRE|0x31))

◆ PLAYER_SUCCESS

#define PLAYER_SUCCESS   (0)

◆ PLAYER_UNSUPPORT

#define PLAYER_UNSUPPORT   (-(P_PRE|0x35))

◆ PLAYER_WR_EMPTYP

#define PLAYER_WR_EMPTYP   (-(P_PRE|0x22))

◆ PLAYER_WR_FAILED

#define PLAYER_WR_FAILED   (-(P_PRE|0x21))

◆ PLAYER_WR_FINISH

#define PLAYER_WR_FINISH   (P_PRE|0x1)

◆ PTS_FREQ

#define PTS_FREQ   90000

◆ RW_WAIT_TIME

#define RW_WAIT_TIME   (20 * 1000)

◆ STUFF_BYTES_LENGTH

#define STUFF_BYTES_LENGTH   (256)

◆ SYNC_OUTSIDE

#define SYNC_OUTSIDE   (2)

◆ TRICKMODE_FFFB

#define TRICKMODE_FFFB   0x02

◆ TRICKMODE_I

#define TRICKMODE_I   0x01

◆ TRICKMODE_NONE

#define TRICKMODE_NONE   0x00

◆ UNIT_FREQ

#define UNIT_FREQ   96000

◆ VFORMAT_VP9

#define VFORMAT_VP9   VFORMAT_UNSUPPORT

◆ VIDEO_DEC_FORMAT_VP9

#define VIDEO_DEC_FORMAT_VP9   VIDEO_DEC_FORMAT_MAX

Typedef Documentation

◆ am_packet_t

typedef struct am_packet am_packet_t

◆ am_private_t

typedef struct am_private_t am_private_t

◆ hdr_buf_t

typedef struct hdr_buf hdr_buf_t

◆ vframe_states_t

Enumeration Type Documentation

◆ pstream_type

Enumerator
AM_STREAM_UNKNOWN 
AM_STREAM_TS 
AM_STREAM_PS 
AM_STREAM_ES 
AM_STREAM_RM 
AM_STREAM_AUDIO 
AM_STREAM_VIDEO 

Function Documentation

◆ am_packet_release()

void am_packet_release ( am_packet_t pkt)

◆ check_avbuffer_enough()

int check_avbuffer_enough ( am_private_t para,
am_packet_t pkt 
)

◆ check_in_pts()

int check_in_pts ( am_private_t para,
am_packet_t pkt 
)

◆ divx3_prefix()

int divx3_prefix ( am_packet_t pkt)

◆ dumpfile_close()

void dumpfile_close ( am_private_t para)

◆ dumpfile_open()

void dumpfile_open ( am_private_t para)

◆ dumpfile_write()

void dumpfile_write ( am_private_t para,
void buf,
int  bufsiz 
)

◆ pre_header_feeding()

int pre_header_feeding ( am_private_t para,
am_packet_t pkt 
)

◆ set_header_info()

int set_header_info ( am_private_t para)

◆ vp9_update_frame_header()

int vp9_update_frame_header ( am_packet_t pkt)

◆ write_av_packet()

int write_av_packet ( am_private_t para,
am_packet_t pkt 
)

Variable Documentation

◆ g_aml_sync_event

CEvent g_aml_sync_event