]> git.sesse.net Git - ffmpeg/commitdiff
avformat/argo_asf: strip file extension from name
authorZane van Iperen <zane@zanevaniperen.com>
Fri, 7 Aug 2020 23:44:48 +0000 (09:44 +1000)
committerZane van Iperen <zane@zanevaniperen.com>
Mon, 10 Aug 2020 22:50:27 +0000 (08:50 +1000)
Only when the user hasn't manually specified one.
Matches the original files more closely.

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
libavformat/argo_asf.c

index 577b9d9c018cd7a2a00fd64e9e6aca13050b661f..37ad2bf5e9f16d85954582459a9f25ecf3847438 100644 (file)
@@ -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;