We are operating with semantic versioning <http://semver.org/>. However,
we are using v0.x.y as our heavy development period, and will increment x
to signal a major change (i.e. backwards incompatibilities) and increment
y
as a minor change (i.e. backwards compatible features).
Minor:
- Add FLTP support to
Frame.to_nd_array()
. (#288 by @rawler.) - Expose
CodecContext.extradata
for codecs that have extra data, e.g. Huffman tables. (#287 by @adavoudi.)
Fixes:
- Refined frame corruption detection. (#291 by @Litterfeldt.)
Major:
CodecContext
has taken over encoding/decoding, and can work in isolation of streams/containers.Stream.encode
returns a list of packets, instead of a single packet.AudioFifo
andAudioResampler
will raiseValueError
if input frames inconsistantpts
.time_base
use has been revisited across the codebase, and may not be converted bettweenStream.time_base
andCodecContext.time_base
at the same times in the transcoding pipeline.CodecContext.rate
has been removed, but proxied toVideoCodecContext.framerate
andAudioCodecContext.sample_rate
. The definition is effectively inverted from the old one (i.e. for 24fps it used to be1/24
and is now24/1
).- Fractions (e.g.
time_base
,rate
) will beNone
if they are invalid. InputContainer.seek
andStream.seek
will raise TypeError if given a float, when previously they converted it from seconds.
Minor:
- Added
Packet.is_keyframe
andPacket.is_corrupt
(#226). - Many more
time_base
,pts
and other attributes are writeable. Option
exposes much more of the API (but not get/set) (#243).- Expose metadata encoding controls (#250).
- Expose
CodecContext.skip_frame
(#259).
Fixes:
- Build doesn't fail if you don't have git installed (#184).
- Developer environment works better with Python3 (#248).
- Fix Container deallocation resulting in segfaults (#253).
Fixes:
- Fix segfault due to buffer overflow in handling of stream options. (#163 and #169.)
- Fix segfault due to seek not properly checking if codecs were open before using avcodec_flush_buffers. (#201.)
Minor:
- Expose basics of avfilter via
Filter
. - Add
Packet.time_base
. - Add
AudioFrame.to_nd_array
to match same onVideoFrame
. - Update Windows build process.
Fixes:
- Further improvements to the logging system, continued from #128.
Minor:
av.logging.set_log_after_shutdown
renamed toset_print_after_shutdown
- Repeating log messages will be skipped, much like ffmpeg's does by default
Fixes:
- Fix memory leak in logging system when under heavy logging loads while threading (#128 with help from @mkassner and @ksze)
Major:
- Python IO can write
- Improve build system to use Python's C compiler for function detection; build system is much more robust
- MSVC support (#115 by @vidartf)
- Continuous integration on Windows via AppVeyor (by @vidartf)
Minor:
- Add
Packet.decode_one()
to skip packet flushing for codecs that would otherwise error StreamContainer
for easier selection of streams- Add buffer protocol support to Packet
Fixes:
- Fix bug when using Python IO on files larger than 2GB (#109 by @xxr3376)
- Fix usage of changed Pillow API
Known Issues:
- VideoFrame is suspected to leak memory in narrow cases on Linux (#128)
- fix library search path for current Libav/Ubuntu 14.04 (#97)
- explicitly include all sources to combat 0.2.3 release problem (#100)
Warning
There was an issue with the PyPI distribution in which it required Cython to be installed.
Major:
- Python IO.
- Agressively releases GIL
- Add experimental Windows build (#84)
Minor:
- Several new Stream/Packet/Frame attributes
Fixes:
- Fix segfault in audio handling (#86 and #93)
- Fix use of PIL/Pillow API (#85)
- Fix bad assumptions about plane counts (#76)
- Cythonization in setup.py; mostly a development issue.
- Fix for av.InputContainer.size over 2**31.
- Python 3 compatibility!
- Build process fails if missing libraries.
- Fix linking of libavdevices.
Warning
This version has an issue linking in libavdevices, and very likely will not work for you.
It sure has been a long time since this was released, and there was a lot of arbitrary changes that come with us wrapping an API as we are discovering it. Changes include, but are not limited to:
- Audio encoding.
- Exposing planes and buffers.
- Descriptors for channel layouts, video and audio formats, etc..
- Seeking.
- Many many more properties on all of the objects.
- Device support (e.g. webcams).
- FIRST PUBLIC RELEASE!
- Container/video/audio formats.
- Audio layouts.
- Decoding video/audio/subtitles.
- Encoding video.
- Audio FIFOs and resampling.