draft-ietf-cellar-ffv1-v4-07.txt   draft-ietf-cellar-ffv1-v4-08.txt 
cellar M. Niedermayer cellar M. Niedermayer
Internet-Draft D. Rice Internet-Draft D. Rice
Intended status: Standards Track J. Martinez Intended status: Standards Track J. Martinez
Expires: 12 April 2020 10 October 2019 Expires: 25 April 2020 23 October 2019
FFV1 Video Coding Format Version 4 FFV1 Video Coding Format Version 4
draft-ietf-cellar-ffv1-v4-07 draft-ietf-cellar-ffv1-v4-08
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 42, line 37 skipping to change at page 42, line 37
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 45, line 27 skipping to change at page 45, line 27
Table 19 Table 19
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 50, line 44 skipping to change at page 50, line 44
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 52, line 15 skipping to change at page 52, line 15
[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. 7 change blocks. 
11 lines changed or deleted 12 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/