aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-11-24 20:43:25 +0100
committerdec05eba <dec05eba@protonmail.com>2022-12-20 15:43:46 +0100
commit8d30a205b19cbbb3230bb17818e705ffccd81731 (patch)
treebeab959ea466d1760a027eb901dcf4ad5e27ba43
parentbcd8117c76b944e2dcd1cbeb0d213e5194742096 (diff)
Make -c optional, select container format from file extension by default
-rw-r--r--src/main.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
index bde09b2..c47089d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1099,6 +1099,25 @@ int main(int argc, char **argv) {
const double target_fps = 1.0 / (double)fps;
+ AVFormatContext *av_format_context;
+ // The output format is automatically guessed by the file extension
+ avformat_alloc_output_context2(&av_format_context, nullptr, container_format, filename);
+ if (!av_format_context) {
+ fprintf(stderr, "Error: Failed to deduce container format from file extension\n");
+ return 1;
+ }
+
+ av_format_context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+ av_format_context->flags |= AVFMT_FLAG_GENPTS;
+ const AVOutputFormat *output_format = av_format_context->oformat;
+
+ std::string file_extension = output_format->extensions;
+ {
+ size_t comma_index = file_extension.find(',');
+ if(comma_index != std::string::npos)
+ file_extension = file_extension.substr(0, comma_index);
+ }
+
if(strcmp(codec_to_use, "auto") == 0) {
const AVCodec *h265_codec = find_h265_encoder(gpu_inf.vendor);