|
|
|
@ -65,6 +65,7 @@ struct codec_ssrc_handler {
|
|
|
|
struct timeval first_send;
|
|
|
|
struct timeval first_send;
|
|
|
|
unsigned long first_send_ts;
|
|
|
|
unsigned long first_send_ts;
|
|
|
|
GString *sample_buffer;
|
|
|
|
GString *sample_buffer;
|
|
|
|
|
|
|
|
int rtp_mark:1;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
struct transcode_packet {
|
|
|
|
struct transcode_packet {
|
|
|
|
seq_packet_t p; // must be first
|
|
|
|
seq_packet_t p; // must be first
|
|
|
|
@ -189,7 +190,9 @@ struct codec_handler *codec_handler_make_playback(struct rtp_payload_type *src_p
|
|
|
|
handler->dest_pt = *dst_pt;
|
|
|
|
handler->dest_pt = *dst_pt;
|
|
|
|
handler->func = handler_func_playback;
|
|
|
|
handler->func = handler_func_playback;
|
|
|
|
handler->ssrc_handler = (void *) __ssrc_handler_transcode_new(handler);
|
|
|
|
handler->ssrc_handler = (void *) __ssrc_handler_transcode_new(handler);
|
|
|
|
|
|
|
|
while (handler->ssrc_handler->first_ts == 0)
|
|
|
|
handler->ssrc_handler->first_ts = random();
|
|
|
|
handler->ssrc_handler->first_ts = random();
|
|
|
|
|
|
|
|
handler->ssrc_handler->rtp_mark = 1;
|
|
|
|
|
|
|
|
|
|
|
|
ilog(LOG_DEBUG, "Created media playback context for " STR_FORMAT " -> " STR_FORMAT "",
|
|
|
|
ilog(LOG_DEBUG, "Created media playback context for " STR_FORMAT " -> " STR_FORMAT "",
|
|
|
|
STR_FMT(&src_pt->encoding_with_params),
|
|
|
|
STR_FMT(&src_pt->encoding_with_params),
|
|
|
|
@ -1070,8 +1073,9 @@ static int __packet_encoded(encoder_t *enc, void *u1, void *u2) {
|
|
|
|
ilog(LOG_DEBUG, "Received packet of %i bytes from packetizer", inout.len);
|
|
|
|
ilog(LOG_DEBUG, "Received packet of %i bytes from packetizer", inout.len);
|
|
|
|
__output_rtp(mp, ch, ch->handler, buf, inout.len, ch->first_ts
|
|
|
|
__output_rtp(mp, ch, ch->handler, buf, inout.len, ch->first_ts
|
|
|
|
+ enc->avpkt.pts / enc->def->clockrate_mult,
|
|
|
|
+ enc->avpkt.pts / enc->def->clockrate_mult,
|
|
|
|
0, -1, seq_off);
|
|
|
|
ch->rtp_mark ? 1 : 0, -1, seq_off);
|
|
|
|
mp->iter++;
|
|
|
|
mp->iter++;
|
|
|
|
|
|
|
|
ch->rtp_mark = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (ret == 0) {
|
|
|
|
if (ret == 0) {
|
|
|
|
// no more to go
|
|
|
|
// no more to go
|
|
|
|
|