stream_mux_header.append((char *)buf, buf_size);
httpd->set_header(stream_mux_header);
} else {
- httpd->add_data((char *)buf, buf_size, type == AVIO_DATA_MARKER_SYNC_POINT);
+ httpd->add_data((char *)buf, buf_size, type == AVIO_DATA_MARKER_SYNC_POINT, time, AVRational{ AV_TIME_BASE, 1 });
}
return buf_size;
}
string video_extradata = x264_encoder->get_global_headers();
unique_ptr<Mux> mux;
- int time_base = global_flags.stream_coarse_timebase ? COARSE_TIMEBASE : TIMEBASE;
- mux.reset(new Mux(avctx, global_flags.width, global_flags.height, Mux::CODEC_H264, video_extradata, audio_encoder->get_codec_parameters().get(), time_base,
+ mux.reset(new Mux(avctx, global_flags.width, global_flags.height, Mux::CODEC_H264, video_extradata, audio_encoder->get_codec_parameters().get(), COARSE_TIMEBASE,
/*write_callback=*/nullptr, Mux::WRITE_FOREGROUND, { &stream_mux_metrics }));
stream_mux_metrics.init({{ "destination", "http" }});
return mux;
} else if (signal == SIGUSR2) {
new_bitrate -= 100;
if (new_bitrate < 100) {
- fprintf(stderr, "Ignoring SIGUSR1, can't decrease bitrate below 100 kbit/sec (currently at %d kbit/sec)\n",
+ fprintf(stderr, "Ignoring SIGUSR2, can't decrease bitrate below 100 kbit/sec (currently at %d kbit/sec)\n",
global_flags.x264_bitrate);
} else {
- fprintf(stderr, "Decreasing bitrate to %d kbit/sec due to SIGUSR1.\n", new_bitrate);
+ fprintf(stderr, "Decreasing bitrate to %d kbit/sec due to SIGUSR2.\n", new_bitrate);
global_flags.x264_bitrate = new_bitrate;
global_x264_encoder->change_bitrate(new_bitrate);
}
assert(oformat != nullptr);
unique_ptr<AudioEncoder> audio_encoder;
- if (global_flags.transcode_audio) {
- if (global_flags.stream_audio_codec_name.empty()) {
- audio_encoder.reset(new AudioEncoder(AUDIO_OUTPUT_CODEC_NAME, DEFAULT_AUDIO_OUTPUT_BIT_RATE, oformat));
- } else {
- audio_encoder.reset(new AudioEncoder(global_flags.stream_audio_codec_name, global_flags.stream_audio_codec_bitrate, oformat));
- }
+ if (global_flags.stream_audio_codec_name.empty()) {
+ audio_encoder.reset(new AudioEncoder(AUDIO_OUTPUT_CODEC_NAME, DEFAULT_AUDIO_OUTPUT_BIT_RATE, oformat));
+ } else {
+ audio_encoder.reset(new AudioEncoder(global_flags.stream_audio_codec_name, global_flags.stream_audio_codec_bitrate, oformat));
}
unique_ptr<X264Encoder> x264_encoder(new X264Encoder(oformat));
video.start_bm_capture();
video.change_rate(2.0); // Be sure never to really fall behind, but also don't dump huge amounts of stuff onto x264.
- BasicStats basic_stats(/*verbose=*/false);
+ BasicStats basic_stats(/*verbose=*/false, /*use_opengl=*/false);
global_basic_stats = &basic_stats;
- httpd.start(9095);
+ httpd.start(global_flags.http_port);
signal(SIGUSR1, adjust_bitrate);
signal(SIGUSR2, adjust_bitrate);