diff options
author | dec05eba <dec05eba@protonmail.com> | 2022-11-24 20:43:25 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2022-12-20 15:43:46 +0100 |
commit | 8d30a205b19cbbb3230bb17818e705ffccd81731 (patch) | |
tree | beab959ea466d1760a027eb901dcf4ad5e27ba43 | |
parent | bcd8117c76b944e2dcd1cbeb0d213e5194742096 (diff) |
Make -c optional, select container format from file extension by default
-rw-r--r-- | src/main.cpp | 19 |
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); |