mirror of https://git.ffmpeg.org/ffmpeg.git
Full-header RTMP packets contain real timestamp, others contain timestamp
difference, so make all read packets store absolute timestamp. As a consequence, we don't need to track audio/video timestamps separately any longer in protocol handler. Originally committed as revision 20685 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b1eb53ab59
commit
e6b244a3b9
|
@ -116,6 +116,8 @@ int ff_rtmp_packet_read(URLContext *h, RTMPPacket *p,
|
||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
timestamp = AV_RB32(buf);
|
timestamp = AV_RB32(buf);
|
||||||
}
|
}
|
||||||
|
if (hdr != RTMP_PS_TWELVEBYTES)
|
||||||
|
timestamp += prev_pkt[channel_id].timestamp;
|
||||||
}
|
}
|
||||||
if (ff_rtmp_packet_create(p, channel_id, type, timestamp, data_size))
|
if (ff_rtmp_packet_create(p, channel_id, type, timestamp, data_size))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -63,8 +63,6 @@ typedef struct RTMPContext {
|
||||||
uint8_t* flv_data; ///< buffer with data for demuxer
|
uint8_t* flv_data; ///< buffer with data for demuxer
|
||||||
int flv_size; ///< current buffer size
|
int flv_size; ///< current buffer size
|
||||||
int flv_off; ///< number of bytes read from current buffer
|
int flv_off; ///< number of bytes read from current buffer
|
||||||
uint32_t video_ts; ///< current video timestamp in milliseconds
|
|
||||||
uint32_t audio_ts; ///< current audio timestamp in milliseconds
|
|
||||||
} RTMPContext;
|
} RTMPContext;
|
||||||
|
|
||||||
#define PLAYER_KEY_OPEN_PART_LEN 30 ///< length of partial key used for first client digest signing
|
#define PLAYER_KEY_OPEN_PART_LEN 30 ///< length of partial key used for first client digest signing
|
||||||
|
@ -515,13 +513,6 @@ static int get_packet(URLContext *s, int for_header)
|
||||||
uint8_t *p;
|
uint8_t *p;
|
||||||
uint32_t ts = rpkt.timestamp;
|
uint32_t ts = rpkt.timestamp;
|
||||||
|
|
||||||
if (rpkt.type == RTMP_PT_VIDEO) {
|
|
||||||
rt->video_ts += rpkt.timestamp;
|
|
||||||
ts = rt->video_ts;
|
|
||||||
} else if (rpkt.type == RTMP_PT_AUDIO) {
|
|
||||||
rt->audio_ts += rpkt.timestamp;
|
|
||||||
ts = rt->audio_ts;
|
|
||||||
}
|
|
||||||
// generate packet header and put data into buffer for FLV demuxer
|
// generate packet header and put data into buffer for FLV demuxer
|
||||||
rt->flv_off = 0;
|
rt->flv_off = 0;
|
||||||
rt->flv_size = rpkt.data_size + 15;
|
rt->flv_size = rpkt.data_size + 15;
|
||||||
|
|
Loading…
Reference in New Issue