From patchwork Thu Dec 12 15:53:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 16759 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8DEA344A56B for ; Thu, 12 Dec 2019 17:53:36 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7574168A435; Thu, 12 Dec 2019 17:53:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AA57168A58A for ; Thu, 12 Dec 2019 17:53:29 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id q6so3242996wro.9 for ; Thu, 12 Dec 2019 07:53:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=3JkoeGlV7w3LFCPM6JfN//UHYv3yX0EiNL5aDXv4iI8=; b=Xq4+1P1192jGSnahACfyeDaSVZykvNjv9PTDxnpiLAbxzAcPO5a3wSv5Gys/ans2QP h8qdB7VuHeWXE2kqCGU2fO/KP8nSK0R3t3G/ZcpzgI8S+sxwio8gM6FI/MDy/dVQ/j1H WDCnhhRdKwz0JOx8+R0IJQgf7gT9rMLBYp6TSqTJZXQNMsuAdEF1hYlAyFas/RbpUMhH IyzW1bA8eLdM2c00hzSAum7f9NqZuXecL4f3hIRXlah+WXs6OCOCUoMI6FuDT3bjJULq 3QaJZPfML9z4vcLvaIENXIeYAaj7gS1dI8Q9JWxJQE0cvRiu1sc3pDQHIUO1oHAPdomc W19w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=3JkoeGlV7w3LFCPM6JfN//UHYv3yX0EiNL5aDXv4iI8=; b=nL6LNWlvelMXqAiYmbqSZVVOvLOysNzDhmyh8hI8CuYQkj235GT61E702rr+dY5yOw C4E+HMjUo1uoVhzFctWdUHTkm81Cm0u4M90fSeFD5acplnlP7sHTjCg8yVFGJXMG3ESd zMB38ZR79IdElCWD/O10f42mMUWytjGSl/ACqefUYTMQTTng3WERgJidR5vMYTwiWaoj IT7QHh6IYVoiLqFNEGH/vAMV+fMYCu47WR0/2GPQp/KYcVS79xCRSnKb0yGs6nEAf3wi q5SYrMBiGxeLOL8tQ9RnkbwMSngT2hVDpQ1zlnBE6o//yT1qUixu0+vU34CL4vYzj1c4 mI+g== X-Gm-Message-State: APjAAAUXSnW3/6/elXpLwMq+7iTWOLU/WHBs7pINM5IF6CAs9jHwy+1Y 2lNlCeOB1ozZlKN52eCEkiNemD7d X-Google-Smtp-Source: APXvYqwovPH1KB/1AKa2Zzs4ilTRJvKJHtT5GnpA359tNjTj4oo1yWk9ZCcMcMRkg4+9X2+YZcpFHQ== X-Received: by 2002:a5d:4085:: with SMTP id o5mr6985424wrp.321.1576166008941; Thu, 12 Dec 2019 07:53:28 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08e23.dynamic.kabel-deutschland.de. [188.192.142.35]) by smtp.gmail.com with ESMTPSA id u18sm6343562wrt.26.2019.12.12.07.53.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2019 07:53:28 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Dec 2019 16:53:17 +0100 Message-Id: <20191212155318.21737-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/microdvd: Use \n instead of \0 to end file header X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, the microdvd demuxer uses av_strdup() to allocate the extradata from a string; its length is set to strlen() + 1, i.e. including the \0 at the end. Upon remuxing, the muxer would simply copy the extradata at the beginning, including the \0. This commit changes this by not adding the \0 to the size of the extradata; the muxer now delimits extradata by inserting a \n. This required to change the subtitles-microdvd-remux FATE-test. Furthermore, the extradata is now allocated with zeroed padding. The microdvd decoder is not affected by this, as it didn't use the size of the extradata at all, but treated it as a C-string. Signed-off-by: Andreas Rheinhardt --- libavformat/microdvddec.c | 9 +++++---- libavformat/microdvdenc.c | 1 + tests/ref/fate/sub-microdvd-remux | Bin 416 -> 416 bytes 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/ref/fate/sub-microdvd-remux b/tests/ref/fate/sub-microdvd-remux index a71da99031fdc4bff13ea7124c046e761a650dc8..92ff233f56b6fec33d4e9e0698ec43377ea5fab7 100644 GIT binary patch delta 12 TcmZ3$ynuOvE+f}Qy&^^c7%l^0 delta 12 TcmZ3$ynuOvE+fN6y&^^c7yJWP diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c index ca9086afe9..08e6fca09c 100644 --- a/libavformat/microdvddec.c +++ b/libavformat/microdvddec.c @@ -117,10 +117,11 @@ static int microdvd_read_header(AVFormatContext *s) continue; } if (!st->codecpar->extradata && sscanf(line, "{DEFAULT}{}%c", &c) == 1) { - st->codecpar->extradata = av_strdup(line + 11); - if (!st->codecpar->extradata) - return AVERROR(ENOMEM); - st->codecpar->extradata_size = strlen(st->codecpar->extradata) + 1; + int ret, size = strlen(line + 11); + ret = ff_alloc_extradata(st->codecpar, size); + if (ret < 0) + return ret; + memcpy(st->codecpar->extradata, line + 11, size); continue; } } diff --git a/libavformat/microdvdenc.c b/libavformat/microdvdenc.c index 04f475b645..6639651e02 100644 --- a/libavformat/microdvdenc.c +++ b/libavformat/microdvdenc.c @@ -36,6 +36,7 @@ static int microdvd_write_header(struct AVFormatContext *s) if (par->extradata && par->extradata_size > 0) { avio_write(s->pb, "{DEFAULT}{}", 11); avio_write(s->pb, par->extradata, par->extradata_size); + avio_w8(s->pb, '\n'); avio_flush(s->pb); }