- BREAKING CHANGE:
sps::ScalingMatrixandpps::ScalingMatrixnow storenext_scaleintermediate values ([u8; S]) instead of final computed scaling values ([NonZeroU8; S]). In the new representation, a0at positionjmeans the list was frozen at that position (all positions fromjonward are also0). This is a more bitstream-faithful representation: it preserves the freeze point, enabling the encoder to reproduce the originaldelta_scalesequence exactly. - BREAKING CHANGE: Updated
bitstream-iodependency from 2.2 to 4.9 and alteredrbsp::BitReadtrait to match its conventions. - BREAKING CHANGE:
Profile::from_profile_idc()now acceptsConstraintFlagsto distinguish constrained/intra profile variants. AddProfileenum variants:ConstrainedBaseline,ProgressiveHigh,ConstrainedHigh,High10Intra,High422Intra,High444Intra,ScalableConstrainedBaseline,ScalableConstrainedHigh,ScalableHighIntra. - BREAKING CHANGE:
SliceHeader::from_bits()now takes an additionalheader_extension: Option<&NalHeaderExtension>parameter. PassNonefor standard AVC NAL types (1/5). For MVC NAL types (20/21), pass the parsed extension to enable correctidr_pic_flagderivation and MVC ref pic list modification parsing. - Update minimum supported Rust version from 1.81 to 1.83.
- Derive
CloneandCopyforSliceFamily. - Add scaling list helper methods that convert stored
next_scaleintermediates into finalScalingListvalues:SeqScalingMatrix::scaling_lists_4x4()/scaling_lists_8x8()ChromaInfo::scaling_lists_4x4()/scaling_lists_8x8()PicScalingMatrix::scaling_lists_4x4(&ChromaInfo)/scaling_lists_8x8(&ChromaInfo)ScalingLists8x8Resolvedenum for resolved 8x8 lists.
- Added support for
luma_weights_l1andchroma_weights_l1toPredWeightTable. - Give
has_chroma_info()newer profile_idc values 118, 128, 134, 135, 138, 139, implementing SPS parse support for Multiview High, Stereo High, and related profiles. - Add
Profile::CavlcIntra444(profile_idc 44) andProfile::MFCHigh(profile_idc 134) enum variants. - Parse AvcC extension fields (
chroma_format,bit_depth_luma_minus8,bit_depth_chroma_minus8, SPS extension NAL units) for High profile and above. - Add
slice_group_change_cycle,slice_alpha_c0_offset_div2andslice_beta_offset_div2 toSliceHeader` - Parse
access_unit_delimiter_rbsp()(NAL type 9) via newaud::AccessUnitDelimiter. - Parse
seq_parameter_set_extension_rbsp()(NAL type 13) via newsps_extension::SeqParameterSetExtension. - Parse
subset_seq_parameter_set_rbsp()(NAL type 15) via newsubset_sps::SubsetSps, including SVC extension (profiles 83/86) and MVC extension (profiles 118/128/134). - Add
Context::put_subset_seq_param_set(),Context::subset_sps_by_id(), andContext::subset_sps()for managing subset SPS state. - Add
ChromaInfo::chroma_array_type()helper. - Added support for
user_data_unregistered()SEI syntax - Added support for
recovery_point()SEI syntax (payloadType 6). - Parse
prefix_nal_unit_rbsp()(NAL type 14) via newprefix::PrefixNalUnit, including SVCprefix_nal_unit_svc()body and MVC (empty body). - Add
NalHeaderExtension,NalHeaderMvcExtension,NalHeaderSvcExtensiontypes andparse_nal_header_extension()for parsing the 3-byte NAL unit header extension used by NAL types 14, 20, and 21. - Parse MVC slice headers (NAL types 20/21) including
ref_pic_list_mvc_modification()withmodification_of_pic_nums_idcvalues 4 and 5. AddModificationOfPicNums::SubtractViewIdxandAddViewIdxvariants. - RBSP writing—
BitWriteandBitWriterto encode RBSP streams,ByteWriterto add emulation prevention bytes. - Write
SeqParameterSetto an RBSP stream. - A new
PpsError::InvalidPicSizeInMapUnitsMinus1variant
- Fix
Profile::High444.profile_idc()returning 144 instead of the correct value 244. - Fix
PicTiming::read_delaysfalling back tonal_hrd_parametersinstead ofvcl_hrd_parameters. - Fix
pred_weight_tablebeing parsed for SP slices regardless ofweighted_pred_flag. - Fix
ByteReaderskipping emulation prevention byte removal for bytes beyondmax_fillin a chunk. - Fix off-by-one error in
SliceGroup::read_rectangles() - Fix
slice_qp_deltavalidation to check the derivedSliceQPYagainst[-QpBdOffsetY, 51]per spec, instead of only checkingslice_qp_delta > 51. - Will now produce an error when parsing
max_dec_frame_bufferingvalues that are invalid at the given profile level - Fix missing check that the PPS
pic_size_in_map_units_minus1is within bounds
- BREAKING CHANGE: The
ParamSetIdtype has been removed and replaced with separatePicParamSetIdandSeqParamSetIdtypes, since the allowed range of values needs to be different in these two usages. - BREAKING CHANGE: The
rbsp::ByteReader::newconstructor has been removed in favor of more explicitByteReader::skipping_h264_header, alongside the newByteReader::without_skipandByteReader::skipping_bytesthat are suitable for other situations or parsing H.265 streams with two-byte NAL headers. - BREAKING CHANGE: the
rbsp::BitReaderError::ReadErrorhas been removed; methods consistently return the variantrbsp::BitReaderError::ReadErrorForwhich additionally supplies the field name. - BREAKING CHANGE: some methods in
rbsp::BitReadhave been renamed to match thebitstream-ioconventions. - BREAKING CHANGE: updated
rfc6381-codecversion from 0.1 to 0.2.
- Make some fields of
SliceTypepublic. - Parsing of scaling lists.
- Fix parsing of
delta_pic_order_cntfields inSliceHeader. - Fix parsing of
slice_group_idfields inSliceGroup(#57). - Fix overflow on
SliceHeader.qs_ycalculation by adding bounds checks onpps.pic_init_qs_minus26.
- Make
PicOrderCountLsb::FieldsAbsolutefield names mirror the spec, rather than doing some calculations during parsing.
- Fixed incorrect size calculation for
PicScalingMatrixcausing parsing errors for streams havingpic_scaling_matrix_present_flag=1andtransform_8x8_mode_flag=1in the PPS.
- Make some
SliceHeaderfields public.
- BREAKING CHANGE: major simplification of the push API.
- Annex B parser bugfixes.
- BREAKING CHANGE: changes to error enums; switched several
h264_reader::rbsp::RbspBitReadermethods to returnRbspBitReaderErrorrather thanbitreader::BitReaderError. - bug fixes, mostly found by fuzzing.
- API additions:
h264_reader::rbsp::decode_nal.h264_reader::nal::sps::SeqParameterSet::rfc6381h264_reader::nal::sps::SeqParameterSet::pixel_dimensions- exposed fields in
h264_reader::nal::sps::TimingInfo - exposed inner u8 value of
h264_reader::nal::sps::ConstraintFlags
- removed
read_ueandread_sefromh264_reader::rbsp::RbspBitReader, in favor of_namedvariants.
...