This file lists the major changes between versions. For a more detailed list of every change, see the Git log.
- Minor: Updated waf.
- Minor: Added install step to CMake.
- Minor: Upgrade to boost 4
- Patch: Changed some size parameters and return values to
uint64_t
instead ofuint32_t
. - Patch: Added add_subdirectory guard in cmake.
- Minor: Added cmake.
- Major: Remove boost as external (i.e., non-internal dependency).
- Major: Removed the
extractor::file
helper class. Useboost::memory_mapped_file
directly instead.
- Patch: Added missing virtual destructor in
extractor
interface.
- Minor: Added templated version of
box::get_children
. - Minor: Added
data_box::data()
. - Minor: Added
extractor
abstract class. - Major: Changed
extractor
open
fromopen(error)
toopen(data, size, track_id, error)
. - Major: Changed extractor to now also need the track id of the track they
should extract. Use the newly added
track_extractor
to get appropriate id. - Minor: Added looping API to
extractor
. - Minor: Added
write_nalu_header
andnalu_header_size
towrite_nalu_header
. - Major: Removed
annex_b_writer
,nalu_extractor
andavc_sample_access_layer
avc_to_annex_b
and addition to theavc_sample_extractor
should be used instead. - Major: Replaced
memory_mapped_file_layer
withextractor::file
anddata_layer
. - Major: Loop layer no disabled by default.
- Patch: Fix bug where opening an extractor with a none existing file would cause an exception to be thrown.
- Major: Upgrade to endian 10.
- Major: Upgrade to endian 9.
- Major: Correct spelling of descriptor/tag enums:
elemetary_stream
toelementary_stream
, andip_dentification_data_set
toip_identification_data_set
. - Patch: Add virtual destructors to base classes.
- Major: Upgrade to endian 8.
- Major: Upgrade to endian 6.
- Minor: Added samples function to extractors to get the number of samples.
- Major: Changed API of
sequence_parameter_set
andpicture_parameter_set
. The constructor has been made private, and the object can now only be created using the staticparse
function.
- Patch: Set the
install_path
of the petro shared lib toNone
to avoid automatic installation to system directories during the waf install step.
- Major: Added error codes.
- Major:
bit_reader
renamed tobit_stream
. - Major:
byte_stream
was replaced by a wrapper of anendian::reader
. - Major: The
extractor
s open function now takes an error code and doesn't rely on the returned boolean to announce the occurrence of an error. - Major:
sequence_parameter_set
andpicture_parameter_set
now needs to be parsed. - Major: Changed constructor parameters of
box
. - Major: Renamed
data_box::read
todata_box::parse
. - Major: Split
box
into two classes;box::box
andbox::data_box
.
- Minor: Moved
avc_sample_access
to it's own layer calledavc_sample_access_layer
.
- Minor: Added missing functions to aac_sample_extractor.
- Major: Upgrade to waf-tools 4
- Major: Upgrade to boost 3
- Minor: Upgrade to gtest 4
- Minor: Upgrade to stub 6
- Minor: Changed aac_sample_extractor to use the pimpl pattern.
- Major: Removed the ambiguous
timestamp
function from extractors. - Minor: Added the
media_duration
function intimestamp_extractor_layer
. - Minor: Use the total media duration as a loop offset for decoding and
presentation timestamps in
looper_layer
. - Minor: Changed avc_sample_extractor to use the pimpl pattern.
- Minor: Enabled building petro as a shared library
- Major: Changed from using std::ifstream to using boost::iostreams::mapped_file_source for reading files.
- Major: Changed the order of the parameters given to petro::parser::read now the parent paramter is the last one.
- Major: Changed petro::parser::read to return a reference to the parent, and have a default value for the root paramter.
- Major: The extractors now have an open function which are allowed to fail, instead of doing stuff that can fail in the constructor.
- Major: Extractors are now split into seperate layers making it easier to test and reuse.
- Major: bit_reader now takes size in bytes instead of bits.
- Minor: Added data_offset function to byte_reader. Allowing a pointer to the current position of the byte_reader to be returned.
- Major: picture_parameter_set and sequence_parameter_set now uses shallow storage.
- Major: the read_time32 and read_time64 now returns a UTC time.
- Patch: the read_time32 and read_time64 now handles timestamps before 1970-01-01 00:00:00.
- Major: Renamed aac_extractor -> aac_sample_extractor.
- Major: Renamed h264_extractor -> avc_sample_extractor.
- Minor: Added annex_b_writer for writing annex_b samples.
- Major: Added external dependency on boost.
- Minor: Added the
decoding_time
helper function. - Minor: Added the
aac_extractor
andh264_extractor
classes to extract AAC and H.264 samples and the corresponding timestamps from mp4 files. The extractors provide simple iteration over the available samples. - Major: The
byte_stream
constructor takes an istream reference instead of thefilename
as a string.
- Patch: Made
presentation_time
inline
to prevent multiple definitions linker error.
- Minor: Added getters for the private fields of
sl_config_descriptor
. - Patch: Fixed warnings.
- Minor: Added license.
- Minor: Expose entry_count, entries, and chunk_offset in co64 box to allow extraction of media data in large mp4 files.
- Major: Replaced read_N_bits API with read_bits(N) API.
- Minor: Added sequence_parameter_set and picture_parameter_set. Note no parsing is done in picture_parameter_set.
- Patch: Added missing files.
- Major: Removed redundant type string when getting specific child.
- Minor: Added free function to calculate the presentation time in microseconds.
- Minor: Extended ctts and stts API to easier extract compressed data.
- Patch: Added assert which checks if the given file exists.
- Minor: Added templated member function for getting children of a certain type.
- Minor: Added more getters.
- Major: Actual release.
- Minor: Added example for audio (AAC) extraction.
- Major: Initial release.