- libeplayer3: sync with max_10

This commit is contained in:
vanhofen
2023-01-24 21:00:47 +01:00
committed by Thilo Graf
parent 02994964e7
commit c0034ff0b7
65 changed files with 1100 additions and 959 deletions

View File

@@ -25,7 +25,7 @@
static inline int HasADTSHeader(uint8_t *data, int size)
{
if (size >= AAC_HEADER_LENGTH && 0xFF == data[0] && 0xF0 == (0xF0 & data[1]) &&
size == ((data[3] & 0x3) << 11 | data[4] << 3 | data[5] >> 5))
size == ((data[3] & 0x3) << 11 | data[4] << 3 | data[5] >> 5))
{
return 1;
}

View File

@@ -52,9 +52,12 @@ typedef enum
STREAMTYPE_DIVX311 = 13,
STREAMTYPE_DIVX4 = 14,
STREAMTYPE_DIVX5 = 15,
STREAMTYPE_VB6 = 18,
STREAMTYPE_VB6 = 18, /* 17 is also valid for ZGEMMA STBs*/
STREAMTYPE_SPARK = 21,
STREAMTYPE_MJPEG = 30
STREAMTYPE_MJPEG = 30,
STREAMTYPE_RV30 = 31, /* rv30: RealVideo 8, suspected to based largely on an early draft of H.264 (included with RealPlayer 8)*/
STREAMTYPE_RV40 = 32, /* RealVideo 9, RealVideo 10*/
STREAMTYPE_AVS2 = 40
} video_stream_type_t;
typedef enum
@@ -73,6 +76,8 @@ typedef enum
AUDIOTYPE_WMA_PRO = 0x21,
AUDIOTYPE_AC3_PLUS = 0x22,
AUDIOTYPE_AMR = 0x23,
AUDIOTYPE_OPUS = 0x24,
AUDIOTYPE_VORBIS = 0x25,
AUDIOTYPE_RAW = 0x30
} audio_stream_type_t;

View File

@@ -31,4 +31,12 @@ typedef struct Context_s
int container_ffmpeg_update_tracks(Context_t *context, char *filename, int initial);
const char *GetGraphicSubPath();
int32_t GetGraphicWindowWidth();
int32_t GetGraphicWindowHeight();
void E2iSendMsg(const char *format, ...);
void E2iStartMsg(void);
void E2iEndMsg(void);
#endif

View File

@@ -545,3 +545,39 @@
#else
#define mjpeg_err(...)
#endif
/*******************************************
* bcma
*******************************************/
#define BCMA_DEBUG_LEVEL 0
#define BCMA_SILENT
#if BCMA_DEBUG_LEVEL
#define bcma_printf(...) log_printf(BCMA_DEBUG_LEVEL, __VA_ARGS__)
#else
#define bcma_printf(...)
#endif
#ifndef BCMA_SILENT
#define bcma_err(...) log_error(__VA_ARGS__)
#else
#define bcma_err(...)
#endif
/*******************************************
* plugin
*******************************************/
#define PLUGIN_DEBUG_LEVEL 0
#define PLUGIN_SILENT
#if PLUGIN_DEBUG_LEVEL
#define plugin_printf(...) log_printf(PLUGIN_DEBUG_LEVEL, __VA_ARGS__)
#else
#define plugin_printf(...)
#endif
#ifndef PLUGIN_SILENT
#define plugin_err(...) log_error(__VA_ARGS__)
#else
#define plugin_err(...)
#endif

View File

@@ -64,16 +64,15 @@ static inline char *getExtension(char *name)
static inline uint32_t ReadUint32(uint8_t *buffer)
{
uint32_t num = (uint32_t)buffer[0] << 24 |
(uint32_t)buffer[1] << 16 |
(uint32_t)buffer[2] << 8 |
(uint32_t)buffer[3];
(uint32_t)buffer[1] << 16 |
(uint32_t)buffer[2] << 8 |
(uint32_t)buffer[3];
return num;
}
static inline uint16_t ReadUInt16(uint8_t *buffer)
{
uint16_t num = (uint16_t)buffer[0] << 8 |
(uint16_t)buffer[1];
uint16_t num = (uint16_t)buffer[0] << 8 | (uint16_t)buffer[1];
return num;
}

View File

@@ -60,9 +60,16 @@ typedef struct
uint8_t *data;
uint32_t len;
uint8_t *extradata;
uint32_t extralen;
int64_t pts;
int64_t dts;
int64_t durationMS; // duration in miliseconds
uint32_t width;
uint32_t height;
char *type;
} SubtitleOut_t;

View File

@@ -31,6 +31,14 @@ typedef struct pcmPrivateData_s
int32_t bits_per_coded_sample;
int32_t sample_rate;
int32_t bit_rate;
int32_t ffmpeg_codec_id;
int32_t block_align;
int32_t frame_size;
int32_t codec_id;
uint8_t *private_data;
uint32_t private_size;
} pcmPrivateData_t;
#endif

View File

@@ -1,7 +1,7 @@
#ifndef pes_123
#define pes_123
#define PES_HEADER_SIZE 9 ///< size of pes header
#define PES_HEADER_SIZE 9 ///< size of pes header
#define PES_MAX_HEADER_SIZE (PES_HEADER_SIZE + 256) ///< maximal header size
#define PES_PRIVATE_DATA_FLAG 0x80
#define PES_PRIVATE_DATA_LENGTH 8
@@ -13,10 +13,8 @@
#define PES_START_CODE_RESERVED_4 0xfd
#define PES_VERSION_FAKE_START_CODE 0x31
#define MAX_PES_PACKET_SIZE (65535)
/* start codes */
#define PCM_PES_START_CODE 0xbd
#define PRIVATE_STREAM_1_PES_START_CODE 0xbd

View File

@@ -92,7 +92,6 @@ typedef enum
VIDEO_ENCODING_PRIVATE
} video_encoding_t;
/*
* List of possible audio encodings - used to select frame parser and codec.
*/
@@ -199,93 +198,91 @@ typedef struct dvb_play_info_s
typedef dvb_play_info_t video_play_info_t;
typedef dvb_play_info_t audio_play_info_t;
typedef enum
{
#define DVB_OPTION_VALUE_DISABLE 0
#define DVB_OPTION_VALUE_ENABLE 1
#define DVB_OPTION_VALUE_DISABLE 0
#define DVB_OPTION_VALUE_ENABLE 1
DVB_OPTION_TRICK_MODE_AUDIO = 0,
DVB_OPTION_PLAY_24FPS_VIDEO_AT_25FPS = 1,
DVB_OPTION_TRICK_MODE_AUDIO = 0,
DVB_OPTION_PLAY_24FPS_VIDEO_AT_25FPS = 1,
#define DVB_OPTION_VALUE_VIDEO_CLOCK_MASTER 0
#define DVB_OPTION_VALUE_AUDIO_CLOCK_MASTER 1
#define DVB_OPTION_VALUE_SYSTEM_CLOCK_MASTER 2
DVB_OPTION_MASTER_CLOCK = 2,
#define DVB_OPTION_VALUE_VIDEO_CLOCK_MASTER 0
#define DVB_OPTION_VALUE_AUDIO_CLOCK_MASTER 1
#define DVB_OPTION_VALUE_SYSTEM_CLOCK_MASTER 2
DVB_OPTION_MASTER_CLOCK = 2,
DVB_OPTION_EXTERNAL_TIME_MAPPING = 3,
DVB_OPTION_EXTERNAL_TIME_MAPPING_VSYNC_LOCKED = 31,
DVB_OPTION_AV_SYNC = 4,
DVB_OPTION_DISPLAY_FIRST_FRAME_EARLY = 5,
DVB_OPTION_VIDEO_BLANK = 6,
DVB_OPTION_STREAM_ONLY_KEY_FRAMES = 7,
DVB_OPTION_STREAM_SINGLE_GROUP_BETWEEN_DISCONTINUITIES = 8,
DVB_OPTION_CLAMP_PLAYBACK_INTERVAL_ON_PLAYBACK_DIRECTION_CHANGE = 9,
DVB_OPTION_EXTERNAL_TIME_MAPPING = 3,
DVB_OPTION_EXTERNAL_TIME_MAPPING_VSYNC_LOCKED = 31,
DVB_OPTION_AV_SYNC = 4,
DVB_OPTION_DISPLAY_FIRST_FRAME_EARLY = 5,
DVB_OPTION_VIDEO_BLANK = 6,
DVB_OPTION_STREAM_ONLY_KEY_FRAMES = 7,
DVB_OPTION_STREAM_SINGLE_GROUP_BETWEEN_DISCONTINUITIES = 8,
DVB_OPTION_CLAMP_PLAYBACK_INTERVAL_ON_PLAYBACK_DIRECTION_CHANGE = 9,
#define DVB_OPTION_VALUE_PLAYOUT 0
#define DVB_OPTION_VALUE_DISCARD 1
DVB_OPTION_PLAYOUT_ON_TERMINATE = 10,
DVB_OPTION_PLAYOUT_ON_SWITCH = 11,
DVB_OPTION_PLAYOUT_ON_DRAIN = 12,
#define DVB_OPTION_VALUE_PLAYOUT 0
#define DVB_OPTION_VALUE_DISCARD 1
DVB_OPTION_PLAYOUT_ON_TERMINATE = 10,
DVB_OPTION_PLAYOUT_ON_SWITCH = 11,
DVB_OPTION_PLAYOUT_ON_DRAIN = 12,
DVB_OPTION_VIDEO_ASPECT_RATIO = 13,
DVB_OPTION_VIDEO_DISPLAY_FORMAT = 14,
DVB_OPTION_VIDEO_ASPECT_RATIO = 13,
DVB_OPTION_VIDEO_DISPLAY_FORMAT = 14,
#define DVB_OPTION_VALUE_TRICK_MODE_AUTO 0
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_ALL 1
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_ALL_DEGRADE_NON_REFERENCE_FRAMES 2
#define DVB_OPTION_VALUE_TRICK_MODE_START_DISCARDING_NON_REFERENCE_FRAMES 3
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_REFERENCE_FRAMES_DEGRADE_NON_KEY_FRAMES 4
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_KEY_FRAMES 5
#define DVB_OPTION_VALUE_TRICK_MODE_DISCONTINUOUS_KEY_FRAMES 6
DVB_OPTION_TRICK_MODE_DOMAIN = 15,
#define DVB_OPTION_VALUE_TRICK_MODE_AUTO 0
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_ALL 1
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_ALL_DEGRADE_NON_REFERENCE_FRAMES 2
#define DVB_OPTION_VALUE_TRICK_MODE_START_DISCARDING_NON_REFERENCE_FRAMES 3
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_REFERENCE_FRAMES_DEGRADE_NON_KEY_FRAMES 4
#define DVB_OPTION_VALUE_TRICK_MODE_DECODE_KEY_FRAMES 5
#define DVB_OPTION_VALUE_TRICK_MODE_DISCONTINUOUS_KEY_FRAMES 6
DVB_OPTION_TRICK_MODE_DOMAIN = 15,
#define DVB_OPTION_VALUE_DISCARD_LATE_FRAMES_NEVER 0
#define DVB_OPTION_VALUE_DISCARD_LATE_FRAMES_ALWAYS 1
#define DVB_OPTION_VALUE_DISCARD_LATE_FRAMES_AFTER_SYNCHRONIZE 2
DVB_OPTION_DISCARD_LATE_FRAMES = 16,
DVB_OPTION_VIDEO_START_IMMEDIATE = 17,
DVB_OPTION_REBASE_ON_DATA_DELIVERY_LATE = 18,
DVB_OPTION_REBASE_ON_FRAME_DECODE_LATE = 19,
DVB_OPTION_LOWER_CODEC_DECODE_LIMITS_ON_FRAME_DECODE_LATE = 20,
DVB_OPTION_H264_ALLOW_NON_IDR_RESYNCHRONIZATION = 21,
DVB_OPTION_MPEG2_IGNORE_PROGESSIVE_FRAME_FLAG = 22,
DVB_OPTION_AUDIO_SPDIF_SOURCE = 23,
#define DVB_OPTION_VALUE_DISCARD_LATE_FRAMES_NEVER 0
#define DVB_OPTION_VALUE_DISCARD_LATE_FRAMES_ALWAYS 1
#define DVB_OPTION_VALUE_DISCARD_LATE_FRAMES_AFTER_SYNCHRONIZE 2
DVB_OPTION_DISCARD_LATE_FRAMES = 16,
DVB_OPTION_VIDEO_START_IMMEDIATE = 17,
DVB_OPTION_REBASE_ON_DATA_DELIVERY_LATE = 18,
DVB_OPTION_REBASE_ON_FRAME_DECODE_LATE = 19,
DVB_OPTION_LOWER_CODEC_DECODE_LIMITS_ON_FRAME_DECODE_LATE = 20,
DVB_OPTION_H264_ALLOW_NON_IDR_RESYNCHRONIZATION = 21,
DVB_OPTION_MPEG2_IGNORE_PROGESSIVE_FRAME_FLAG = 22,
DVB_OPTION_AUDIO_SPDIF_SOURCE = 23,
DVB_OPTION_H264_ALLOW_BAD_PREPROCESSED_FRAMES = 24,
DVB_OPTION_CLOCK_RATE_ADJUSTMENT_LIMIT_2_TO_THE_N_PARTS_PER_MILLION = 25, /* Value = N */
DVB_OPTION_LIMIT_INPUT_INJECT_AHEAD = 26,
DVB_OPTION_H264_ALLOW_BAD_PREPROCESSED_FRAMES = 24,
DVB_OPTION_CLOCK_RATE_ADJUSTMENT_LIMIT_2_TO_THE_N_PARTS_PER_MILLION = 25, /* Value = N */
DVB_OPTION_LIMIT_INPUT_INJECT_AHEAD = 26,
#define DVB_OPTION_VALUE_MPEG2_APPLICATION_MPEG2 0
#define DVB_OPTION_VALUE_MPEG2_APPLICATION_ATSC 1
#define DVB_OPTION_VALUE_MPEG2_APPLICATION_DVB 2
DVB_OPTION_MPEG2_APPLICATION_TYPE = 27,
#define DVB_OPTION_VALUE_MPEG2_APPLICATION_MPEG2 0
#define DVB_OPTION_VALUE_MPEG2_APPLICATION_ATSC 1
#define DVB_OPTION_VALUE_MPEG2_APPLICATION_DVB 2
DVB_OPTION_MPEG2_APPLICATION_TYPE = 27,
#define DVB_OPTION_VALUE_DECIMATE_DECODER_OUTPUT_DISABLED 0
#define DVB_OPTION_VALUE_DECIMATE_DECODER_OUTPUT_HALF 1
#define DVB_OPTION_VALUE_DECIMATE_DECODER_OUTPUT_QUARTER 2
DVB_OPTION_DECIMATE_DECODER_OUTPUT = 28,
#define DVB_OPTION_VALUE_DECIMATE_DECODER_OUTPUT_DISABLED 0
#define DVB_OPTION_VALUE_DECIMATE_DECODER_OUTPUT_HALF 1
#define DVB_OPTION_VALUE_DECIMATE_DECODER_OUTPUT_QUARTER 2
DVB_OPTION_DECIMATE_DECODER_OUTPUT = 28,
DVB_OPTION_PTS_FORWARD_JUMP_DETECTION_THRESHOLD = 29,
DVB_OPTION_H264_TREAT_DUPLICATE_DPB_AS_NON_REFERENCE_FRAME_FIRST = 30,
DVB_OPTION_PTS_FORWARD_JUMP_DETECTION_THRESHOLD = 29,
DVB_OPTION_H264_TREAT_DUPLICATE_DPB_AS_NON_REFERENCE_FRAME_FIRST = 30,
DVB_OPTION_PIXEL_ASPECT_RATIO_CORRECTION = 32,
DVB_OPTION_PIXEL_ASPECT_RATIO_CORRECTION = 32,
DVB_OPTION_H264_FORCE_PIC_ORDER_CNT_IGNORE_DPB_DISPLAY_FRAME_ORDERING = 33,
DVB_OPTION_PTS_SYMMETRIC_JUMP_DETECTION = 34,
DVB_OPTION_PTS_SYMMETRIC_JUMP_DETECTION = 34,
DVB_OPTION_ALLOW_FRAME_DISCARD_AT_NORMAL_SPEED = 35,
DVB_OPTION_ALLOW_FRAME_DISCARD_AT_NORMAL_SPEED = 35,
/* OPTION_MAX must always be one greater than largest option - currently DVB_OPTION_ALLOW_FRAME_DISCARD_AT_NORMAL_SPEED */
DVB_OPTION_MAX = 35
DVB_OPTION_MAX = 35
} dvb_option_t;
// Legacy typo correction
#define DVP_OPTION_H264_FORCE_PIC_ORDER_CNT_IGNORE_DPB_DISPLAY_FRAME_ORDERING DVB_OPTION_H264_FORCE_PIC_ORDER_CNT_IGNORE_DPB_DISPLAY_FRAME_ORDERING
typedef dvb_option_t video_option_t;
/* Decoder commands */
@@ -296,7 +293,6 @@ typedef dvb_option_t video_option_t;
#define VIDEO_CMD_SET_OPTION (4)
#define VIDEO_CMD_GET_OPTION (5)
/* Flags for VIDEO_CMD_FREEZE */
#define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0)

View File

@@ -27,8 +27,6 @@ typedef struct
WriteV_t WriteV;
} WriterAVCallData_t;
typedef struct WriterCaps_s
{
char *name;
@@ -61,8 +59,9 @@ extern Writer_t WriterAudioDTS;
extern Writer_t WriterAudioWMA;
extern Writer_t WriterAudioWMAPRO;
extern Writer_t WriterAudioFLAC;
extern Writer_t WriterAudioVORBIS;
extern Writer_t WriterAudioAMR;
extern Writer_t WriterAudioVORBIS;
extern Writer_t WriterAudioOPUS;
extern Writer_t WriterVideoMPEG1;
extern Writer_t WriterVideoMPEG2;
@@ -84,6 +83,9 @@ extern Writer_t WriterVideoVP9;
extern Writer_t WriterVideoMJPEG;
extern Writer_t WriterFramebuffer;
extern Writer_t WriterPipe;
extern Writer_t WriterVideoRV30;
extern Writer_t WriterVideoRV40;
extern Writer_t WriterVideoAVS2;
Writer_t *getWriter(char *encoding);
@@ -96,4 +98,45 @@ ssize_t WriteWithRetry(Context_t *context, int pipefd, int fd, void *pDVBMtx, co
void FlushPipe(int pipefd);
ssize_t WriteExt(WriteV_t _call, int fd, void *data, size_t size);
// Subtitles
typedef enum
{
SUBTITLE_CODEC_ID_UNKNOWN,
SUBTITLE_CODEC_ID_SUBRIP,
SUBTITLE_CODEC_ID_ASS,
SUBTITLE_CODEC_ID_WEBVTT,
SUBTITLE_CODEC_ID_PGS,
SUBTITLE_CODEC_ID_DVB,
SUBTITLE_CODEC_ID_XSUB
} SubtitleCodecId_t;
typedef struct
{
SubtitleCodecId_t codecId;
uint32_t trackId;
uint8_t *data;
uint32_t len;
int64_t pts;
int64_t dts;
uint8_t *private_data;
uint32_t private_size;
int64_t durationMS; // duration in miliseconds
int width;
int height;
} WriterSubCallData_t;
typedef struct SubWriter_s
{
int32_t (* open)(SubtitleCodecId_t codecId, uint8_t *extradata, int extradata_size);
int32_t (* close)();
int32_t (* reset)();
int32_t (* write)(WriterSubCallData_t *);
} SubWriter_t;
extern SubWriter_t WriterSubPGS;
#endif