Comments (8)
[deleted comment]
from mp4v2.
I believe r13 exposes this issue:
- the atom 'name' is FullAtom when direct child of udta
- the atom 'name' is Atom when direct child of ilst
So we need context-aware NameAtom as some code already attempts to implement
but it is not activated. eddy
seemed to be working on this stuff; maybe he can shed some light on the
situation.
Original comment by [email protected]
on 23 Dec 2008 at 8:27
from mp4v2.
[deleted comment]
from mp4v2.
I'm incorrect about mp4creator 1.5.0.1 not having the same error at this point
-- I'm not sure why, but at one
point it seemed like it didn't.
mp4creator --optimize or mp4file --optimize on a file containing any audio
track names will wipe out
trak.udta.name, but will not cause crashes in MP4 utilities (atomicparsley,
mp4creator, mp4tags, metaX,
muxo).
mp4creator --optimize or mp4file --optimize on a file containing any audio
track names and/or any "reverse
DNS" style atoms (http://atomicparsley.sourceforge.net/mpeg-4files.html) which
consist of parental rating
(i.e. G/PG/PG-13/R) in com.apple.iTunes;iTunEXTC and
actors/producers/directors/writers in
com.apple.iTunes;iTunMOVI will crash the MP4 utilities mentioned above and wipe
out trak.udta.name.
This explains why crashes were occuring only sometimes, it only happens if
optimization is done on a file
with the reverse DNS style atoms.
I have 7 sample files (1 clean file prefixed by 0 with an audio track name, 2
files prefixed by 1 each run
through mp4file or mp4creator optimization, and 4 files prefixed by 2 each run
through optimization and one
set of the reverse DNS tags) available at public.me.com/jpo/. Each file is only
1.8 MB
Original comment by [email protected]
on 23 Dec 2008 at 10:05
from mp4v2.
Some more digging for '----' atoms:
ExpectChildAtom("mean", Required, OnlyOne);
ExpectChildAtom("name", Required, OnlyOne);
ExpectChildAtom("data", Required, OnlyOne);
but this seems to be in slight conflict with the spec. 'name' should be
Optional/OnlyOne and 'data' should be
Required/Many. not sure if this is a contributor to the issue as I have no mp4
files with these atoms.
Original comment by [email protected]
on 23 Dec 2008 at 4:18
from mp4v2.
Another bit of information as related to 'reverse DNS' style atoms and the iTMF
spec:
The '----' is a Atom containing:
a) MeaningAtom which is a FullAtom
b) NameAtom which is a FullAtom
c) DataAtom which is a Atom
and the code is not consistent (b) and (c). Frankly I'm just blown away by
this; is it really possible that we are
writing out FullAtom structure for iTMF data atoms when they should really
only be Atom ? Need another set
of eyes on this to verify.
Original comment by [email protected]
on 23 Dec 2008 at 4:46
from mp4v2.
Verified. DataAtom is *not* a FullAtom. libmp4v2 has this wrong, and so does
AtomicParseley. The only
reason it works is because the FullAtom (a versioned atom) uses 4 bytes for
version/flags which just so
happens to be exactly the same size as type_indicator field for DataAtom; and a
zero value means implicit.
How lucky. In any case, the way we use it is wrong; and it's extremely poor
form.
However, the problem with NameAtom is more pronounced, there is no lucky field
overlap. The bytes used in
NameAtom (ie: string), end up taking the place of what is supposed to be
version/flags. For comparison
purposes, AtomicParsley defines NameAtom as a VERSIONED_ATOM in their
terminology, which is a FullAtom.
If I had to guess, the effect of this would be; if libmp4v2 is used to create a
NameAtom (eg. from HB), and
then the m4v file is inspected from QuickTime player, it might very well be
missing the first 4 bytes
(characters). If the value is 4 chars or less, then maybe this is when the
issue becomes more evident.
Original comment by [email protected]
on 23 Dec 2008 at 5:22
from mp4v2.
marking as fixed; relevant changesets: r191,r194 .
Original comment by [email protected]
on 10 Jan 2009 at 9:09
- Changed state: Fixed
from mp4v2.
Related Issues (20)
- MP4Info not showing information related to MJPEG Video
- Can't compile with clang
- mp4info fails to show info of the simple video taken by Android phone HOT 1
- Error when trying to compile the project mp4v2 - 2.0.0 HOT 1
- Writing tags corrupts DASH-encoded files
- Integer overflow/wraparound in \src\mp4track.cpp
- Better FileProvider API HOT 3
- Modifying tags with mp4tags -m "test" corrupts some specific MP4 files
- add compilation, gapless, and genretype tag support to mp4tags
- https://code.google.com/p/mp4v2/issues/list?can=1&q=http%3A%2F%2Flimelinx.com%2Fdswj4
- Enhancement: Fill Genre from GenreType
- "Progressive Rock" mistyped as "Progresive Rock" in src/itmf/type.cpp HOT 1
- Ability to free memory allocated by MP4GetTrackH264SeqPictHeaders function HOT 2
- Support for Track Reference Atoms HOT 1
- Import/Export mp4 tags from/to text file
- make dist fail because make doc fails HOT 2
- use of impl / private code in example utils; enumGenreType HOT 1
- Charset problem at filenames
- Generate mp4 file.Can't play by media player.
- Google Code will shut down
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mp4v2.