- Segment::CreateInstance was treating the available data as EOF
and returning errors.
- Added a check for potential underflow if the segment was not the
first element after the EBML header.
Change-Id: I481bf0eea71eeb3def3bf54ec251be0b2ae13536
A few adjustments we made such that the webvttparser
now conforms more closely to the Google C++ style guide.
Change-Id: Iefb2242678ceea6ab5b9daa3a046980deb6cd91c
- Added ContentEncAESSettings, AESSettingsCipherMode,
AESSettingsCipherInitData elements to the parser and muxer.
- Changed ParseContentEncodingsEntry, ParseContentEncodingEntry,
and ParseEncryptionEntry to use PasreElementHeader.
- Added ParseContentEncAESSettingsEntry function.
- PS6 removed AESSettingsCipherInitData.
- PS9 Addressed comments, Fixed some LINT issues, and converted
mkvwriter.h/.cpp to Unix line endings.
- PS10 Addressed comments.
Change-Id: I9d96a0c194f74a6c9bf0001aa0286196e410f07e
Change vs2008 output and intermediate directories to:
1. Avoid build output collisions when using vs2008 and vs2010 on the
same system (makes no difference until subsequent commit adding
vs2010 support).
2. Keep the tree clean.
Change-Id: Ie819e57421b7df90244eebffc0f5e608bc135930
- For muxed content with default settings the cues was getting
output on the audio track when it should be on the video track
by default.
- Added check to command line parameter parsing to make sure
there are enough parameters.
- If Cues are set to output on one type of track the other type
is now disabled.
Change-Id: I96ef1978dc3f442f34364f6dee6cfb01571c7289
In several cases, the parser would parse a header
(say, a track header, or the segment info header)
in the constructor for the type. The parser had
assumed (incorrectly) that the file was well-formed,
but this turned out to be an incorrect assumption.
The parse errors triggered some assertion failures,
but this is not acceptable in a production system.
The parser solved that problem by separating the
construction of the header object from the parsing
of the file. There is now a separate parse method
to be called after construction of the object,
which returns a status whether the parse was
successful.
This change fixes the bugs from the following
tracker issues:
http://code.google.com/p/webm/issues/detail?id=399http://code.google.com/p/webm/issues/detail?id=400
Change-Id: Idb09154ae7008429d8613ce3b3e8294f5a12de86
Previously, parsing of a Block element was done inside its
constructor. Parsing errors were handled via assertion checks,
but this only works in practice if there are no actual errors
in the file.
We did come across a file, however, that used EMBL-style lacing,
but the lacing was done incorrectly and so the parse asserted.
This isn't acceptable for a production system, and more a graceful
handling of parse errors was needed.
The code was restructured such that the Block object's ctor does
only trivial initialization of member variables. A separate Parse
method was added, that is called after the object is constructed.
If the parse succeeds all is well, otherwise the object is destroyed
and the error is reported to the caller.
This commit fixes bug tracker issue #398, described here:
http://code.google.com/p/webm/issues/detail?id=398
Change-Id: Ib95ca95d0eec08cf670b308c461e42ed8345e890
- Fixed a bug with the muxer where it would generate a entry in
the SeekHead for a Cues element with OutputCues set to false.
- Fixed a bug with the muxer where it would generate an empty
Cues element with OutputCues set to false.
- Issue:http://code.google.com/p/webm/issues/detail?id=383
Change-Id: I99cc404a7e8ad61759dbb57ab769625dd724240c
- There was a bug where the calculation for the audio and video
track size where the code would calculate the size of the track
elements minus the size of the audio or video elements. If the
coded size of the track elements was one byte smaller than with
the audio or video elements then the muxer would return an
error.
- Fixed another issue that the track's virtual Size function was
calling the Track's PayloadSize function where it should have
been calling the virtual PayloadSize function.
Change-Id: Ie6d66d6d720334180a11e06926a3bd8c7788a1f1
There was a potential bug with calculating the size of a master
element. The size was being calculated with a straight unsigned
integer when it should have been calculated with a coded
integer.
Change-Id: I68422ecdb7818af51ded2953a8914fcdc8858f7a
Fixes reliability issue with IMkvWriter::ElementStartNotify: the
cluster and segment IDs were being written with SerializeInt instead
of WriteID.
Also:
- Remove completed TODO.
- Fix method declaration order in MkvWriter.
Change-Id: Ie37e141169af6e0ca7d931cc39f001722e7b9078
Segment::AddFrame will now return false (fail) when a non-monotonically
increasing timestamp value is passed to the method.
Change-Id: Icfac093e6bddf18e3ef252df79e35c33dbe1e134
- Fix return values; use EXIT_FAILURE and EXIT_SUCCESS
instead of -1 and 0.
- Use C++ versions of C library includes.
Change-Id: Ib3a36e799d6a91b7fea0f328480e977ef21ca260
Just before the first byte of an element identifier is written
the muxer calls IMkvWriter::ElementStartNotify to report the
position of the element in the WebM stream.
Change-Id: Iac40090587bd9496b05f41203aace00902f5606e
NDEBUG is defined in our release build, which allowed for misuse of
the library by users that would result in dereferencing NULL
MkvWriter pointers in various places throughout the muxer code.
Change-Id: I6ab51453ef26786ca988310c051bb49db16ecbc5
Remove asserts on the MkvWriter pointer in each constructor,
and assign the pointer in each Init method. Update Segment::Init
usage site in sample_muxer.
Change-Id: Id940f76b50dc15603742e76afc04cdffe0ec4990
Added support for the ContentEncoding element to be added to a
Track element for muxing. Currently only one ContentEncoding may
be added. The ContentEncoding must be encryption of the whole
frame with AES.
Added support for parsing the ConentEncoding elements. Currently
the parser does not parse any ContentCompression elements.
Change-Id: Ie199116a1bcc18a0c2b5eea3dba6622887c108c8
If the muxer had audio frames that were earlier in time than the
first video frame then the first cluster would not be initialized
in time to write out the first audio frames.
Change-Id: I6a2ca25a25c326a4215c307bdae666db9107e9b5