fix(video): use relay-default stream for room video
This commit is contained in:
@@ -63,7 +63,11 @@ pub fn packetize_video_frame(
|
|||||||
flags,
|
flags,
|
||||||
media_type: MediaType::Video,
|
media_type: MediaType::Video,
|
||||||
codec_id,
|
codec_id,
|
||||||
stream_id: 1, // stream 0 = audio, 1 = video
|
// Legacy relays default receivers to video layer 0. Use video stream
|
||||||
|
// 0 for the single-layer room-video path so packets are forwarded
|
||||||
|
// before any receiver quality state exists. Audio is separated by
|
||||||
|
// media_type, so stream_id 0 does not collide with audio packets.
|
||||||
|
stream_id: 0,
|
||||||
fec_ratio: 0,
|
fec_ratio: 0,
|
||||||
seq: *seq,
|
seq: *seq,
|
||||||
timestamp: timestamp_ms,
|
timestamp: timestamp_ms,
|
||||||
@@ -188,6 +192,7 @@ mod tests {
|
|||||||
assert!(pkts[0].header.is_keyframe());
|
assert!(pkts[0].header.is_keyframe());
|
||||||
assert!(pkts[0].header.is_frame_end());
|
assert!(pkts[0].header.is_frame_end());
|
||||||
assert_eq!(pkts[0].header.media_type, MediaType::Video);
|
assert_eq!(pkts[0].header.media_type, MediaType::Video);
|
||||||
|
assert_eq!(pkts[0].header.stream_id, 0);
|
||||||
|
|
||||||
let mut reassembler = VideoReassembler::new();
|
let mut reassembler = VideoReassembler::new();
|
||||||
let result = reassembler.push(&pkts[0]);
|
let result = reassembler.push(&pkts[0]);
|
||||||
|
|||||||
@@ -1212,6 +1212,7 @@ impl CallEngine {
|
|||||||
"t_ms": recv_t0.elapsed().as_millis() as u64,
|
"t_ms": recv_t0.elapsed().as_millis() as u64,
|
||||||
"codec": format!("{:?}", pkt.header.codec_id),
|
"codec": format!("{:?}", pkt.header.codec_id),
|
||||||
"payload_bytes": pkt.payload.len(),
|
"payload_bytes": pkt.payload.len(),
|
||||||
|
"stream_id": pkt.header.stream_id,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1943,6 +1944,7 @@ impl CallEngine {
|
|||||||
"first_pkt_bytes": pkts[0].payload.len(),
|
"first_pkt_bytes": pkts[0].payload.len(),
|
||||||
"last_pkt_bytes": pkts.last().map(|pkt| pkt.payload.len()).unwrap_or(0),
|
"last_pkt_bytes": pkts.last().map(|pkt| pkt.payload.len()).unwrap_or(0),
|
||||||
"encoded_bytes": encoded.len(),
|
"encoded_bytes": encoded.len(),
|
||||||
|
"stream_id": pkts[0].header.stream_id,
|
||||||
"is_keyframe": is_keyframe,
|
"is_keyframe": is_keyframe,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@@ -2461,6 +2463,7 @@ impl CallEngine {
|
|||||||
"t_ms": recv_t0.elapsed().as_millis() as u64,
|
"t_ms": recv_t0.elapsed().as_millis() as u64,
|
||||||
"codec": format!("{:?}", pkt.header.codec_id),
|
"codec": format!("{:?}", pkt.header.codec_id),
|
||||||
"payload_bytes": pkt.payload.len(),
|
"payload_bytes": pkt.payload.len(),
|
||||||
|
"stream_id": pkt.header.stream_id,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -3042,6 +3045,7 @@ impl CallEngine {
|
|||||||
"first_pkt_bytes": pkts[0].payload.len(),
|
"first_pkt_bytes": pkts[0].payload.len(),
|
||||||
"last_pkt_bytes": pkts.last().map(|pkt| pkt.payload.len()).unwrap_or(0),
|
"last_pkt_bytes": pkts.last().map(|pkt| pkt.payload.len()).unwrap_or(0),
|
||||||
"encoded_bytes": encoded.len(),
|
"encoded_bytes": encoded.len(),
|
||||||
|
"stream_id": pkts[0].header.stream_id,
|
||||||
"is_keyframe": is_keyframe,
|
"is_keyframe": is_keyframe,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user