Re: [Cellar] AV1 mapping Matroska
Hendrik Leppkes <h.leppkes@gmail.com> Mon, 02 July 2018 11:35 UTC
Return-Path: <h.leppkes@gmail.com>
X-Original-To: cellar@ietfa.amsl.com
Delivered-To: cellar@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 71564130E0A for <cellar@ietfa.amsl.com>; Mon, 2 Jul 2018 04:35:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HBjztX7m8KNE for <cellar@ietfa.amsl.com>; Mon, 2 Jul 2018 04:35:13 -0700 (PDT)
Received: from mail-wm0-x234.google.com (mail-wm0-x234.google.com [IPv6:2a00:1450:400c:c09::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0FA20130EBB for <cellar@ietf.org>; Mon, 2 Jul 2018 04:35:11 -0700 (PDT)
Received: by mail-wm0-x234.google.com with SMTP id w16-v6so8007855wmc.2 for <cellar@ietf.org>; Mon, 02 Jul 2018 04:35:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=gnyChOSJCxJhT3rs5wTXwJloenfRrdunTxJAk+6CudI=; b=qys7DvImVckbxGOiWnrWh3V5+wxvLGdU6Vun//m1yyX2C+muuTv2/sH7i3pxOYgne2 dcERTPMThJSxy+Djpj9fQBi2+UFjheogktCGIBA8/8VECun1NVlrbfLLIvf4Fd2cfV/9 VJxBzaEUwEgSMl54r4+pmMsbiLFvLcR99DJuTpbCDXhD4+SD+nbaxXDwJn/FiEkEFoB8 MBwZcLHSuiMPBzkA/9hiXB9qTH9s7Zct4NhyMh65g3VNElz+Qrwk+lr0Ttb1DNs7uC8/ XN6bX9nixCDn6R804Tb4um4emI+o2BStQD3EdG/barUa3Fp06UD2CKE4Hrdq+a+fQaby Mafw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=gnyChOSJCxJhT3rs5wTXwJloenfRrdunTxJAk+6CudI=; b=Qdgclau/JtLWVBuNZylaN8zM7kT9Frzpx85YgGCSCq/Wb4wdKSCbqy6cEsHK5cIi5N 6rLfO3Z9Dfv9QZjmdxWQsOQ1Cd36yvl3e8IktfxsKsJxBt3X5IGkc508uztwZQfuaWgl gxkPGQxjXdCMk02qhnDno8Ho8WVyJxI49RcLD8FtlwpSeBIhUAPAG2tn1tf0CfLt+V+W N30CXf3oHywU+ns6xqbierKUpA+GT1JhQT66hpWfBB9uVYDOeibkFH+sZfcKE2o/gSWu NkphKB/yFOZG573Pi5ZGgmQhry2OhSV6J6HHy3pBcCLVAJH1Rir62ZjsljzToMbvKjSj QTfQ==
X-Gm-Message-State: APt69E2WoeEfm6E1UfT0MAL+op19+3icKeBkg6y3b42B1X+5YRleJBje 5IAtnKSOJZDuWbeEu0aGxaO8FG5lkgXjsO2pTaPzdvf3
X-Google-Smtp-Source: AAOMgpfZQ1k/kyKZwh0kl54aC7yV/DZx6v1RBDPQUM4NoMz8EsNhcSvcoGAqGKZEjPQZyDDjfn53BI6Xl+IB5mbkCWw=
X-Received: by 2002:a1c:8d15:: with SMTP id p21-v6mr7357699wmd.145.1530531309319; Mon, 02 Jul 2018 04:35:09 -0700 (PDT)
MIME-Version: 1.0
References: <f603a9f5-d7dc-6640-1f53-f4d7b62a788e@googlemail.com> <CAOXsMFJJbHbh3=Gnu7Uag4Skq5+=jOimFNPxuicgDiVdbven4w@mail.gmail.com> <dada3690-c8da-05db-4ddb-32476c1170f5@xiph.org> <CAOXsMF+CPW6VJsFaeahuL00hnvq5dUO-gHE3sYXPr5iVy8s1aQ@mail.gmail.com> <87efgmdqou.fsf@bunkus.org> <20180702103455.GQ4839@michaelspb> <CAOXsMF+Q-RzwapNOamqc9G9XttnzMXyUuSY8_HFAA+h+4YsMJA@mail.gmail.com> <36a0dc7e-8579-d99c-4beb-e8f4ce019eff@mediaarea.net> <CAOXsMFKwoujXN1zqzDN16dcw5=14-Mer+XoJZZMzPbo+JpS_XA@mail.gmail.com>
In-Reply-To: <CAOXsMFKwoujXN1zqzDN16dcw5=14-Mer+XoJZZMzPbo+JpS_XA@mail.gmail.com>
From: Hendrik Leppkes <h.leppkes@gmail.com>
Date: Mon, 02 Jul 2018 13:35:00 +0200
Message-ID: <CA+anqdzpJH+HkAhLwQn2NmpxRuFKtJazN3W70s4BvVpREqeOXQ@mail.gmail.com>
To: CELLAR list <cellar@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/cellar/TU9ZAEVKPuquAkI3IVp0A5jml8I>
Subject: Re: [Cellar] AV1 mapping Matroska
X-BeenThere: cellar@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: Codec Encoding for LossLess Archiving and Realtime transmission <cellar.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cellar>, <mailto:cellar-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cellar/>
List-Post: <mailto:cellar@ietf.org>
List-Help: <mailto:cellar-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cellar>, <mailto:cellar-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Jul 2018 11:35:15 -0000
On Mon, Jul 2, 2018 at 1:27 PM Steve Lhomme <slhomme@matroska.org> wrote: > > 2018-07-02 13:14 GMT+02:00 Jerome Martinez <jerome@mediaarea.net>: > > On 02/07/2018 12:51, Steve Lhomme wrote: > >> > >> 2018-07-02 12:34 GMT+02:00 Michael Niedermayer <michael@niedermayer.cc>: > >>> > >>> Hi > >>> > >>> On Mon, Jul 02, 2018 at 09:47:45AM +0200, Moritz Bunkus wrote: > >>>> > >>>> Hey, > >>>> > >>>>> Looking at the term "coded video sequence" (CVS) in other codecs (H.264 > >>>>> and H.265) it seems it's a common term. And for those codec one Segment > >>>>> correspond to one CVS, with the parameters of that CVS stored in the > >>>>> CodecPrivate (SPS + PPS for H.264 for example). So we should probably > >>>>> go > >>>>> in that simple way. > >>>> > >>>> I have quite a lot of h.264 samples here, mainly M2TS from DVB, where > >>>> SPS/PPS change mid-stream, often multiple times. For such files the > >>>> first > >>>> occurrences of SPS/PPS make up the AvcC in CodecPrivate, but all key > >>>> frames > >>>> are still prefixed with the currently active SPS/PPS — because that's > >>>> the > >>>> only way to signal that stuff has actually changed. > >>> > >>> IMHO All SPS/PPS should be in the "global header" (CodecPrivate) which > >>> the > >>> global header applies to, not just the first. > > > > > > Not possible with e.g. real time streaming (you don't know in advance the > > next SPS/PPS) > > > >>> This way an application can know all resolutions, aspect ratios and so on > >>> from just the header without the need to scan through all random access > >>> points. > >> > >> My understanding is that it's how it's done in MP4: > >> > >> "Each AVC sample entry, which contains the AVC video stream decoder > >> specific information, includes a group of SPSs and PPSs. This group of > >> parameter sets functions much like a codebook. Each parameter set has > >> an identifier, and each slice references the parameter set it was > >> coded against using the parameter set's identifier." > >> > >> I have to check but I don't think Sequence Headers OBUs have > >> identifiers like that in AV1. > > > > > > Not in AV1 (I just updated my own code for AV1 1.0.0 spec, still not > > there). > > But it actually does not answer the issue because in the example there is > > usually still only the "set id" of 0 (the new SPS replaces the old one, not > > a new number). > > > > Actually IIRC in HEVC (same for AVC) there are explicitly 2 different codec > > identifiers: > > - "hvc1" is for *all* SPS/PPS in the global header (CodecPrivate), and there > > is no SPS/PPS in the stream itself > > - "hev1" is for *no* SPS/PPS in the global header (CodecPrivate), and key > > frames are prefixed with the currently active SPS/PPS > > (I personally don't see the need of 2 different identifiers, as it quick to > > see if SPS/PPS is in the file, but there is surely a reason) > > > > The issue is not only for AV1, but for all formats permitting to have the > > init in the stream itself (AVC, HEVC, AV1...). > > > > IMO we should not restrict to only one possibility in Matroska spec, as they > > are for different needs (non real time vs real time), whatever is the format > > (AVC, HEVC, AV1...). > > > > > > > >> By the way, this is one mapping for V_AV1. There could be other AV1 > >> mapping in Matroska where there is no CodecPrivate and there could be > >> multiple coded video sequences in it. But it would require the use of > >> CodecState and CueCodecState which is currently not an option for > >> WebM. So for now I will concentrate on a single coded video sequence. > >> And if needed in the future we can do a different one. > > > > > > If WebM decides that real time AV1 is for them, they may decide to discard > > CodecPrivate usage and put sequence header in the "Block" (as they currently > > do with up to date AOM build) > > So restriction will not be there in practice. > > Seeking in such a file would not be possible. I'm not sure it's > desirable even when doing adaptive streaming with short sequences. We > will need CodecState and CueCodecState for that. We could define such > a case (with a different codec ID) for Matroska and WebM could pick > that from there. > > Also while working on the case where the Sequence Header OBU doesn't > change, I noticed an issue. The Sequence Header OBU can still change > the [operating_parameters_info] during the lifetime of the stream > (paragraph 7.5 pointed out by Tim). That means even applying the > stricter restrictions of the Codec Video Sequence in AV1 means we'd > still need CodecState and CueCodecState for seeking to work. This > change is only possible in a specific decoder model (Annex E) when > [decoder_model_info_present_flag] is 1. When it's 0 then the > [operating_parameters_info] doesn't apply. So we should probably > restrict the single Sequence Header OBU to streams where > [decoder_model_info_present_flag] is 0. > In this particular case, doesn't the stream already include in-band Sequence Header OBUs, and judging from the requirement of some parameters being allowed to change, I would wager that decoders would be setup to handle them as well. So all this comes down to is setting up Cues properly to point to clean seek points with a Sequence Header + Keyframe, much like a H264 stream with minor SPS/PPS changes would be muxed right now. Now if an encoder would produce a stream that uses multiple different Sequence Headers but doesn't regularly repeat the sequence header (ie. with keyframes), then such a stream would be unseekable in whatever medium, and that would be the encoders fault. (PS: re-posted to the list, can someone fix this list to set reply-to headers?) - Hendrik
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Moritz Bunkus
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Jerome Martinez
- [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Moritz Bunkus
- Re: [Cellar] AV1 mapping Matroska Thomas Daede
- Re: [Cellar] AV1 mapping Matroska Andreas Rheinhardt
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Luca Barbato
- Re: [Cellar] AV1 mapping Matroska Timothy B. Terriberry
- Re: [Cellar] AV1 mapping Matroska Andreas Rheinhardt
- Re: [Cellar] AV1 mapping Matroska Moritz Bunkus
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Hendrik Leppkes
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Jerome Martinez
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Michael Niedermayer
- Re: [Cellar] AV1 mapping Matroska Steve Lhomme
- Re: [Cellar] AV1 mapping Matroska Michael Niedermayer