From patchwork Mon Jun 18 14:34:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gyan X-Patchwork-Id: 9439 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:11c:0:0:0:0:0 with SMTP id c28-v6csp3875056jad; Mon, 18 Jun 2018 07:34:41 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKIP54UrGZZ+t0C3I+NJOSCeF9jI2yzX3QazKYla/BWZ5/LthUUq0ncRuBXavdnjhDhfM0+ X-Received: by 2002:a1c:6c09:: with SMTP id h9-v6mr9395817wmc.138.1529332481721; Mon, 18 Jun 2018 07:34:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529332481; cv=none; d=google.com; s=arc-20160816; b=sQVC9U16LY4dNg2dsky92T2QL+poXoh/A+DdXwDERIee9oPhTEmBRKD29O/qFWch2G kU9ZCkiy46LoxTQFUY2dCx3UdXj0HJOhmzTn+VZg8p0UYXq83wmtwc1rKr6Xze4A70Gj RakhksKAl8SXU8UrfC02NyY6n4ngWMnyUtsyHHXGY6BDNW+Cpxuf6FzbculzkVi456YY Pe6upS47Vv3xcjfAj4OFUEtBLB3ZP5KlN5lE9NBfslwMJkmeFOJUMPSECoQStKvEBPII 82k4y42qaBsF0YH34vCIzNU9miT4wItoGXi3HF4Gl1+O2HfsPc2eXBcUydA4GtNyofmf jwPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:mime-version:user-agent:date:message-id:from:to :dkim-signature:delivered-to:arc-authentication-results; bh=+C59/29QztJu9e1dGhaVS44qiYO2kGdoFehh7966B+Y=; b=S09vEngeYQaVJMFJqZ0jvGgl+0UZgWFtp99CACTKzIZLqY/rnvjf5R+o2Ss5LbZ6bH +qw4w+RuTz63PGIjgSpSvnvpHzwG8pK2+Ud2RZN+kGISx/6nyJ7ey5fWmcbHCApB8hqS RWJqmXUlWLQMyUFw/aT3JoC+6dkWfBabTQtPEiKunFUKf16UKCdcbs7yHTJlK9PNT52C 89lcReKNsOFSlPF1h+iLjkSgzxScvxLZ7Al3ZBsbeElJFV1+88R1QYEoQCl4q533cD0D G9h42CzOu9enFdC4v4rbszbAelfp5lWySV5KO9g16NcSHcSxS2sbYsuFX7VokO01GalO y4mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=hSQ0xG7B; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q4-v6si3768685wro.137.2018.06.18.07.34.41; Mon, 18 Jun 2018 07:34:41 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=hSQ0xG7B; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7D66768978C; Mon, 18 Jun 2018 17:33:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f182.google.com (mail-pf0-f182.google.com [209.85.192.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 490866807B1 for ; Mon, 18 Jun 2018 17:33:41 +0300 (EEST) Received: by mail-pf0-f182.google.com with SMTP id b17-v6so8280788pfi.0 for ; Mon, 18 Jun 2018 07:34:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=QEjthaifUDJuXZWW1c2L7/VnA1ZSTvnpsJMlIrOntuo=; b=hSQ0xG7BMIcyhMD2RtqEDtaMHNg1QcNx0d5gW9fomR9GfrVhzL+JYJ6UtVg3rJqKrz EWajlsYWyD6IXcJj+IAPAvzarH7NN19dPhaILGbryjT+XcvX5mgJstr48VwuGgMXf//B zLeHQ10HMSEKDHshDbqResV7diESxqmTs0OKIgZmYpvzU3uoHTgSSAs1ICw0IdGVt8jm ezikE7ZW73wzDrayRoISVQ7fYzQpTbWsfzbwHIKJ3LkucS/jep7YJQWsnk4QNKBIBaZL 2eJj+62fYHhdEkSZmSwRezkxpPSJX/+C+lNzXWB1ZveVuV9Rh704Zdf9MhLn6qD+Rg9v yw1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=QEjthaifUDJuXZWW1c2L7/VnA1ZSTvnpsJMlIrOntuo=; b=gXE+2swI6ja48pkRABPLyt64K41VNnblW5QxoqYCml1lTY/NE8Wr/wLOPjZIvPhQl6 Abhgr5RZYqLWa1q5ofcUr9ej2szYUtRVg58YCVL1uPVy7zfkPkcMHnceUYIvCH0ihY6D o3Cceik3378Ny6eLjBvxXTg6QUTQm19v9JobKUoSloSYIpYgRqOPtUrYwPu7/PRqHeyi TDTCwtlfxRomAqX13vSbvEdsA6RPxIxZACjQiwP5myfA95BTnXlXLDVVIO7eKYiEqFfo +7+ga3AYBPdxJ8KLmvGbnjBUfsop6x1pRPYClakK+sr6C+h9UsETg5ZMB8Q8DPIdQmqO YVKw== X-Gm-Message-State: APt69E23UyqWUpN4B7bKYqMWUrWpER6ukebWO7jGlEtPGOv7bG0Hol3W HrXs5Q2BnQNHo/5G+2Lx19LKFC1Z X-Received: by 2002:a62:1f45:: with SMTP id f66-v6mr13783235pff.253.1529332471652; Mon, 18 Jun 2018 07:34:31 -0700 (PDT) Received: from [192.168.1.225] ([103.206.133.45]) by smtp.gmail.com with ESMTPSA id g10-v6sm8474983pgs.17.2018.06.18.07.34.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Jun 2018 07:34:30 -0700 (PDT) To: ffmpeg-devel@ffmpeg.org From: Gyan Doshi Message-ID: <871ac818-f0b4-c9dd-bfe0-796484006f32@gmail.com> Date: Mon, 18 Jun 2018 20:04:27 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] [PATCH 2/2] avformat/movenc: allow hdlr name field to be empty 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Fixes #7262. Requires https://patchwork.ffmpeg.org/patch/9420/ to be applied first. Regards, Gyan From bc208828dc7c9456550c1b27e7540b2b03be817e Mon Sep 17 00:00:00 2001 From: Gyan Doshi Date: Mon, 18 Jun 2018 19:52:20 +0530 Subject: [PATCH 2/2] avformat/movenc: allow hdlr name field to be empty Both QTFF and the ISOBMFF standards allow it. Fixes #7262 --- libavformat/movenc.c | 16 +++++++++++----- libavformat/movenc.h | 1 + libavformat/version.h | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 3661d24f4f..cc8bb1cfd5 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -101,6 +101,7 @@ static const AVOption options[] = { { "write_prft", "Write producer reference time box with specified time source", offsetof(MOVMuxContext, write_prft), AV_OPT_TYPE_INT, {.i64 = MOV_PRFT_NONE}, 0, MOV_PRFT_NB-1, AV_OPT_FLAG_ENCODING_PARAM, "prft"}, { "wallclock", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MOV_PRFT_SRC_WALLCLOCK}, 0, 0, AV_OPT_FLAG_ENCODING_PARAM, "prft"}, { "pts", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MOV_PRFT_SRC_PTS}, 0, 0, AV_OPT_FLAG_ENCODING_PARAM, "prft"}, + { "empty_hdlr_name", "write zero-length name string in hdlr atoms within mdia and minf atoms", offsetof(MOVMuxContext, empty_hdlr_name), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { NULL }, }; @@ -2551,6 +2552,7 @@ static int is_clcp_track(MOVTrack *track) static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { + MOVMuxContext *mov = s->priv_data; const char *hdlr, *descr = NULL, *hdlr_type = NULL; int64_t pos = avio_tell(pb); @@ -2613,11 +2615,15 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra avio_wb32(pb, 0); /* reserved */ avio_wb32(pb, 0); /* reserved */ avio_wb32(pb, 0); /* reserved */ - if (!track || track->mode == MODE_MOV) - avio_w8(pb, strlen(descr)); /* pascal string */ - avio_write(pb, descr, strlen(descr)); /* handler description */ - if (track && track->mode != MODE_MOV) - avio_w8(pb, 0); /* c string */ + if (mov->empty_hdlr_name) /* expressly allowed by QTFF and not prohibited in ISO 14496-12 8.4.3.3 */ + avio_w8(pb, 0); + else { + if (!track || track->mode == MODE_MOV) + avio_w8(pb, strlen(descr)); /* pascal string */ + avio_write(pb, descr, strlen(descr)); /* handler description */ + if (track && track->mode != MODE_MOV) + avio_w8(pb, 0); /* c string */ + } return update_size(pb, pos); } diff --git a/libavformat/movenc.h b/libavformat/movenc.h index f2967bface..fe605d1ad2 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -233,6 +233,7 @@ typedef struct MOVMuxContext { int track_ids_ok; int write_tmcd; MOVPrftBox write_prft; + int empty_hdlr_name; } MOVMuxContext; #define FF_MOV_FLAG_RTP_HINT (1 << 0) diff --git a/libavformat/version.h b/libavformat/version.h index 3c54efbb37..57b6599e71 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -33,7 +33,7 @@ // Also please add any ticket numbers that you believe might be affected here #define LIBAVFORMAT_VERSION_MAJOR 58 #define LIBAVFORMAT_VERSION_MINOR 17 -#define LIBAVFORMAT_VERSION_MICRO 100 +#define LIBAVFORMAT_VERSION_MICRO 101 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \