Initial effort to reduce or eliminate the use of assertions in the
production code (i.e. not test code). See issue 43 for an example of how
this can cause an application (thread) to panic when reading an unusual
file. Not all of the changes were as simple as returning an Err, since some
functions did not return a Result. Also, the error type used (InvalidData)
is just a catch-all with a message, and in some cases a more refined error
type may be in order.
cargo test passes
* feat: mvex box中的mehd box改为可选,支持fmp4的解析
* feat: example/mp4sample supports fragmented mp4
* feat: utilize function sample_count(), extract duplicated codes as a new function
* feat: field data_offset in TrunBox is optional
* feat: remove an ".expect()"
* feat: remove an ".expect()"
* chore: re-style code