draft-ietf-cellar-ffv1-10.txt   draft-ietf-cellar-ffv1-11.txt 
cellar M. Niedermayer cellar M. Niedermayer
Internet-Draft D. Rice Internet-Draft D. Rice
Intended status: Informational J. Martinez Intended status: Informational J. Martinez
Expires: 12 April 2020 10 October 2019 Expires: 25 April 2020 23 October 2019
FFV1 Video Coding Format Version 0, 1, and 3 FFV1 Video Coding Format Version 0, 1, and 3
draft-ietf-cellar-ffv1-10 draft-ietf-cellar-ffv1-11
Abstract Abstract
This document defines FFV1, a lossless intra-frame video encoding This document defines FFV1, a lossless intra-frame video encoding
format. FFV1 is designed to efficiently compress video data in a format. FFV1 is designed to efficiently compress video data in a
variety of pixel formats. Compared to uncompressed video, FFV1 variety of pixel formats. Compared to uncompressed video, FFV1
offers storage compression, frame fixity, and self-description, which offers storage compression, frame fixity, and self-description, which
makes FFV1 useful as a preservation or intermediate video format. makes FFV1 useful as a preservation or intermediate video format.
Status of This Memo Status of This Memo
skipping to change at page 1, line 34 skipping to change at page 1, line 34
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 12 April 2020. This Internet-Draft will expire on 25 April 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 41, line 19 skipping to change at page 41, line 19
4.6.2. plane_pixel_height 4.6.2. plane_pixel_height
"plane_pixel_height[ p ]" is the height in pixels of plane p of the "plane_pixel_height[ p ]" is the height in pixels of plane p of the
slice. slice.
"plane_pixel_height[ 0 ]" and "plane_pixel_height[ 1 + ( "plane_pixel_height[ 0 ]" and "plane_pixel_height[ 1 + (
chroma_planes ? 2 : 0 ) ]" value is "slice_pixel_height". chroma_planes ? 2 : 0 ) ]" value is "slice_pixel_height".
If "chroma_planes" is set to 1, "plane_pixel_height[ 1 ]" and If "chroma_planes" is set to 1, "plane_pixel_height[ 1 ]" and
"plane_pixel_height[ 2 ]" value is "ceil( slice_pixel_height / "plane_pixel_height[ 2 ]" value is "ceil( slice_pixel_height / (1 <<
log2_v_chroma_subsample )". log2_v_chroma_subsample) )".
4.6.3. slice_pixel_height 4.6.3. slice_pixel_height
"slice_pixel_height" is the height in pixels of the slice. "slice_pixel_height" is the height in pixels of the slice.
Its value is "floor( ( slice_y + slice_height ) * slice_pixel_height Its value is "floor( ( slice_y + slice_height ) * slice_pixel_height
/ num_v_slices ) - slice_pixel_y". / num_v_slices ) - slice_pixel_y".
4.6.4. slice_pixel_y 4.6.4. slice_pixel_y
skipping to change at page 44, line 8 skipping to change at page 44, line 8
Table 17 Table 17
4.8.3. slice_crc_parity 4.8.3. slice_crc_parity
"slice_crc_parity" 32 bits that are chosen so that the slice as a "slice_crc_parity" 32 bits that are chosen so that the slice as a
whole has a crc remainder of 0. whole has a crc remainder of 0.
This is equivalent to storing the crc remainder in the 32-bit parity. This is equivalent to storing the crc remainder in the 32-bit parity.
The CRC generator polynomial used is the standard IEEE CRC polynomial The CRC generator polynomial used is the standard IEEE CRC polynomial
(0x104C11DB7) with initial value 0. (0x104C11DB7), with initial value 0, without pre-inversion and
without post-inversion.
4.9. Quantization Table Set 4.9. Quantization Table Set
The Quantization Table Sets are stored by storing the number of equal The Quantization Table Sets are stored by storing the number of equal
entries -1 of the first half of the table (represented as "len - 1" entries -1 of the first half of the table (represented as "len - 1"
in the pseudo-code below) using the method described in Range Non in the pseudo-code below) using the method described in Range Non
Binary Values (#range-non-binary-values). The second half doesn't Binary Values (#range-non-binary-values). The second half doesn't
need to be stored as it is identical to the first with flipped sign. need to be stored as it is identical to the first with flipped sign.
"scale" and "len_count[ i ][ j ]" are temporary values used for the "scale" and "len_count[ i ][ j ]" are temporary values used for the
computing of "context_count[ i ]" and are not used outside computing of "context_count[ i ]" and are not used outside
skipping to change at page 49, line 23 skipping to change at page 49, line 23
10. Changelog 10. Changelog
See https://github.com/FFmpeg/FFV1/commits/master See https://github.com/FFmpeg/FFV1/commits/master
(https://github.com/FFmpeg/FFV1/commits/master) (https://github.com/FFmpeg/FFV1/commits/master)
11. Normative References 11. Normative References
[I-D.ietf-cellar-ffv1] [I-D.ietf-cellar-ffv1]
Niedermayer, M., Rice, D., and J. Martinez, "FFV1 Video Niedermayer, M., Rice, D., and J. Martinez, "FFV1 Video
Coding Format Version 0, 1, and 3", Internet-Draft, draft- Coding Format Version 0, 1, and 3", Work in Progress,
ietf-cellar-ffv1-09, 6 September 2019, Internet-Draft, draft-ietf-cellar-ffv1-09, 6 September
2019,
<https://tools.ietf.org/html/draft-ietf-cellar-ffv1-09>. <https://tools.ietf.org/html/draft-ietf-cellar-ffv1-09>.
[ISO.15444-1.2016] [ISO.15444-1.2016]
International Organization for Standardization, International Organization for Standardization,
"Information technology -- JPEG 2000 image coding system: "Information technology -- JPEG 2000 image coding system:
Core coding system", October 2016. Core coding system", October 2016.
[ISO.9899.1990] [ISO.9899.1990]
International Organization for Standardization, International Organization for Standardization,
"Programming languages - C", 1990. "Programming languages - C", 1990.
skipping to change at page 50, line 21 skipping to change at page 50, line 23
[Address-Sanitizer] [Address-Sanitizer]
The Clang Team, "ASAN AddressSanitizer website", undated, The Clang Team, "ASAN AddressSanitizer website", undated,
<https://clang.llvm.org/docs/AddressSanitizer.html>. <https://clang.llvm.org/docs/AddressSanitizer.html>.
[AVI] Microsoft, "AVI RIFF File Reference", undated, [AVI] Microsoft, "AVI RIFF File Reference", undated,
<https://msdn.microsoft.com/en-us/library/windows/desktop/ <https://msdn.microsoft.com/en-us/library/windows/desktop/
dd318189%28v=vs.85%29.aspx>. dd318189%28v=vs.85%29.aspx>.
[FFV1_V0] Niedermayer, M., "Commit to mark FFV1 version 0 as non- [FFV1_V0] Niedermayer, M., "Commit to mark FFV1 version 0 as non-
experimental", April 2006, experimental", April 2006, <https://git.videolan.org/?p=ff
<https://git.videolan.org/?p=ffmpeg.git;a=commit;h=b548f2b mpeg.git;a=commit;h=b548f2b91b701e1235608ac882ea6df915167c
91b701e1235608ac882ea6df915167c7e>. 7e>.
[FFV1_V1] Niedermayer, M., "Commit to release FFV1 version 1", April [FFV1_V1] Niedermayer, M., "Commit to release FFV1 version 1", April
2009, 2009, <https://git.videolan.org/?p=ffmpeg.git;a=commit;h=6
<https://git.videolan.org/?p=ffmpeg.git;a=commit;h=68f8d33 8f8d33becbd73b4d0aa277f472a6e8e72ea6849>.
becbd73b4d0aa277f472a6e8e72ea6849>.
[FFV1_V3] Niedermayer, M., "Commit to mark FFV1 version 3 as non- [FFV1_V3] Niedermayer, M., "Commit to mark FFV1 version 3 as non-
experimental", August 2013, experimental", August 2013, <https://git.videolan.org/?p=f
<https://git.videolan.org/?p=ffmpeg.git;a=commit;h=abe76b8 fmpeg.git;a=commit;h=abe76b851c05eea8743f6c899cbe5f7409b0f
51c05eea8743f6c899cbe5f7409b0f301>. 301>.
[HuffYUV] Rudiak-Gould, B., "HuffYUV", December 2003, [HuffYUV] Rudiak-Gould, B., "HuffYUV", December 2003,
<https://web.archive.org/web/20040402121343/ <https://web.archive.org/web/20040402121343/
http://cultact-server.novi.dk/kpo/huffyuv/huffyuv.html>. http://cultact-server.novi.dk/kpo/huffyuv/huffyuv.html>.
[ISO.14495-1.1999] [ISO.14495-1.1999]
International Organization for Standardization, International Organization for Standardization,
"Information technology -- Lossless and near-lossless "Information technology -- Lossless and near-lossless
compression of continuous-tone still images: Baseline", compression of continuous-tone still images: Baseline",
December 1999. December 1999.
skipping to change at page 51, line 7 skipping to change at page 51, line 10
[ISO.14496-10.2014] [ISO.14496-10.2014]
International Organization for Standardization, International Organization for Standardization,
"Information technology -- Coding of audio-visual objects "Information technology -- Coding of audio-visual objects
-- Part 10: Advanced Video Coding", September 2014. -- Part 10: Advanced Video Coding", September 2014.
[ISO.14496-12.2015] [ISO.14496-12.2015]
International Organization for Standardization, International Organization for Standardization,
"Information technology -- Coding of audio-visual objects "Information technology -- Coding of audio-visual objects
-- Part 12: ISO base media file format", December 2015. -- Part 12: ISO base media file format", December 2015.
[Matroska] IETF, "Matroska", 2016, [Matroska] IETF, "Matroska", 2016, <https://datatracker.ietf.org/doc/
<https://datatracker.ietf.org/doc/draft-lhomme-cellar- draft-lhomme-cellar-matroska/>.
matroska/>.
[NUT] Niedermayer, M., "NUT Open Container Format", December [NUT] Niedermayer, M., "NUT Open Container Format", December
2013, <https://ffmpeg.org/~michael/nut.txt>. 2013, <https://ffmpeg.org/~michael/nut.txt>.
[range-coding] [range-coding]
Nigel, G. and N. Martin, "Range encoding: an algorithm for Nigel, G. and N. Martin, "Range encoding: an algorithm for
removing redundancy from a digitised message.", July 1979. removing redundancy from a digitised message.", July 1979.
[REFIMPL] Niedermayer, M., "The reference FFV1 implementation / the [REFIMPL] Niedermayer, M., "The reference FFV1 implementation / the
FFV1 codec in FFmpeg", undated, <https://ffmpeg.org>. FFV1 codec in FFmpeg", undated, <https://ffmpeg.org>.
 End of changes. 10 change blocks. 
20 lines changed or deleted 20 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/