From d2f42b9be1a3c996c02c10022935bf6135f5bc88 Mon Sep 17 00:00:00 2001 From: Zane van Iperen Date: Sat, 8 Aug 2020 09:44:48 +1000 Subject: [PATCH] avformat/argo_asf: strip file extension from name Only when the user hasn't manually specified one. Matches the original files more closely. Signed-off-by: Zane van Iperen --- libavformat/argo_asf.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c index 577b9d9c01..37ad2bf5e9 100644 --- a/libavformat/argo_asf.c +++ b/libavformat/argo_asf.c @@ -329,10 +329,24 @@ static int argo_asf_write_header(AVFormatContext *s) fhdr.version_minor = (uint16_t)ctx->version_minor; fhdr.num_chunks = 1; fhdr.chunk_offset = ASF_FILE_HEADER_SIZE; - if (ctx->name) + /* + * If the user specified a name, use it as is. Otherwise take the + * basename and lop off the extension (if any). + */ + if (ctx->name) { strncpy(fhdr.name, ctx->name, sizeof(fhdr.name)); - else - strncpy(fhdr.name, av_basename(s->url), sizeof(fhdr.name)); + } else { + const char *start = av_basename(s->url); + const char *end = strrchr(start, '.'); + size_t len; + + if(end) + len = end - start; + else + len = strlen(start); + + memcpy(fhdr.name, start, FFMIN(len, sizeof(fhdr.name))); + } chdr.num_blocks = 0; chdr.num_samples = ASF_SAMPLE_COUNT;