·
2 commits
to develop
since this release
- [ADD]
SampleEntryから RFC 6381 および各コーデック binding のcodecsパラメーター文字列を生成する API (codec_string::from_sample_entry) を追加する- H.264 / H.265 / AV1 / VP8 / VP9 / AAC は設定ボックスの構造化フィールドから必須形を生成し、Opus / FLAC / 字幕系は登録済み sample entry 4CC を返す
- 未知の
SampleEntryと AAC の情報欠落はエラーとし、欠落情報を仮定して補完しない - @sile
- [ADD] VP8 ビットストリーム処理ユーティリティ (
bitstream::vp8) を追加する - [ADD] VP9 ビットストリーム処理ユーティリティ (
bitstream::vp9) を追加する - [ADD] H.264 ビットストリーム処理ユーティリティ (
bitstream::h264) を追加する- Annex B / length-prefixed の NAL ユニット列の解析と相互変換、SPS 解析、SPS / PPS 抽出、
avc1/avcCの構築を提供する - @sile
- Annex B / length-prefixed の NAL ユニット列の解析と相互変換、SPS 解析、SPS / PPS 抽出、
- [ADD]
LengthSizeにlengthSizeMinusOneから検証付きで変換するfrom_length_size_minus_oneを追加する- 0 / 1 / 3 を対応する
LengthSizeへ変換し、予約値 2 と範囲外の値はcrate::Error(ErrorKind::InvalidInput) として拒否する - @sile
- 0 / 1 / 3 を対応する
- [ADD] H.265 ビットストリーム処理ユーティリティ (
bitstream::h265) を追加する- Annex B / length-prefixed の NAL ユニット列の解析と相互変換、SPS 解析、VPS / SPS / PPS 抽出、
hev1/hvc1/hvcCの構築を提供する H265SampleEntryConfigからavgFrameRate(256 秒あたりのフレーム数) とconstantFrameRateの状態 (H265ConstantFrameRate) を指定できる- @sile
- Annex B / length-prefixed の NAL ユニット列の解析と相互変換、SPS 解析、VPS / SPS / PPS 抽出、
- [ADD] AV1 ビットストリーム処理ユーティリティ (
bitstream::av1) を追加する - [ADD]
bitstream::av1のAv1SequenceHeaderに operating point 情報を公開し、chroma_sample_positionの予約値を拒否するoperating_points_cnt_minus_1/operating_point_idc_0を公開する(reduced_still_picture_header == 1のときは暗黙値)chroma_sample_position == 3(CSP_RESERVED) をcrate::Errorで拒否する- @sile
- [ADD]
bitstream::av1にconfigOBUsからAv01Boxを構築する API を追加するbuild_av01_box_from_config_obusは OBU 列挙・Sequence Header 抽出・解析・既存build_av01_boxの呼び出しを 1 回で行う- 空入力、Sequence Header がない、先頭以外にある、複数ある入力を
crate::Errorで拒否する - @sile
- [ADD] AAC ビットストリーム処理ユーティリティ (
bitstream::aac) を追加する- AAC-LC の AudioSpecificConfig の解析・正規形エンコード、ADTS フレームの解析と raw AAC の相互変換、
Mp4aBoxの構築を提供する - AOT 2 以外、GASpecificConfig 必須 3 フラグの非ゼロ、後続の SBR/PS 拡張、ADTS の複数 raw data block は
crate::Errorとして拒否する - @sile
- AAC-LC の AudioSpecificConfig の解析・正規形エンコード、ADTS フレームの解析と raw AAC の相互変換、
- [ADD] Opus ビットストリーム処理ユーティリティ (
bitstream::opus) を追加する- codec private 相当の各フィールドを
OpusSampleEntryConfigで指定してOpusBoxを構築する API を提供する - チャンネル数は
ChannelCountenum (Mono/Stereo) で表し、ChannelMappingFamily = 0の mono / stereo のみを表現する - @sile
- codec private 相当の各フィールドを
- [ADD] H.264 の profile-level-id を扱う API を追加する
- 3 バイトを保持する
H264ProfileLevelIdに、6 桁の RFC 4648 base16 をデコードするfrom_hexと、6 桁の小文字 hex へ変換するto_hexを追加する H264Spsの先頭 3 バイトもH264ProfileLevelIdとして保持する(AvccBoxは従来どおり)- profile / level の意味検証や正規化は行わず、利用側が生の 3 バイトに対して必要な判定を行う
- @sile
- 3 バイトを保持する
- [FIX]
UnknownBoxのデコードでトップレベル以外の可変長ボックスを拒否する- コンテナボックス内部の未知ボックスループが末尾のゼロ埋めを 1 個の
UnknownBoxとして誤認識するのを防ぐ - トップレベルの未知ボックス(
RootBox経由)は従来どおり可変長ボックスを受理する - @sile
- コンテナボックス内部の未知ボックスループが末尾のゼロ埋めを 1 個の
- [FIX]
ErrorのDisplay出力からビルド環境依存の絶対パスを除去するcore::panic::Location::file()が返すパスから最後方のsrc/以降だけを残して表示する- @sile
- [FIX]
StszBox::FixedでSampleTableAccessor::newがサンプル数に比例するメモリを確保しないようにするdata_offset()を算術で算出し、newはオーバーフロー検出のみ行う- 従来はわずか数バイトの
stszから最大約 34 GB の確保に到達できた - @sile
- [FIX]
SampleTableAccessor::newがStszBox::Fixedのsample_countをstts合計と突き合わせるようにするVariableと同様に不一致ならInconsistentSampleCountを返す- これまで
Fixedでは食い違っていても素通りしていた - @sile