// Kaeru (換える), a simple transcoder intended for use with Nageru.
-// This is experimental code, not yet supported.
#include "audio_encoder.h"
#include "basic_stats.h"
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;
void audio_frame_callback(Mux *mux, const AVPacket *pkt, AVRational timebase)
{
- mux->add_packet(*pkt, pkt->pts, pkt->dts == AV_NOPTS_VALUE ? pkt->pts : pkt->dts, timebase);
+ mux->add_packet(*pkt, pkt->pts, pkt->dts == AV_NOPTS_VALUE ? pkt->pts : pkt->dts, timebase, /*stream_index=*/1);
}
void adjust_bitrate(int signal)
}
global_flags.num_cards = 1; // For latency metrics.
+#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 9, 100)
av_register_all();
+#endif
avformat_network_init();
HTTPD httpd;
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(global_flags.http_port);