diff --git a/Cargo.lock b/Cargo.lock index 16d7645..4b12fff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,6 +24,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aho-corasick" version = "1.1.3" @@ -84,9 +90,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" [[package]] name = "assert_cmd" @@ -139,9 +145,9 @@ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitstream-io" -version = "2.5.0" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499" +checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452" [[package]] name = "bitvec" @@ -157,9 +163,9 @@ dependencies = [ [[package]] name = "bitvec_helpers" -version = "3.1.5" +version = "3.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6539ed4bcd1be8442a26b154a1e363cbcb1410b9c275646d6f6ca532fd142f" +checksum = "d9a6aff977a34114f146bd3379c9d170a8eafcffcdeecbb7cc3bd2470a39709a" dependencies = [ "bitstream-io", ] @@ -183,9 +189,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" [[package]] name = "byteorder" @@ -195,9 +201,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.1.13" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "shlex", ] @@ -210,9 +216,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.16" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -220,9 +226,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -240,7 +246,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.74", + "syn", ] [[package]] @@ -375,16 +381,6 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" -[[package]] -name = "cstr" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68523903c8ae5aacfa32a0d9ae60cadeb764e1da14ee0d26b1f3089f13a54636" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "darling" version = "0.20.10" @@ -406,7 +402,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.74", + "syn", ] [[package]] @@ -417,7 +413,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.74", + "syn", ] [[package]] @@ -431,33 +427,33 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" +checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" +checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.74", + "syn", ] [[package]] name = "derive_builder_macro" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" +checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" dependencies = [ "derive_builder_core", - "syn 2.0.74", + "syn", ] [[package]] @@ -467,24 +463,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] -name = "dirs-next" -version = "2.0.0" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "cfg-if", - "dirs-sys-next", + "dirs-sys", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -542,9 +538,9 @@ dependencies = [ [[package]] name = "dwrote" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +checksum = "2da3498378ed373237bdef1eddcc64e7be2d3ba4841f4c22a998e81cadeea83c" dependencies = [ "lazy_static", "libc", @@ -582,9 +578,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -597,12 +593,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -628,16 +624,16 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "font-kit" -version = "0.13.2" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2845a73bbd781e691ab7c2a028c579727cd254942e8ced57ff73e0eafd60de87" +checksum = "b64b34f4efd515f905952d91bc185039863705592c0c53ae6d979805dd154520" dependencies = [ "bitflags 2.6.0", "byteorder", "core-foundation", "core-graphics", "core-text", - "dirs-next", + "dirs", "dwrote", "float-ord", "freetype-sys", @@ -669,7 +665,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn", ] [[package]] @@ -708,21 +704,21 @@ dependencies = [ [[package]] name = "getset" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" +checksum = "f636605b743120a8d32ed92fc27b6cde1a769f8f936c065151eb66f88ded513c" dependencies = [ - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -750,9 +746,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hdr10plus" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e718ae1e1005fbe2ddc52c77cbd7b0a732e644d5f3d0cf7fbda2d0dda6f935" +checksum = "309e1e59f7c103e4fcae85bf15ebc59923d4a4f1a2e68ebee525e44c9ff4f4e4" dependencies = [ "anyhow", "bitvec_helpers", @@ -768,9 +764,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hevc_parser" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea78e2d4f20e95b4e65a5ea6f315b62b981388abd20b4a0249f5e043473be4b" +checksum = "72930110fcf33e323721aefb8effbe172dc02a669a32657b8bbf9da948b87cf5" dependencies = [ "anyhow", "bitvec_helpers", @@ -786,9 +782,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", @@ -816,9 +812,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", @@ -890,9 +886,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.156" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" @@ -958,6 +954,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "nom" version = "7.1.3" @@ -1006,9 +1011,15 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" + +[[package]] +name = "option-ext" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "owned_ttf_parser" @@ -1046,9 +1057,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "ab_glyph", "font-kit", @@ -1065,15 +1076,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-bitmap" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e7f6fb8302456d7c264a94dada86f76d76e1a03e2294ee86ca7da92983b0a6" +checksum = "72ce181e3f6bf82d6c1dc569103ca7b1bd964c60ba03d7e6cdfbb3e3eb7f7405" dependencies = [ "image", "plotters-backend", @@ -1089,7 +1100,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.7.4", ] [[package]] @@ -1135,27 +1146,25 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn", ] [[package]] @@ -1169,9 +1178,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1184,9 +1193,9 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -1230,18 +1239,18 @@ checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -1279,29 +1288,29 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn", ] [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "indexmap", "itoa", @@ -1330,20 +1339,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.74" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -1402,7 +1400,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn", ] [[package]] @@ -1461,9 +1459,9 @@ checksum = "5be21190ff5d38e8b4a2d3b6a3ae57f612cc39c96e83cedeaf7abc338a8bac4a" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-width" @@ -1516,12 +1514,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "wait-timeout" version = "0.2.0" @@ -1569,7 +1561,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn", "wasm-bindgen-shared", ] @@ -1591,7 +1583,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1811,11 +1803,10 @@ dependencies = [ [[package]] name = "yeslogic-fontconfig-sys" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb6b23999a8b1a997bf47c7bb4d19ad4029c3327bb3386ebe0a5ff584b33c7a" +checksum = "503a066b4c037c440169d995b869046827dbc71263f6e8f3be6d77d4f3229dbd" dependencies = [ - "cstr", "dlib", "once_cell", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index a4fa6d1..13bdfc6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,20 +14,20 @@ path = "src/main.rs" [dependencies] dolby_vision = { path = "dolby_vision", "features" = ["xml", "serde"] } -bitvec_helpers = { version = "3.1.5", default-features = false, features = ["bitstream-io"] } -hevc_parser = { version = "0.6.3", features = ["hevc_io"] } +bitvec_helpers = { version = "3.1.6", default-features = false, features = ["bitstream-io"] } +hevc_parser = { version = "0.6.4", features = ["hevc_io"] } madvr_parse = "1.0.2" -hdr10plus = { version = "2.1.1", features = ["json"] } +hdr10plus = { version = "2.1.3", features = ["json"] } -anyhow = "1.0.86" -clap = { version = "4.5.16", features = ["derive", "wrap_help", "deprecated"] } +anyhow = "1.0.88" +clap = { version = "4.5.17", features = ["derive", "wrap_help", "deprecated"] } clap_lex = "*" indicatif = "0.17.8" bitvec = "1.0.1" -serde = { version = "1.0.208", features = ["derive"] } -serde_json = { version = "1.0.125", features = ["preserve_order"] } +serde = { version = "1.0.210", features = ["derive"] } +serde_json = { version = "1.0.128", features = ["preserve_order"] } itertools = "0.13.0" -plotters = { version = "0.3.6", default-features = false, features = ["bitmap_backend", "bitmap_encoder", "all_series"] } +plotters = { version = "0.3.7", default-features = false, features = ["bitmap_backend", "bitmap_encoder", "all_series"] } [dev-dependencies] assert_cmd = "2.0.16" @@ -35,7 +35,7 @@ assert_fs = "1.1.2" predicates = "3.1.2" [build-dependencies] -anyhow = "1.0.86" +anyhow = "1.0.88" vergen-gitcl = { version = "1.0.0", default-features = false, features = ["build"] } [features] diff --git a/README.md b/README.md index 675da19..2978952 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,9 @@ For working with an HEVC source file, there are multiple options that apply to m **Supports profiles 4, 5, 7, and 8**. + **Flags**: + - `-l`, `--limit` Number of frames to process from the input. Processing stops after N frames. + **Examples**: ```console dovi_tool extract-rpu video.hevc diff --git a/dolby_vision/Cargo.lock b/dolby_vision/Cargo.lock index 9e7b624..d82acb8 100644 --- a/dolby_vision/Cargo.lock +++ b/dolby_vision/Cargo.lock @@ -25,9 +25,9 @@ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" [[package]] name = "autocfg" @@ -37,9 +37,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitstream-io" -version = "2.5.0" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499" +checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452" [[package]] name = "bitvec" @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "bitvec_helpers" -version = "3.1.5" +version = "3.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6539ed4bcd1be8442a26b154a1e363cbcb1410b9c275646d6f6ca532fd142f" +checksum = "d9a6aff977a34114f146bd3379c9d170a8eafcffcdeecbb7cc3bd2470a39709a" dependencies = [ "bitstream-io", ] @@ -109,18 +109,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstyle", "clap_lex", @@ -272,9 +272,9 @@ checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "indexmap" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", @@ -317,9 +317,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.156" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "log" @@ -344,9 +344,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" [[package]] name = "oorandom" @@ -356,9 +356,9 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -369,15 +369,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -393,9 +393,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -478,18 +478,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", @@ -498,9 +498,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "indexmap", "itoa", @@ -511,9 +511,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -547,9 +547,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "walkdir" diff --git a/dolby_vision/Cargo.toml b/dolby_vision/Cargo.toml index ecbb1dc..cbc98ff 100644 --- a/dolby_vision/Cargo.toml +++ b/dolby_vision/Cargo.toml @@ -9,13 +9,13 @@ description = "Dolby Vision metadata parsing and writing" repository = "https://github.com/quietvoid/dovi_tool/tree/main/dolby_vision" [dependencies] -bitvec_helpers = { version = "3.1.5", default-features = false, features = ["bitstream-io"] } -anyhow = "1.0.86" +bitvec_helpers = { version = "3.1.6", default-features = false, features = ["bitstream-io"] } +anyhow = "1.0.88" bitvec = "1.0.1" crc = "3.2.1" roxmltree = { version = "0.20.0", optional = true } -serde = { version = "1.0.208", features = ["derive"], "optional" = true } -serde_json = { version = "1.0.125", features = ["preserve_order"], "optional" = true } +serde = { version = "1.0.210", features = ["derive"], "optional" = true } +serde_json = { version = "1.0.128", features = ["preserve_order"], "optional" = true } tinyvec = { version = "1.8.0", features = ["rustc_1_55"] } libc = { version = "0.2", optional = true } diff --git a/src/commands/extract_rpu.rs b/src/commands/extract_rpu.rs index 804b00b..793a0f3 100644 --- a/src/commands/extract_rpu.rs +++ b/src/commands/extract_rpu.rs @@ -30,4 +30,12 @@ pub struct ExtractRpuArgs { value_hint = ValueHint::FilePath )] pub rpu_out: Option, + + #[arg( + id = "limit", + long, + short = 'l', + help = "Stop processing input after N frames" + )] + pub limit: Option, } diff --git a/src/dovi/converter.rs b/src/dovi/converter.rs index 61255b0..901a7a7 100644 --- a/src/dovi/converter.rs +++ b/src/dovi/converter.rs @@ -59,7 +59,13 @@ impl Converter { fn convert_raw_hevc(&self, pb: ProgressBar, options: CliOptions) -> Result<()> { let dovi_writer = DoviWriter::new(None, None, None, Some(&self.output)); - let mut dovi_processor = DoviProcessor::new(options, self.input.clone(), dovi_writer, pb); + let mut dovi_processor = DoviProcessor::new( + options, + self.input.clone(), + dovi_writer, + pb, + Default::default(), + ); dovi_processor.read_write_from_io(&self.format) } diff --git a/src/dovi/demuxer.rs b/src/dovi/demuxer.rs index 540a32a..18d1107 100644 --- a/src/dovi/demuxer.rs +++ b/src/dovi/demuxer.rs @@ -70,7 +70,13 @@ impl Demuxer { }; let dovi_writer = DoviWriter::new(bl_out, Some(self.el_out.as_path()), None, None); - let mut dovi_processor = DoviProcessor::new(options, self.input.clone(), dovi_writer, pb); + let mut dovi_processor = DoviProcessor::new( + options, + self.input.clone(), + dovi_writer, + pb, + Default::default(), + ); dovi_processor.read_write_from_io(&self.format) } diff --git a/src/dovi/general_read_write.rs b/src/dovi/general_read_write.rs index ff69a57..27adbb5 100644 --- a/src/dovi/general_read_write.rs +++ b/src/dovi/general_read_write.rs @@ -24,6 +24,8 @@ pub struct DoviProcessor { progress_bar: ProgressBar, dovi_writer: DoviWriter, + + processor_opts: DoviProcessorOptions, } pub struct DoviWriter { @@ -40,6 +42,11 @@ pub struct RpuNal { data: Vec, } +#[derive(Default)] +pub struct DoviProcessorOptions { + pub limit: Option, +} + impl DoviWriter { pub fn new>( bl_out: Option

, @@ -91,6 +98,7 @@ impl DoviProcessor { input: PathBuf, dovi_writer: DoviWriter, progress_bar: ProgressBar, + processor_opts: DoviProcessorOptions, ) -> DoviProcessor { DoviProcessor { input, @@ -101,6 +109,7 @@ impl DoviProcessor { previous_rpu_index: 0, progress_bar, dovi_writer, + processor_opts, } } @@ -109,6 +118,7 @@ impl DoviProcessor { let processor_opts = HevcProcessorOpts { parse_nals: true, + limit: self.processor_opts.limit, ..Default::default() }; let mut processor = HevcProcessor::new(format.clone(), processor_opts, chunk_size); diff --git a/src/dovi/muxer.rs b/src/dovi/muxer.rs index 67d979c..7877c58 100644 --- a/src/dovi/muxer.rs +++ b/src/dovi/muxer.rs @@ -38,7 +38,7 @@ pub struct Muxer { pub struct ElHandler { input: PathBuf, writer: BufWriter, - buffers: VecDeque, + buffered_frames: VecDeque, options: CliOptions, } @@ -92,7 +92,7 @@ impl Muxer { let el_handler = ElHandler { input: el, writer, - buffers: VecDeque::new(), + buffered_frames: VecDeque::new(), options: cli_options.clone(), }; @@ -207,13 +207,13 @@ impl IoProcessor for Muxer { self.write_bl_frame()?; // Process EL, read if possibly incomplete frame - if self.el_handler.buffers.len() < 2 { + if self.el_handler.buffered_frames.len() < 2 { self.el_processor .parse_nalus(&mut self.el_reader, &mut self.el_handler)?; } // Write EL frame if complete - if self.el_handler.buffers.len() > 1 { + if self.el_handler.buffered_frames.len() > 1 { self.el_handler.write_next_frame()?; } @@ -283,14 +283,14 @@ impl IoProcessor for Muxer { // Write last BL frame self.write_bl_frame()?; - if self.el_handler.buffers.len() == 1 { + if self.el_handler.buffered_frames.len() == 1 { // Maybe incomplete last frame self.el_processor .parse_nalus(&mut self.el_reader, &mut self.el_handler)?; // Write last EL frame self.el_handler.write_next_frame()?; - } else if let Some(last_frame) = self.el_handler.buffers.back() { + } else if let Some(last_frame) = self.el_handler.buffered_frames.back() { // Zero indexed bail!( "Mismatched BL/EL frame count. Expected {} frames, got {} (or more) frames in EL", @@ -354,7 +354,7 @@ impl IoProcessor for ElHandler { // Existing incomplete frame let existing_frame = self - .buffers + .buffered_frames .iter_mut() .find(|fb| fb.frame_number == frame_number); @@ -366,7 +366,7 @@ impl IoProcessor for ElHandler { nals: nal_buffers.collect(), }; - self.buffers.push_back(frame_buffer); + self.buffered_frames.push_back(frame_buffer); } } @@ -439,7 +439,7 @@ impl Muxer { impl ElHandler { fn write_next_frame(&mut self) -> Result<()> { - if let Some(frame_buffer) = self.buffers.pop_front() { + if let Some(frame_buffer) = self.buffered_frames.pop_front() { for nal_buf in frame_buffer.nals { let nal_type = if nal_buf.nal_type != NAL_UNSPEC62 { NAL_UNSPEC63 diff --git a/src/dovi/remover.rs b/src/dovi/remover.rs index 5211d7c..3e27bae 100644 --- a/src/dovi/remover.rs +++ b/src/dovi/remover.rs @@ -52,7 +52,13 @@ impl Remover { let bl_out = Some(self.output.as_path()); let dovi_writer = DoviWriter::new(bl_out, None, None, None); - let mut dovi_processor = DoviProcessor::new(options, self.input.clone(), dovi_writer, pb); + let mut dovi_processor = DoviProcessor::new( + options, + self.input.clone(), + dovi_writer, + pb, + Default::default(), + ); dovi_processor.read_write_from_io(&self.format) } diff --git a/src/dovi/rpu_extractor.rs b/src/dovi/rpu_extractor.rs index 8490b26..5c54ea2 100644 --- a/src/dovi/rpu_extractor.rs +++ b/src/dovi/rpu_extractor.rs @@ -4,13 +4,17 @@ use std::path::PathBuf; use crate::commands::ExtractRpuArgs; -use super::{general_read_write, input_from_either, CliOptions, IoFormat}; +use super::{ + general_read_write::{self, DoviProcessorOptions}, + input_from_either, CliOptions, IoFormat, +}; use general_read_write::{DoviProcessor, DoviWriter}; pub struct RpuExtractor { format: IoFormat, input: PathBuf, rpu_out: PathBuf, + limit: Option, } impl RpuExtractor { @@ -19,6 +23,7 @@ impl RpuExtractor { input, input_pos, rpu_out, + limit, } = args; let input = input_from_either("extract-rpu", input, input_pos)?; @@ -33,6 +38,7 @@ impl RpuExtractor { format, input, rpu_out, + limit, }) } @@ -52,7 +58,13 @@ impl RpuExtractor { fn extract_rpu_from_el(&self, pb: ProgressBar, options: CliOptions) -> Result<()> { let dovi_writer = DoviWriter::new(None, None, Some(&self.rpu_out), None); - let mut dovi_processor = DoviProcessor::new(options, self.input.clone(), dovi_writer, pb); + let mut dovi_processor = DoviProcessor::new( + options, + self.input.clone(), + dovi_writer, + pb, + DoviProcessorOptions { limit: self.limit }, + ); dovi_processor.read_write_from_io(&self.format) }