Re: [Cellar] QuickTime timecode tracks in Matroska, was Ancillary data in Matroska
Steve Lhomme <slhomme@matroska.org> Wed, 26 April 2017 07:51 UTC
Return-Path: <slhomme@matroska.org>
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 5A1E7131C65 for <cellar@ietfa.amsl.com>; Wed, 26 Apr 2017 00:51:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=matroska-org.20150623.gappssmtp.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 j1v9PaG6H5P9 for <cellar@ietfa.amsl.com>; Wed, 26 Apr 2017 00:51:47 -0700 (PDT)
Received: from mail-yw0-x230.google.com (mail-yw0-x230.google.com [IPv6:2607:f8b0:4002:c05::230]) (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 731C7131C60 for <cellar@ietf.org>; Wed, 26 Apr 2017 00:51:40 -0700 (PDT)
Received: by mail-yw0-x230.google.com with SMTP id 203so103889643ywe.0 for <cellar@ietf.org>; Wed, 26 Apr 2017 00:51:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=matroska-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-transfer-encoding; bh=ozX0OqqUHD4YngPnsSFn/dckzusm4eujdkAzuazmdnM=; b=kfI/cZ5ZslAodfyExZqZlRe3wuV+UmSmr6v0DLuiA7yS9H7EDp54i8LP34KyliFDTt lXKogP2gqxkT7H0uC0Em7GwVB4DO9GdM+cZQgGLjE1+vgH+drSLRtZxpUJUooEnLCUef +haHY1I8zOta1sM2Gl4VnwMb+GqIJAi8IuoIINIt10JIOEgXiL7d49Cb/8J5/mIiuG9Q xs4p2LrMixGx953/1J53A7B5nQMxEYq7gmXDyNNOw6LOy+5rXco5dXJVeTtiadkxDl8A tDqf6kiGvwiOoT08RJhEQUTu6vk8mncwgxra8b0H21sfqQqsT5WVnrx7eTYqpnOxVSVA 2/TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-transfer-encoding; bh=ozX0OqqUHD4YngPnsSFn/dckzusm4eujdkAzuazmdnM=; b=E5Tm8ItKseIz5dAebpvVcM0DMEClenpvbgFinj+MExGjfigcN2CSEc1HuTWYpDFjS/ tVVocvO7m8KolY8sJmqo6OPOQzj0QmeLBPdyOXs+TbpROxPGli3l2inhiK9+hcE6TxZE +VS5T8Zpiqptmj1NHeT5+JIN4eMYshbXKJu6SshVScxwWE183L51Qd+UTMapI7w6OiBk whiwIYnd11IJdFQ5it9DP9N6nPYtmoxvcOY5K8iVI/Iz3tjWVdiK1/l3411vClVviOtq cAGwio1oAGNlAft3OctdABw6Tm0FrjTfxRYt9HXmuGvCpkbutm3lpQq2SoM4Ov01UmpZ nDog==
X-Gm-Message-State: AN3rC/7JyYFtm5eKIjui7ZvsCwaYR0h2tYFhcmW8XpRWma0smERufhFx y6x3BxEI7YmbPqmApDwzJ+CtAiJHgg==
X-Received: by 10.129.103.11 with SMTP id b11mr13321447ywc.75.1493193099273; Wed, 26 Apr 2017 00:51:39 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.83.4.215 with HTTP; Wed, 26 Apr 2017 00:51:38 -0700 (PDT)
In-Reply-To: <1db0fb80-2441-a4f0-729e-bc5b5cfd1a84@mediaarea.net>
References: <2651a6f3-9c9a-6f76-2ee7-4d5c23b1ce57@mediaarea.net> <BFB215F1-1254-409C-817A-7AB1A772437A@dericed.com> <922C5404-EC19-462D-A836-C952E66C2FD8@dericed.com> <B3BE02C3-9402-4802-BC9E-3F95020C641D@dericed.com> <9244b201-9097-365f-b7da-f2d8553616ee@mediaarea.net> <79FE60E9-88D8-4922-AE76-9D1924E1D6EB@dericed.com> <43056655-cf09-9d54-6552-4ed4b655e74f@mediaarea.net> <34CA7943-497F-449A-81DA-3237CB87BDD7@dericed.com> <1db0fb80-2441-a4f0-729e-bc5b5cfd1a84@mediaarea.net>
From: Steve Lhomme <slhomme@matroska.org>
Date: Wed, 26 Apr 2017 09:51:38 +0200
Message-ID: <CAOXsMF+uE6PzVUjPhDd7w98nGXRrJ8Wr4ynqCr2HUvJmbH0kvg@mail.gmail.com>
To: Codec Encoding for LossLess Archiving and Realtime transmission <cellar@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/cellar/HsJt6V6hjUW_tr4JYs1tNmzSQT8>
Subject: Re: [Cellar] QuickTime timecode tracks in Matroska, was Ancillary data in Matroska
X-BeenThere: cellar@ietf.org
X-Mailman-Version: 2.1.22
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: Wed, 26 Apr 2017 07:51:49 -0000
A bit late on the party but I agree with the move to a more specific track type for timecodes rather than the generic ancillary data. 2017-03-20 22:07 GMT+01:00 Jerome Martinez <jerome@mediaarea.net>: > Le 20/03/2017 à 21:37, Dave Rice a écrit : >> >> [...] >>>> >>>> I’ve only seen a single value stored but then sometimes an edit list >>>> used to alter the ordering of the timecode (in case when its >>>> non-sequential). For Matroska possibly it could simply store a new timecode >>>> Block at any case when it is not sequential. >>> >>> What about seeking? >> >> Isn't the seeking similar to QuickTime. > > > Difference is that in QuickTime, a wrong "seek table" makes the playback > impossible, so developers are more careful about it. and in the file I > remember (I must still find it), there was only one offset in the offset > table of QuickTime and a single "chunk" of time code with byte size of 4 > bytes per frame (to be confirmed as you say you saw edit lists instead) > >> In QuickTime you'd need the offset table of the timecode track to >> understand the number and location of all timecode samples. In Matroska you >> would use the associated CuePoints of the timecode track for the same >> reference. By parsing Cues the reader should be able to determine if the >> timecode is stripped or not and if not then have the CueTimes for each >> associated timecode Cluster. >> >>> If you have a timecode block at the first frame and also at the middle of >>> the file, how a player can know that there is a timecode block breaking the >>> sequential order without parsing the whole file when there is a seek request >>> to the last minute of content? In that case, time code real value would be >>> set to "waiting for new block" (and this block never comes). I don't think >>> that forcing full parsing of the file with time code for seeking is a good >>> solution. >> >> Same. But in the case of video if you seek to a P-frame then you have to >> go backwards and decode from the I-frame. Similarly if seeking to a >> timepoint without a timecode Cluster (analogous to a P-frame), then the >> reader would have to use the Cues to decode the prior timecode Cluster >> (analogous to I-frame) in order to determine the timecode value of the seek >> point. > > > Possible. > But we need to be careful, what does it means? > examples of issue: > 1/ can a player consider that if there is only one CuePoint with CueTrack = > the ID of the time code track, it means that this is a stripped content and > time codes are in sequential order? > 2/ can a player consider that if there are only 2 CuePoints with CueTrack = > the ID of the time code track, it means that this is a stripped content and > time codes are in sequential order except for one place and there is a > single discontinuity? > 3/ or must a player consider that if there only 2 CuePoints (let say frame 0 > and frame 1000) with CueTrack = the ID of the time code track, it means that > it must seek to 0 if the requested frame is 999 (so a loooooong read of the > file on disk before being able to play frame 999) > If answers are 2/ yes 3/ no, I understand that the only method for storing a > time code track with all values not sequential is to have a CuePoint for > each time code frame (which makes the Cues huge, 15-20 bytes of CuePoint per > time code frame). > > Please provide example about how you imagine CuePoints in the cases: > 1/ sequential time codes during 2000 frames > 2/ sequential time codes during 2000 frames except one discontinuity at > frame 1000 > 3/ 2000 different times codes > and where a player must seek if the request is to seek to frame 999. Are timecode frames supposed to be matching a specific video frame or audio frame ? Or they are loose ? If the former case it may be best to be attached as a BlockAdditional. Otherwise they should always be in sequential/display order, just like audio is. Even if video is not. Having a separate track means the timestamps may not match exactly the video or audio tracks. So in case of seeking/discontinuity it's like you said, there's a state where you need to way for the next Timecode block to know where you are. But in general a Timecode block should/must be placed before the audio/video it corresponds to. It's the same requirement there is in WebM that audio blocks are muxed before video blocks. Timecode would be even more prioritary. > _______________________________________________ > Cellar mailing list > Cellar@ietf.org > https://www.ietf.org/mailman/listinfo/cellar -- Steve Lhomme Matroska association Chairman
- Re: [Cellar] Ancillary data in Matroska Steve Lhomme
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Steve Lhomme
- [Cellar] Ancillary data in Matroska Jerome Martinez
- Re: [Cellar] Ancillary data in Matroska Dave Rice
- Re: [Cellar] Ancillary data in Matroska Dave Rice
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Dave Rice
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Jerome Martinez
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Dave Rice
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Jerome Martinez
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Kieran O Leary
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Dave Rice
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Jerome Martinez
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Dave Rice
- Re: [Cellar] QuickTime timecode tracks in Matrosk… Steve Lhomme