1
0
Fork 0
mirror of https://github.com/alfg/mp4-rust.git synced 2024-12-23 04:26:27 +00:00
Commit graph

142 commits

Author SHA1 Message Date
Jensenn
9d8bfc9d54 clippy fix 2024-02-20 15:37:13 -07:00
Jensenn
d4bed7071c Fix formatting of track.rs 2024-02-20 15:14:40 -07:00
Jensenn
5688950626 Allow sample_time to wrap 2024-01-11 17:33:18 -07:00
Andrey Tkachenko
35560e94f5
hev1 box parser (#101)
Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-08-02 21:20:03 -07:00
emkman99
19e4eaa3c8
Extract esds box from wave box (#96)
* Extract esds from wave box

* Allow empty, multi-byte, and arbitrary NUL terminated strings

* Skip unsupported avc1 sub-boxes

* Fixed non-integer framerates

* Fixed bitrate calculation

* Fixed format issue

* Public read sample offset

* Fix lint warning.

---------

Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-08-02 21:13:58 -07:00
jensenn
b4fca8a199
Fix writing SLConfigDescriptor (#107)
Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-08-02 21:05:09 -07:00
jensenn
df92ac893c
Fix some minor issues writing traf box (#109)
Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-08-02 21:02:05 -07:00
jensenn
85b8209d5e
Export all boxes to allow more flexible use for writing (#108)
Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-08-02 20:57:20 -07:00
jensenn
b90e43dd9c
Fix getting samples from movie fragments (#106)
* Fix getting samples from movie fragments

* Add a function to the reader to read in fragments from a different reader

---------

Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-08-02 20:53:43 -07:00
Alfred Gutierrez
18f1718b70
Release 0.14.0 (#117)
* Update Cargo.toml

* Update README.md
2023-07-31 20:54:29 -07:00
w-flo
d6c38642de
Try to skip extended header in MetaBox. (#111)
Fixes #102

Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-07-28 21:06:22 -07:00
⭐️NINIKA⭐️
c104047215
Allow Hdlr to be not the first in the Meta box (#95)
While the spec says that the hdlr box should be the first one, not all
implementations follow that. Actually look over all boxes in Meta to
find Hdlr.

Also add a test for such weirdly-formatted box

Change the way unknown MetaBox is stored: store a list of boxes instead
of raw bytes

Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-07-28 20:43:13 -07:00
rolleifx
aff3bf6c45
fix clippy (rustc 1.71.0) (#115) 2023-07-28 19:21:34 -07:00
Linus Unnebäck
55875d72de
Derive Default trait for DataType (#100) 2023-06-18 20:38:41 -07:00
Richard Steinmetz
a3508fe1c9
Fix link to examples in docs (#97) 2023-03-29 00:04:51 -07:00
oftheforest
7cfdffbd71
Fix several overflows in box and track processing (#94)
* Fix several overflows in box and track processing

* Use size_of::<Type>() instead of magic numbers

* Fix a panic in Mp4Track::read_sample() for one-past-the-end

This appears to be a bug unmasked by other changes. read_sample() calls
sample_offset() then sample_size(), and assumes that if the former returns Ok
then the latter does as well. However, if the sample_id is one past the end,
sample_offset() might succeed (it only checks samples _up to_ the given
sample_id but not _including_ it) while sample_size() fails (because the sample
doesn't exist). read_sample() will then panic.

Fix this by duplicating the error propagation (that is currently done for
sample_offset) for sample_size, instead of unwrapping. This is a cautious
change that fixes the bug; alternatively, having sample_offset() call
sample_size() on the given sample_id and propagate any error might also work.

* Account for header size in box processing overflow fixes

* Ensure that boxes aren't bigger than their containers

Together with the entry_count checks, this eliminates several OOMs when reading
incorrect mp4 files.

* Fix order of arithmetic operations

This was due to an incorrect transcription when switching to checked
arithmetic, and fixes a bug that could cause attempted lookups of the wrong
chunk_id.
2023-02-18 11:46:51 -08:00
Alf
024c26ade7 Add benches to Cargo.toml. 2023-02-01 21:32:02 -08:00
Alf
c8cc6f25a8 0.13.0 2023-02-01 21:25:27 -08:00
Alfred Gutierrez
9f10bd335e
clippy: fix warnings from latest stable rust 1.67.0 (#93) 2023-01-30 20:33:32 -08:00
Jessa
2a374c57f2
Parse unknown metadata and write metadata (#91)
* validate meta box handler type, parse meta with unknown handlers

* parse meta in moov and trak position

* write meta and udta

* fix clippy nit
2023-01-30 19:59:57 -08:00
jensenn
9c0f6534bd
Feature/tfdt box (#90)
* Add Tfdt box parsing

* Derive Default for TfdtBox

* Derive Eq for TfdtBox
2023-01-11 20:21:49 -08:00
Jessa
16c1b5d67f
Don't subtract overflow when 64-bit box size is less than 8 (#89)
* don't subtract overflow when 64-bit box size is less than 8

* fix largesize of 8 being conflated with a size of 0
2023-01-09 23:12:14 -08:00
jensenn
df6e0b5ea0
Fix TfhdBox optional fields (#86)
* Fix TfhdBox optional fields

* clippy fixes

* Cargo fmt fix

Co-authored-by: Alfred Gutierrez <alfg@users.noreply.github.com>
2023-01-05 20:13:48 -08:00
Alfred Gutierrez
3095051512
Fix clippy warnings (#88)
* chore: fix clippy warnings

* Update readme with clippy usage.

* fix fmt warnings.
2023-01-05 19:03:02 -08:00
rolleifx
c26bdcab59
fix "mdat size too large" (#80)
* fix "mdat size too large"

* fix clippy

* Fix clippy::derive-partial-eq-without-eq
2023-01-05 18:19:47 -08:00
Alf
0cd2abb60a 0.12.0 2022-07-30 01:24:49 -07:00
Ririsoft
ace2799c75
read metadata from udta (#77)
This introduces the 'Metadata' trait to enable access
to common video metadata such
title, year, cover art and more.

Reading 'title', 'description', 'poster' and 'year'
metadata is implemented here.
2022-07-20 19:05:38 -07:00
Ririsoft
5d648f1a72
fix clippy & enhance CI/CD (#78)
* fix clippy::unused_io_amount

See related clippy documentation,
but in short some partial reads can occur
in particular with io on the networl.
read_exact/write_all transparently handle such errors.

The fix actually revealed a bug
in 'mp4a' atom parsing, but this is a dangerous change:
Parsing bugs that were transparently ignored
are now failing with error (unattended io eof).

* fix trivial clippy errors

* fix clippy error with always 0 value

* run ci/cd with clippy and latest rust version
2022-07-07 20:02:00 -07:00
nemosupremo
00385bad0b
Writer: Set mvhd/tkhd/mdhd version to 1 if duration is greater than u32::MAX (#76) 2022-06-14 21:44:59 -07:00
TamDik
cc9bf192fa
Fix code example (#75) 2022-06-02 22:21:48 -07:00
Alf
21afff228c 0.11.0 2022-06-01 21:26:07 -07:00
Alf
87933a23da 0.10.1 2022-06-01 21:24:42 -07:00
Alfred Gutierrez
80aabdf549
Update README.md 2022-05-31 20:54:29 -07:00
Data Retriever
3ecfd0cc9d
Cargo fmt and clippy (#73)
* Run cargo clippy --fix

* Run cargo fmt --all
2022-05-31 20:50:49 -07:00
nemosupremo
33959766d4
Mp4Writer should use co64 by default, then convert to stco is possible for compatibility (#71) 2022-05-24 17:37:25 -07:00
Data Retriever
7218ada431
Proper handle display matrix (#72) 2022-05-24 17:32:31 -07:00
Data Retriever
084381bde5
Do not fail if media info fails (#70) 2022-04-20 18:43:18 -07:00
Alf
93dbb56464 lint: fix warnings from unused imports. 2022-03-25 21:06:48 -07:00
Alf
02b87d3ce7 0.10.0 2022-03-25 20:28:48 -07:00
Christopher
b48066fec4
expose all box types (#61) 2022-03-25 20:13:02 -07:00
Alf
b749eaa064 chore: remove travis config and badge. 2022-03-25 20:07:05 -07:00
Alex
12ba304023
Support profiles > 31 in DecoderSpecificDescriptor (#69) 2022-03-25 20:02:50 -07:00
Alf
49f9ed0432 0.9.2 2021-12-23 18:55:47 -08:00
Alfred Gutierrez
e7f5f71ae3
bugfix: break reader loop if BoxHeader is size zero to prevent dead-loop. (#65) 2021-12-23 18:49:01 -08:00
Alf
7be2ebe49d 0.9.1 2021-12-21 20:08:56 -08:00
ahkrr
b4e43c21c2
upgrade dependencies (#62)
bytes 0.5 -> 1.1.0
num-rational 0.3 -> 0.4.0

Co-authored-by: ahkrr <alexhk@protonmail.com>
2021-12-21 19:59:48 -08:00
Alf
2849d4d791 0.9.0 2021-07-30 20:40:19 -07:00
cTopher
60b6d56704
Emsg box (#60)
* EmsgBox implementation (#59)

* read emsgs (#59)
2021-07-30 19:20:32 -07:00
cTopher
8fe009e248
Maintain a separate indexing from track_id to index to allow for non continues track ids (#43) (#58) 2021-07-29 19:57:15 -07:00
Alf
94f9e88b2d 0.8.3 2021-07-12 18:16:28 -07:00