1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-12 19:31:53 +00:00

refine code for #250, ts remux

This commit is contained in:
winlin 2015-01-25 13:19:22 +08:00
parent e9ed62e052
commit c9d270fbe0
3 changed files with 9 additions and 8 deletions

View file

@ -32,9 +32,7 @@ using namespace std;
#include <srs_kernel_error.hpp>
#include <srs_kernel_log.hpp>
#include <srs_app_config.hpp>
// Transport Stream packets are 188 bytes in length.
#define TS_PACKET_SIZE 188
#include <srs_kernel_ts.hpp>
#ifdef SRS_AUTO_STREAM_CASTER
@ -55,14 +53,14 @@ int SrsMpegtsOverUdp::on_udp_packet(sockaddr_in* from, char* buf, int nb_buf)
int peer_port = ntohs(from->sin_port);
// drop ts packet when size not modulus by 188
if (nb_buf < TS_PACKET_SIZE || (nb_buf % TS_PACKET_SIZE) != 0) {
if (nb_buf < SRS_TS_PACKET_SIZE || (nb_buf % SRS_TS_PACKET_SIZE) != 0) {
srs_warn("udp: drop %s:%d packet %d bytes", peer_ip.c_str(), peer_port, nb_buf);
return ret;
}
srs_info("udp: got %s:%d packet %d bytes", peer_ip.c_str(), peer_port, nb_buf);
// process each ts packet
for (int i = 0; i < nb_buf; i += TS_PACKET_SIZE) {
for (int i = 0; i < nb_buf; i += SRS_TS_PACKET_SIZE) {
char* ts_packet = buf + i;
if ((ret = on_ts_packet(ts_packet)) != ERROR_SUCCESS) {
srs_warn("mpegts: ignore ts packet error. ret=%d", ret);

View file

@ -254,11 +254,11 @@ public:
*p++ = header_size;
// pts; // 33bits
p = write_pts(p, flags >> 6, frame->pts + SRS_AUTO_HLS_DELAY);
p = write_dts_pts(p, flags >> 6, frame->pts + SRS_AUTO_HLS_DELAY);
// dts; // 33bits
if (frame->dts != frame->pts) {
p = write_pts(p, 1, frame->dts + SRS_AUTO_HLS_DELAY);
p = write_dts_pts(p, 1, frame->dts + SRS_AUTO_HLS_DELAY);
}
}
@ -344,7 +344,7 @@ private:
return p;
}
static char* write_pts(char* p, u_int8_t fb, int64_t pts)
static char* write_dts_pts(char* p, u_int8_t fb, int64_t pts)
{
int32_t val;

View file

@ -39,6 +39,9 @@ class SrsAvcAacCodec;
class SrsCodecSample;
class SrsSimpleBuffer;
// Transport Stream packets are 188 bytes in length.
#define SRS_TS_PACKET_SIZE 188
// @see: ngx_rtmp_SrsMpegtsFrame_t
class SrsMpegtsFrame
{