Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/ruffle-rs/h263-rs

Pure-rust implementation of legacy H.263 video codec and associated color transforms
https://github.com/ruffle-rs/h263-rs

chore: Fix various stable/beta/nightly Clippy lints

16700664e2b3334f0a930f99af86011aebee14cc authored over 1 year ago
chore: Bump dependencies

5faa069c7dba58b4e1734d867c349ce43c69da90 authored over 1 year ago
deblock: Add a deblocking filter inspired by ITU-T H.263 Annex J

With both a SIMD and a scalar implementation of the inner filter,
using the SIMD implementation ...

195dae6d2a74093453267f6a28e69fad5575bc6c authored over 1 year ago
Export `types::PictureOption`, for the custom `USE_DEBLOCKER` flag

f993c56568206a8efa25fe0757e0965f54a0b7ea authored over 1 year ago
deblock: Add unit tests to the deblocking filter

Mostly for explanation and regression checking purposes.

128cdbd85455d19783c88927bb535e8a26fe5220 authored over 1 year ago
idct: Fix underflow when calculating the size of blocks within frame bounds

d5d78eb251c1ce1f1da57c63db14f0fdc77a4b36 authored almost 2 years ago
build(deps): update bitflags requirement from 1.3.2 to 2.0.0

Updates the requirements on [bitflags](https://github.com/bitflags/bitflags) to permit the lates...

efee5be819c4b40817a4da82f80783320cdd0e32 authored almost 2 years ago
h263: Add Horiz and Vert to DecodedDctBlock, needing only a single 1D IDCT

8c00d0e13892ee349f76eb4f2651cb2b921d3766 authored almost 2 years ago
h263: Add DecodedDctBlock::Dc, for which IDCT is still not needed, only some scaling

65596542b39a9c028a37d682d2f03ea679f2b86e authored almost 2 years ago
h263: Add DecodedDctBlock type to keep track of all-zero blocks and skip IDCT on them

9ac14f0bacd05eb75632334103271eb403e1045e authored almost 2 years ago
misc: Switch to new GHA workflow badge route

See: https://github.com/badges/shields/issues/8671

08feb236d502ad1ca2b07eb4bafa0fc9676bbe57 authored almost 2 years ago
yuv: Drop the br_width parameter of yuv420_to_rgba()

It wasn't a real degree of freedom, its value is fixed for every
value of y_width anyway, as bot...

78d96c0034c519482c8f81e1042c86fc3684f7b3 authored almost 2 years ago
chore: Delete Cargo.lock, as this is a library crate now

d439b3df7590d418e3cf4a3a1ca09bb1dafc80da authored almost 2 years ago
chore: Bump dependencies (wide, bytemuck, num-traits)

936007469fa0c66fea994bcaae0e1a7a8314fb32 authored almost 2 years ago
ci: Clean up test workflow (no need for mesa or image tests)

5481920f911dcce448d26283ff41937e9cadb99d authored almost 2 years ago
ci: Update to actions/checkout@v3, actions-rs/toolchain -> dtolnay/rust-toolchain, drop actions-rs/cargo

d39cea3da547786543543f1c9c933d988364cae3 authored almost 2 years ago
h263: gather_block: Rename x and y to src_x and src_y for clarity

f0083f5933f173798dd308d1678f06d181a99975 authored almost 2 years ago
h263: Optimize gather_block further by adding a fast path doing pure copying (no coordinate clamping)

97afa3b6140635754599e2c77b945ebf78210e6d authored almost 2 years ago
chore: Run cargo update

857b9cb4a80402aa98cc7b7da53382ec83f0a76e authored about 2 years ago
chore: Fix all new clippy lints

d6517b737b0a11892e0048f7f9e781d9941688aa authored about 2 years ago
build(deps): bump wide from 0.7.3 to 0.7.4

Bumps [wide](https://github.com/Lokathor/wide) from 0.7.3 to 0.7.4.
- [Release notes](https://gi...

b665e6ce39390377424b2da28861206cd38d80a8 authored almost 3 years ago
idct: Swap 1D loops so it autovectorizes into SIMD nicely

... on both x86_64 and WASM. Thanks Adrian17 for the tip!

023e14c73e565c4c778d41f66cfbac5ece6419b2 authored about 3 years ago
yuv: Drop the LUTs, do integer-only (fixed-point), SIMD-capable arithmetic instead

b810e8c3fdb8ea5df0b7808891076e774bee40a9 authored about 3 years ago
build(deps): bump thiserror from 1.0.29 to 1.0.30

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.29 to 1.0.30.
- [Release notes]...

224dfbaa7aef43f3906b64d87b2fdb604dc5ec18 authored over 3 years ago
yuv: Remove chroma interpolation, process pixels in pairs

d1f8b2659fad5ec808bcbf60eb691b1709f8c2b4 authored over 3 years ago
yuv: Add tests for yuv420_to_rgba()

03dcd486e88381635647a7386105cb802921b69c authored over 3 years ago
yuv: Some renaming in yuv_to_rgb() for clarity

160ef23c2b9d97b7f2308d7e2b66bfd0e819c4b8 authored over 3 years ago
yuv: Use more accurate coefficients for the conversion from BT.601 color, add tests

e791d495798870f9a42a132de722d5caae54ec91 authored over 3 years ago
yuv: Add more tests, including a roundtrip conversion one

d80e4a8e6f230e40a954d256301d2c4effa63259 authored over 3 years ago
yuv: Extract yuv_to_rgb() into its own function

7a5faac78bf7e0f2bf89685f6186b527a3262130 authored over 3 years ago
chore: Fix clippy complaints on nightly

0beec144ca09ad041b2ff3db2b1ae851cfadf4d8 authored over 3 years ago
build(deps): bump thiserror from 1.0.28 to 1.0.29

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.28 to 1.0.29.
- [Release notes]...

1f6563fe305299f6e196b1476de078a16185dbbe authored over 3 years ago
yuv: Use lazily computed LUTs for colorspace conversion

c6fb074d0f23740d71637177790a6b9294983040 authored over 3 years ago
yuv: Use .clamp() instead of .max().min()

62f37572aa1d0b9d300fe1509553dabad860b2dc authored over 3 years ago
Fix a typo in README

And a capitalization change for consistency's sake.

6662d48ad99c1f45432e7e138091427abfc4bf15 authored over 3 years ago
build(deps): bump thiserror from 1.0.26 to 1.0.28

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.26 to 1.0.28.
- [Release notes]...

07f4b5cd7d3b6a22dea3011a8a27247249d479a1 authored over 3 years ago
h263: Add convenience method to parse a picture from a reader using a state's current decoder options.

ce3d3c798190be1c78c47099e76d095756a195ac authored over 3 years ago
Merge pull request #1 from ruffle-rs/dependabot/cargo/bitflags-1.3.2

build(deps): bump bitflags from 1.2.1 to 1.3.2

cde9afb2eff55bd306fe30efe1e4283a4a295849 authored over 3 years ago
Image tests? *What* image tests?!

837f075d280680abc8dd3fc3d47656d5a770c48e authored over 3 years ago
build(deps): bump bitflags from 1.2.1 to 1.3.2

Bumps [bitflags](https://github.com/bitflags/bitflags) from 1.2.1 to 1.3.2.
- [Release notes](ht...

4b28ed907bea4b408ad176e328ed994689fddfd9 authored over 3 years ago
h263/gather: Pass in frame (array) height to sampler function

This also doesn't change within a block, so there is no need
to compute it again for every pixel...

0d960dfb14172431ed59d49ab944dbb9999d85c4 authored over 3 years ago
h263/gather: Use built-in clamp() instead of explicit conditionals

There might be intrinsics for this on some target architectures,
is also shorter, and it is supp...

7ce0bd85bcc93ad3c64bb23c4a49009d602c37db authored over 3 years ago
h263/gather: Move the (non-interpolating) fast path into its own loop

The need for interpolation does not change within any given block.
This way, the optimized tight...

e71d1b0730878ca7379df0ecb5e8b3355013d334 authored over 3 years ago
h263/gather: Clip block size (at frame edges) only once, instead of per-pixel

This saves a tiny bit of computation in each block, especially in non-edge ones

7eb5076b7337a3b789321d01918547e8a0266e07 authored over 3 years ago
h263/gather: Make the outer loop iterate on rows, and the inner one on pixels

Compilers, optimizers, CPUs, and/or caches usually like this better,
and it makes no difference ...

55ccab635982c08eac84fa2e87c8d54ed0b2f888 authored over 3 years ago
h263/gather: Add a shortcut for the non-interpolating case

So the other 3 samples are not read unnecessarily

70c180774d8037ca589dd99ce88a5b8a545658bb authored over 3 years ago
video: Minor cleanup in yuv-to-rgb

d167143cf189e85966a32298cb94905549eaa933 authored over 3 years ago
video/h263: Special case the edge pixels in the YUV -> RGBA conversion step

This yielded an overall 20% faster decoding speed on the video I tested

8e2259d0d0b8851d4c9072e371db603306119ed5 authored over 3 years ago
chore: Clippy compliance

fe91dbf5a89acc43d16f2c3ef128e027d66c075c authored over 3 years ago
chore: Comply with new Clippy lint on capitalized acronyms

45d242d38c771cf7cfe97dec533a4d0e3a50d1d5 authored over 3 years ago
chore: Clippy compliance following rebase to bitflags

cde807b0bf32404b867b48f5e17c68b7e7461b6c authored over 3 years ago
video: Use Rust's builtin saturating conversions

It was measured to be slightly slowed on desktop, but on wasm (FF) it
makes decoding 15% faster.

c4d4ca66731fe57d9197862bad09f395dd22f314 authored over 3 years ago
chore: Fix clippy links in `idct_channel`

cbaa56c7bb27ae89d0c01254cec3a0a77eb9af4e authored over 3 years ago
video/h263: Merge CUV_TABLE into BASIS_TABLE, precompute the result as a const table

6368909bd069326298db0314bc4798b9f1fbdfbc authored over 3 years ago
video/h263: Extract the YUV conversion step into utility functions

9b346216331438b2a38eadaa1258dfd98000c758 authored over 3 years ago
video: Simplify clamp() used in the YUV to RGBA conversion

9b79bfad372cf969c5088fac7999ab28ab7fd03e authored over 3 years ago
video: If we encounter a torn frame treat the remainder of the frame as transparent

5a21ba40b3333989c3c8af7f0300772c92963beb authored over 3 years ago
video: Fix incomplete decoding of portrait video

f53926cb4b88e058211480562c12a33b05c87218 authored over 3 years ago
video/yuv: Interpolate chroma samples instead of duplicating them

a41d5925cfa2bdd02076af992a528f8c6ae9665c authored over 3 years ago
video: Replace naive rounds with more performant biased truncation

c36a62fe13055eb71c5524f8e2d67c5a53a53eb6 authored over 3 years ago
video/h263: Add another round() to clamp while converting YUV -> RGBA

This reduced the overal final pixel color diff compared to the Adobe player

3b9f3207dd0debac2b3057077d4fb06e4fae2ccc authored over 3 years ago
video/h263: Further IDCT optimizations, avoid a few copies

bd41d1e0f0647f608675bf76ef8ed76d8fd0dc33 authored over 3 years ago
video/h263: Separate the 2D IDCT into two consequent 1D IDCTs

This should theoretically yield a ~4x speedup on this step.

8eb18ace38ae4a88be28b765f31849842a9a5053 authored over 3 years ago
chore: clippy compliance

13c02dc5d18adffe86f4e4442b9b782914c08284 authored over 3 years ago
video/h263: Add a round() to the IDCT step to exactly match libavcodec

At least on the Cr channel of the very first frame of z0r.de/6367
There was a value difference o...

89a424b8a5ecd88e46eb9271316c035262688e24 authored over 3 years ago
video: Allow pictures with half-pixels in chroma by widening the chroma buffers to the next pixel in that direction.

bd3861972311528c079f73cf6cf7bbb8aa786e9d authored over 3 years ago
video: Always IDCT misaligned blocks on the edge of the picture

2a7924034b0f315b5ec20930fcbd70553617e38c authored over 3 years ago
video/h263: Only round once when lerp-ing in both dimensions during gather

This finally makes z0r.de/6367 play through "perfectly",
without the pink blob creeping in

eb85d8bb639334a88db9c01873f21c88af10a138 authored over 3 years ago
video/h263: Rename yuv422_to_rgba() to yuv420_to_rgba()

4:2:2 only subsamples chroma horizontally, 4:2:0 in both dimensions

34408bb46a64e1ef045d8a9cd15a0a223f38f1b6 authored over 3 years ago
video/h263: Simplification: FRAC_1_SQRT_2 * FRAC_1_SQRT_2 -> 1/2 -> 0.5

6d3aa0c6167ebe41b37f01cb62b9fe0fded84149 authored over 3 years ago
video: Bounds-check motion prediction in case we need to copy from unaligned-size reference pictures

a7b32748af166ecc2d9fdde58ba8bf640795e690 authored over 3 years ago
video: Replace the H.263 basis function with a lookup table.

a99fa47a423d04fbbb4790749721612a018a34d5 authored over 3 years ago
video: Use `FRAC_1_SQRT_2`

I'm not sure if this provides a performance benefit, but I know Rust doesn't yet consider trance...

13cb06c471192c01d6fbf3056e9f64418abe2cc4 authored over 3 years ago
video: Adjust the interpretation of sampling parameters... again.

173057f371512dd6d41ec7c460b61043ac043c4f authored over 3 years ago
video: Fix incorrect sampling on backwards motion vectors

29de4fb135645307f919af6732c828c10c5d5a24 authored over 3 years ago
video: Move `cu`/`cv` to a lookup table and coefficient conversion out of the hot loop.

This also structures the block levels as a multidimensional array; which allows the compiler to ...

1b0513ed3c50b9274e04aa755f4337f43cf3d952 authored over 3 years ago
video: Avoid constantly initializing the `BASIS_TABLE` every IDCT loop

0978140406c02c8471b86c46bc5597c81ff13fd9 authored over 3 years ago
video: Refactor the `lerp` step in `gather` to remove some unnecessary float multiplies.

c80eb7f503131ba22d01b07f11ba9c7dd92866de authored over 3 years ago
video: Correctly handle videos with non-macroblock-aligned sizes

b6665ddc44706b4026b24bcbf74475cffe97604a authored over 3 years ago
video: Switch H.263 decoder from a block-by-block decode to a picture-at-once decode.

d7422b5be9438a7c765faedf52bdd43d48d93500 authored over 3 years ago
video: Clear internal memory buffers that are no longer needed during a normal decode loop.

9316fdf47325b7a1de25c2f285d470b22d559e38 authored over 3 years ago
video: Ignore warnings about backchannel messages not being used.

18b28d65fdcc0e91b039b9e287d72226dd3bf14d authored over 3 years ago
video: Round up the picture width to the nearest macroblock (and also, minor `decode_next_picture` refactor)

1514d300cb081499e3c170b1c5b33fc4b1bb482d authored over 3 years ago
video: Restore the H.263 inversion behavior to Sorenson bitstreams.

Experimentally this appears to fix motion vectors on at least one test video. The "unlimited ran...

015b4aeefe7e2e760391e852101fe9ca9ca4128b authored over 3 years ago
video: After carefully re-reading H.264 spec I'm pretty sure we're not supposed to repredict the same vector multiple times?

e86176c962f996d8e143cf1cdfd621b335b793d4 authored over 3 years ago
video: `quant` should always be u8.

Also, refactor the IRLE code for readability, too.

9450eb2c54ac2a6d06ff4bc88932444f419bea53 authored over 3 years ago
video: Allow 4vec blocks in places where it doesn't make sense to encode them (like, say, if Sorenson is involved)

bdb4a367cdca8358e090f7856eea4898c1b19efa authored over 3 years ago
video: Remove unnecessary skip through zero coeffs

3650ae768bf71b82023670a23136325ef57b8e67 authored over 3 years ago
video: Refactor MVD process to be more readable.

I wasn't really able to find any significant spec deviations, though.

c267b384c620e894ae3f06ed384da0a3a4deffac authored over 3 years ago
video: Allow debugging most of our data structures.

06b511eb210096bd676700377e402fef97aea484 authored over 3 years ago
video: When RLE decoding, blocks without an `IntraDC` should assume that their DC content is specified by the `TCOEF` structure.

This behavior isn't mentioned in H.263 (01/2005) and it drove me mad trying to figure out why `I...

1e927fb1fb3ff195a956ad7942a5fc9bdc132db7 authored over 3 years ago
video: Motion vectors are predicted based on the component-wise median of the three candidate predictors.

4567743ea273ac1294b388e8516253978cc2607f authored over 3 years ago
video: Do not allow prediction based off disposable Pframes.

78f22bb2ed64a8c5e0424e1f7c340084f3ddfcc4 authored over 3 years ago
video: Clear the list of IDCT coefficients in between blocks within a macroblock.

af55f0067f1e356f8925786bca33d608b5a6d713 authored over 3 years ago
video: Precalculate the multiplication in the inverse RLE

010ca9c0a480e734b2404cafd26a432a3ba2818d authored over 3 years ago
video `DQUANT` should adjust the quantizer for all future macroblocks

7fc154eb7f5440a126b929fbfbae47bc8c639329 authored over 3 years ago
chore: cargo fmt

8d66461c4a0e3121682f8de72679507356d8a4a9 authored over 3 years ago
video/h263: Fix YUV to RGBA conversion

The range and coefficients are according to sections
"Studio swing for BT.601" and
"Y′UV420sp (N...

64c7e9d13c8e8117ff37944373e2bf28d89125d0 authored over 3 years ago
video: Allow debugging motion vectors.

8a382916569570a8ddc1c28c04315aeb74511532 authored over 3 years ago
video: Don't double-convert when parsing `TCOEF`

833cb32e0259b98257de39721a6012dc8a7b67a2 authored over 3 years ago