From patchwork Tue Feb 6 01:39:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 7516 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.150.1 with SMTP id c1csp3510469jai; Mon, 5 Feb 2018 17:46:20 -0800 (PST) X-Google-Smtp-Source: AH8x227RwFk+nqmH2GhMZnv0ylF3fPslPB4gTWN1NtYd/koTCdZnjKadZ8mtktdO78teevHUCvjK X-Received: by 10.28.225.133 with SMTP id y127mr407591wmg.55.1517881580267; Mon, 05 Feb 2018 17:46:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517881580; cv=none; d=google.com; s=arc-20160816; b=wr8JFgiT+D6AXi6ow+x0XyeKONSHs9oXNb/vclG5k4MEjeBqZ7i7vM5y8aUPhDOZfn +5NVYRfu0X5qzSGJoJSWwWeQ+Qkz+cgTmI/D5JolQnWalfF42/p8sOngEsvyQYfa7gVW 2rcLTn8xAg9xZwf+ZP3VlgTVwd5uki+MmrH9XpTMneSvus314VJi2Ui56RVyxaXtpxPJ 9r+P+g1WlNlurxgTZmam9Wj77ONQ08tmr136gfU3aEzkVTL+VnzHVj2cEYF6v/EWX1mc ZlidLvFbmi6cqlXEtVKiAdZSXjiKC9vgKAw/GF9knG0tW1vPCX+pK2m5VgjWYmKtkLga JCAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=UkswCTWYgRMjZJP37NXt1az7M57oUrNaZMONnnybxKw=; b=qh6Z+k7TSnzc73MjFr5TAagNSMyvbcEX+oLbK1963bq2EipHfCGa1tUfWsSFBxPbcR MjrBj2yydqXhmDASjwY9LBuSXJ3DjBQ3Qe45gt9kl+caeoanaaQWxyr455zRpHLQ5eRH 894evTBNw0oJau1tNqYi8H+o5MGENJ+iawddDGTlHH0l8Skgi08L8rsQ3/xrHlR7E/QU I9YAtj5EappX/PdSW7qOhRL/nr+lLbiIGmJMkFh7xiM2Uw65ogE+bnL6wVdbxG2R5loD O9FqRbSFhc6Rcv4E5Jc8Iq++bouII7kd6IpKMKXcWRiYcpkUD7meDwT6ndAf5HKXx3cP Vepw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=uM+lyWl6; 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=NONE 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 m30si8009886wrb.418.2018.02.05.17.46.19; Mon, 05 Feb 2018 17:46:20 -0800 (PST) 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=uM+lyWl6; 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=NONE 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 4A6A2689E3E; Tue, 6 Feb 2018 03:46:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49025689DB5 for ; Tue, 6 Feb 2018 03:46:04 +0200 (EET) Received: by mail-qt0-f196.google.com with SMTP id h4so370003qtn.13 for ; Mon, 05 Feb 2018 17:46:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=Wa6OSknXfxE3EqXXOlZo6YD05b2DnjypyQew3IgJH5I=; b=uM+lyWl64uLT9oGRJOj+Fqs7HNnIz0chynwAEUyCsuSTcc2fBUQYwiZrBQp/x8phxI KmUjMo6L7k6gqKNpquft9VfKQAATL6dRgZDd+fLDBrEcapYKj8aqP6TkVHN1VqyaaEZ9 e5Z09IUl/df63smxg2q+iVhQYgF9CtmgcEXO8bAxGfUxlKGze4cnWyDyNdhl9Z74Ao+/ 3HN/hVPfJuVNXeXkRVxjkJ/BaON+gHOa803PBQOKeo3IZddlTC0yjZ7SuIj/yQXp0+Vo HV9lIlO1AQq+8Gi3xIE9vDHm4dT8jAI33USWE4O77xdiyadceQiiUCvM7CAsDstq2WZc 4HNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=Wa6OSknXfxE3EqXXOlZo6YD05b2DnjypyQew3IgJH5I=; b=K8P27zaVAckh/7jZAP4EAWyMwxExViDpoMWly3StcT4IpCBpG8qUp9+nAbke7tcbx0 FJy+WNwIYReyHvU8oLQ2ldppAft29Ume7ZX+eY2UAvTJgTPvazMdDMnPd1d4ECXrx5sN rBBVF8VJoZ9O4XVPJdUMF0dmIIUbaz2lTd/GSc4DrBzuuqp4lvME0wzgswipzaJw7FIl INDOsNYgKYdCvbZUyMhuREjDKbxgrgvi4R82//dK3ImpeToF8tP8YZ+PM9fLNmt20tZK 5yMX3sUiNXTzoeyLr4OtYj0X5igZ8BBOSO3A5zaYx3A2WBdGkHBxRPAkKnbPwd4iuQ22 WP/g== X-Gm-Message-State: APf1xPCX40KPKuU5zxgUK7Jn15hB51OWhJWlEbKouR+mgcPFn/mS5CKB rHUCMt66SP1/uQ4gmbv6dHZoPQ== X-Received: by 10.200.56.17 with SMTP id q17mr1140833qtb.313.1517881254599; Mon, 05 Feb 2018 17:40:54 -0800 (PST) Received: from localhost.localdomain ([181.229.225.176]) by smtp.gmail.com with ESMTPSA id f77sm4073342qka.72.2018.02.05.17.40.53 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 05 Feb 2018 17:40:54 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Feb 2018 22:39:52 -0300 Message-Id: <20180206013952.8912-1-jamrial@gmail.com> X-Mailer: git-send-email 2.16.1 Subject: [FFmpeg-devel] [PATCH] avformat/mov: add VP8 codec support 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Demuxing only. Muxing is disabled as altref frame handling is not defined, and there's no way to know the presence of such frames during stream initialization. Based on a patch by Steven Liu. Fixes ticket #7000 Signed-off-by: James Almer --- libavformat/isom.c | 1 + libavformat/mov.c | 1 + libavformat/movenc.c | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/libavformat/isom.c b/libavformat/isom.c index 9d9f85885b..59502a8b3f 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -186,6 +186,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = { { AV_CODEC_ID_H264, MKTAG('x', 'a', 'l', 'g') }, /* XAVC-L HD422 produced by FCP */ { AV_CODEC_ID_H264, MKTAG('a', 'v', 'l', 'g') }, /* Panasonic P2 AVC-LongG */ + { AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */ { AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */ { AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') }, diff --git a/libavformat/mov.c b/libavformat/mov.c index d16b431e03..acfbfc5324 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2397,6 +2397,7 @@ static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb, case AV_CODEC_ID_EAC3: case AV_CODEC_ID_MPEG1VIDEO: case AV_CODEC_ID_VC1: + case AV_CODEC_ID_VP8: case AV_CODEC_ID_VP9: st->need_parsing = AVSTREAM_PARSE_FULL; break; diff --git a/libavformat/movenc.c b/libavformat/movenc.c index f7079f3df7..6913fce470 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -6074,6 +6074,12 @@ static int mov_init(AVFormatContext *s) pix_fmt == AV_PIX_FMT_MONOWHITE || pix_fmt == AV_PIX_FMT_MONOBLACK; } + if (track->par->codec_id == AV_CODEC_ID_VP8) { + /* altref frames handling is not defined in the spec as of version v1.0, + * so just forbid muxing VP8 streams altogether */ + av_log(s, AV_LOG_ERROR, "VP8 muxing is currently not supported.\n"); + return AVERROR(EINVAL); + } if (track->par->codec_id == AV_CODEC_ID_VP9) { if (track->mode != MODE_MP4) { av_log(s, AV_LOG_ERROR, "VP9 only supported in MP4.\n");