|
|
|
@ -447,9 +447,14 @@ void send_timer_push(struct send_timer *st, struct codec_packet *cp) { |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
typedef union { |
|
|
|
struct media_player_cache_entry *entry; |
|
|
|
struct media_player *mp; |
|
|
|
} media_player_coder_add_packet_arg __attribute__((__transparent_union__)); |
|
|
|
|
|
|
|
static void media_player_coder_add_packet(struct media_player_coder *c, |
|
|
|
void (*fn)(void *p, char *buf, size_t len, |
|
|
|
long long us_dur, unsigned long long pts), void *p) { |
|
|
|
void (*fn)(media_player_coder_add_packet_arg p, char *buf, size_t len, |
|
|
|
long long us_dur, unsigned long long pts), media_player_coder_add_packet_arg p) { |
|
|
|
// scale pts and duration according to sample rate |
|
|
|
|
|
|
|
long long duration_scaled = c->pkt->duration * c->avstream->CODECPAR->sample_rate |
|
|
|
@ -771,7 +776,7 @@ static void media_player_cache_entry_decoder_thread(void *p) { |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
media_player_coder_add_packet(&entry->coder, (void *) media_player_cache_packet, entry); |
|
|
|
media_player_coder_add_packet(&entry->coder, media_player_cache_packet, entry); |
|
|
|
|
|
|
|
av_packet_unref(entry->coder.pkt); |
|
|
|
} |
|
|
|
@ -1104,7 +1109,7 @@ static bool media_player_read_packet(struct media_player *mp) { |
|
|
|
|
|
|
|
mp->last_frame_ts = mp->coder.pkt->pts; |
|
|
|
|
|
|
|
media_player_coder_add_packet(&mp->coder, (void *) media_player_add_packet, mp); |
|
|
|
media_player_coder_add_packet(&mp->coder, media_player_add_packet, mp); |
|
|
|
|
|
|
|
av_packet_unref(mp->coder.pkt); |
|
|
|
|
|
|
|
|