// Use the frame number to disambiguate between two cuts starting
// on the same second.
char filename[256];
- snprintf(filename, sizeof(filename), "%s%s-f%02d%s",
+ snprintf(filename, sizeof(filename), "%s/%s%s-f%02d%s",
+ global_flags.recording_dir.c_str(),
LOCAL_DUMP_PREFIX, timestamp, frame % 100, LOCAL_DUMP_SUFFIX);
return filename;
}
stream_audio_encoder->encode_audio(audio, pts + quicksync_encoder->global_delay());
}
+bool VideoEncoder::is_zerocopy() const
+{
+ lock_guard<mutex> lock(qs_mu);
+ return quicksync_encoder->is_zerocopy();
+}
+
bool VideoEncoder::begin_frame(int64_t pts, int64_t duration, movit::YCbCrLumaCoefficients ycbcr_coefficients, const std::vector<RefCountedFrame> &input_frames, GLuint *y_tex, GLuint *cbcr_tex)
{
lock_guard<mutex> lock(qs_mu);
int time_base = global_flags.stream_coarse_timebase ? COARSE_TIMEBASE : TIMEBASE;
stream_mux.reset(new Mux(avctx, width, height, video_codec, video_extradata, stream_audio_encoder->get_codec_parameters().get(), time_base,
- /*write_callback=*/nullptr));
+ /*write_callback=*/nullptr, { &stream_mux_metrics }));
+ stream_mux_metrics.init({{ "destination", "http" }});
}
int VideoEncoder::write_packet2_thunk(void *opaque, uint8_t *buf, int buf_size, AVIODataMarkerType type, int64_t time)