diff --git a/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.h b/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.h index 1c0297aebcac059a383df740d0e4b70b5430d9bf..10596b41df93618b0f793733437878981be00eb2 100644 --- a/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.h +++ b/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.h @@ -32,7 +32,8 @@ #include "ff_ffplay.h" -#define MAX_PKT_QUEUE_DEEP 350 +#define MAX_PKT_QUEUE_DEEP 350 +#define MAX_DECODING_SAMPLES 16 typedef struct VTBPicture { double pts; @@ -44,6 +45,13 @@ typedef struct VTBPicture { } VTBPicture; +typedef struct sample_info { + double dts; + double pts; + int serial; +} sample_info; + + typedef struct sort_queue { double dts; double pts; @@ -82,6 +90,9 @@ typedef struct VideoToolBoxContext { bool dealloced; int m_buffer_deep; AVPacket m_buffer_packet[MAX_PKT_QUEUE_DEEP]; + + sample_info sample_info_array[MAX_DECODING_SAMPLES]; + int sample_info_index; } VideoToolBoxContext ; diff --git a/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.m b/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.m index 18376090ef7399fad52b2eb22b6ca737003a3791..15f2567d7976616cf4f8ddff3b1ddcd2239a4193 100644 --- a/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.m +++ b/ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijkplayer/ios/pipeline/IJKVideoToolBox.m @@ -733,26 +733,13 @@ VideoToolBoxContext* init_videotoolbox(FFPlayer* ffp, AVCodecContext* ic) int codec = ic->codec_id; uint8_t* extradata = ic->extradata; - VideoToolBoxContext* context_vtb = malloc(sizeof(VideoToolBoxContext)); + VideoToolBoxContext *context_vtb = (VideoToolBoxContext *)mallocz(sizeof(VideoToolBoxContext)); if (!context_vtb) { goto failed; } - context_vtb->m_convert_bytestream = false; - context_vtb->m_convert_3byteTo4byteNALSize = false; - context_vtb->refresh_request = false; - context_vtb->new_seg_flag = false; - context_vtb->recovery_drop_packet = false; - context_vtb->refresh_session = false; context_vtb->idr_based_identified = true; - context_vtb->dealloced = false; - context_vtb->last_keyframe_pts = 0; - context_vtb->m_max_ref_frames = 0; context_vtb->ffp = ffp; - context_vtb->serial = 0; - context_vtb->last_sort = 0; - context_vtb->m_buffer_deep = 0; - memset(context_vtb->m_buffer_packet, 0, sizeof(context_vtb->m_buffer_packet)); switch (profile) { case FF_PROFILE_H264_HIGH_10: