X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=video_encoder.cpp;h=f7369877b7b55f67a4af3e795a5ed99bb5d88e21;hb=e8a66daac69cf6f243e03489aec8b9321d59e169;hp=c817283690503b8bea94131b1328d13b48c3265d;hpb=47a806bdc9143201072a3c7408f11bbd60b09a0c;p=nageru diff --git a/video_encoder.cpp b/video_encoder.cpp index c817283..f736987 100644 --- a/video_encoder.cpp +++ b/video_encoder.cpp @@ -170,6 +170,14 @@ int VideoEncoder::write_packet2_thunk(void *opaque, uint8_t *buf, int buf_size, int VideoEncoder::write_packet2(uint8_t *buf, int buf_size, AVIODataMarkerType type, int64_t time) { + if (type == AVIO_DATA_MARKER_SYNC_POINT || type == AVIO_DATA_MARKER_BOUNDARY_POINT) { + seen_sync_markers = true; + } else if (type == AVIO_DATA_MARKER_UNKNOWN && !seen_sync_markers) { + // We don't know if this is a keyframe or not (the muxer could + // avoid marking it), so we just have to make the best of it. + type = AVIO_DATA_MARKER_SYNC_POINT; + } + if (type == AVIO_DATA_MARKER_HEADER) { stream_mux_header.append((char *)buf, buf_size); httpd->set_header(stream_mux_header);