File: CHANGELOG.rst

package info (click to toggle)
python-av 16.1.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,728 kB
  • sloc: python: 8,059; sh: 181; ansic: 174; makefile: 140
file content (968 lines) | stat: -rw-r--r-- 30,587 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
Changelog
=========

We are operating with `semantic versioning <https://semver.org>`_.

..
    Please try to update this file in the commits that make the changes.

    To make merging/rebasing easier, we don't manually break lines in here
    when they are too long, so any particular change is just one line.

    To make tracking easier, please add either ``closes #123`` or ``fixes #123``
    to the first line of the commit message. There are more syntaxes at:
    <https://blog.github.com/2013-01-22-closing-issues-via-commit-messages/>.

    Note that they these tags will not actually close the issue/PR until they
    are merged into the "default" branch.


v16.1.0
-------

Features:

- Add support for Intel QSV codecs by :gh-user:`ladaapp`.
- Add AMD AMF hardware decoding by :gh-user:`ladaapp2`.
- Add subtitle encoding support by :gh-user:`skeskinen` in (:pr:`2050`).
- Add read/write access to PacketSideData by :gh-user:`skeskinen` in (:pr:`2051`).
- Add yuv422p support for video frame to_ndarray and from_ndarray by :gh-user:`wader` in (:pr:`2054`).
- Add binding for ``avcodec_find_best_pix_fmt_of_list()`` by :gh-user:`ndeybach` (:pr:`2058`).

Fixes:

- Fix #2036, #2053, #2057 by :gh-user:`WyattBlue`.

v16.0.1
-------

Fixes:

- Add new hwaccel enums by :gh-user:`WyattBlue` in (:pr:`2030`).

v16.0.0
-------

Major:

- Drop Python 3.9, Support Python 3.14.
- Drop support for i686 Linux.

Features:

- Add ``Filter.Context.process_command()`` method by :gh-user:`caffeinism` in (:pr:`2000`).
- Add packet side-data handling mechanism by :gh-user:`tikuma-lsuhsc` in (:pr:`2003`).
- Implemented set_chapters method by :gh-user:`DE-AI` in (:pr:`2004`).
- Declare free-threaded support and support 3.13t by :gh-user:`ngoldbaum` in (:pr:`2005`).
- Add writable and copyable attachment and data streams by :gh-user:`skeskinen` in (:pr:`2026`).

Fixes:

- Declare free-threaded support and support 3.13t by :gh-user:`ngoldbaum` in (:pr:`2005`).
- Allow ``None`` in ``FilterContext.push()`` type stub by :gh-user:`velsinki` in (:pr:`2015`).
- Fix typos

v15.1.0
-------

Features:

- Support FFmpeg 8
- Make the `Frame.key_frame` flag writable.

v15.0.0
-------

Major:

- Make ``SubtitleStream.decode()`` return the list of subtitles directly, making the API nicer.
- Drop support for MacOS 12 or under.
- Binary wheels: Remove libxml2 because of security concerns.
- Binary wheels: Remove xz because lzma encoding is very niche in media decoding and lesser security concerns.

Features:

- Add GBRP, GBRAP, RGBA formats by :gh-user:`z-khan`.
- Add ``VideoFrame.save()``, a convenient way to save frames to PNGs or JPEGs, by :gh-user:`WyattBlue`.

Fixes:

- Binary wheels: Re-enable libx265, use version 4.1 by :gh-user:`WyattBlue`.
- Fix memory error for AudioFifo properties by :gh-user:`zzjjbb`.
- Copy template flags if creating a new Codec object by :gh-user:`WyattBlue`
- ``AudioFrame.from_ndarray()``: Support python classes for parameters too, by :gh-user:`WyattBlue`.

v14.4.0
-------

Features:

- Expose the duration field for frames by :gh-user:`Queuecumber` in (:pr:`1880`).
- Add support for BGR48 and BGRA64 pixel formats by :gh-user:`z-khan` in (:pr:`1873`).

Fixes:

- Fix security vulnerabilities in binary wheels by :gh-user:`jlaine` in (:pr:`1896`).

v14.3.0
-------

Features:

- Support yuv420p10le in numpy conversion by :gh-user:`tsnl` in (:pr:`1833`).
- Add typing overloads for ``CodecContext.create`` by :gh-user:`jlaine` in (:pr:`1853`).
- Provide binary wheels for musl-based distros such as Alpine by :gh-user:`jlaine` in (:pr:`1856`).

Fixes:

- Fix ``Packet.dts`` typing by :gh-user:`daveisfera` in (:pr:`1815`).
- Use Python 3 compatible stderr logging by :gh-user:`pmarcelll` in (:pr:`1832`).
- Uses ffmpeg 7.1.1, fixes deadlocks.

v14.2.0
-------

Features:

- Add support for external flags in hwacccel by :gh-user:`materight` in (:pr:`1751`).
- Add Bayer pixel formats by :gh-user:`z-khan` in (:pr:`1755`).
- Add support for yuv422p10le pix_fmt by :gh-user:`WyattBlue` in (:pr:`1767`).
- Add ``supported_np_pix_fmts`` by :gh-user:`WyattBlue` in (:pr:`1766`).
- Add ``Codec.canonical_name`` by :gh-user:`WyattBlue`.

Misc:

- Drop support for MacOS 11 by :gh-user:`WyattBlue` in (:pr:`1764`).
- Set default bitrate to 0, allowing variable bitrate by :gh-user:`WyattBlue`.


v14.1.0
-------

Features:

- Add hardware decoding by :gh-user:`matthewlai` and :gh-user:`WyattBlue` in (:pr:`1685`).
- Add ``Stream.disposition`` and ``Disposition`` enum by :gh-user:`WyattBlue` in (:pr:`1720`).
- Add ``VideoFrame.rotation`` by :gh-user:`lgeiger` in (:pr:`1675`).
- Support grayf32le and gbrapf32le in numpy conversion by :gh-user:`robinechuca` in (:pr:`1712`).
- Support yuv[a]p16 formats in numpy conversion by :gh-user:`robinechuca` in (:pr:`1722`).

v14.0.1
-------

Fixes:

- Include header files in source distribution by :gh-user:`hmaarrfk` in (:pr:`1662`).
- Cleanup ``AVStream.side_data`` leftovers by :gh-user:`lgeiger` in (:pr:`1674`).
- Address :issue:`1663` by :gh-user:`WyattBlue`.
- Make ``mp3`` work with ``OutputContainer.add_stream_from_template()``.

v14.0.0
-------

Major:

- Drop FFmpeg 6.
- Drop support for MacOS <11 in our binary wheels.
- Deleted PyAV's custom Enum class in favor of Python's standard Enums.
- Remove ``CodecContext.close()``  and ``Stream.side_data`` because it's deprecated in ffmpeg.
- Remove ``AVError`` alias (use ``FFmpegError`` directly instead).
- Remove the `template` arg from ``OutputContainer.add_stream()``.

Features:

- Add ``OutputContainer.add_stream_from_template()`` by :gh-user:`WyattBlue` and :gh-user:`cdce8p`.
- Add ``OutputContainer.add_data_stream()`` by :gh-user:`WyattBlue`.
- Add ``filter.loudnorm.stats()`` function that returns the stats of loudnorm for 2-pass filtering by :gh-user:`WyattBlue`.
- Add ``qmin`` and ``qmax`` parameters to the ``VideoCodecContext`` by :gh-user:`davidplowman` in (:pr:`1618`).
- Allow the profile of a codec to be set as well as queried by :gh-user:`davidplowman` in (:pr:`1625`).

Fixes:

- Make ``VideoFrame.from_numpy_buffer()`` support buffers with padding by :gh-user:`davidplowman` in (:pr:`1635`).
- Correct ``Colorspace``'s lowercase enums.
- Updated ``sidedata.Type`` enum.
- Ensure streams in StreamContainer are released. Fixes :issue:`1599`.

v13.1.0
-------

Features:

- Allow passing Python objects around using `Frame.opaque` and `Packet.opaque` by :gh-user:`CarlosRDomin` and :gh-user:`WyattBlue` in (:pr:`1533`).
- Allow extradata to be set by encoders by :gh-user:`daveisfera` in (:pr:`1526`).
- Add getting ffmpeg version info string by :gh-user:`hmaarrfk` in (:pr:`1564`).

Fixes:

- Remove the `deprecation` module in anticipation of `PEP 702 <https://peps.python.org/pep-0702/>`_.
- Add type stubs to previously unannotated API sections.
- Improve type stubs for both `mypy` and `mypy --strict`.
- Permit only setting `time_base` with a Fraction, as mypy is unable to respect different types in getters vs setters.
- Declare `write_packet` function as const by :gh-user:`hmaarrfk` in (:pr:`1517`).

v13.0.0
-------

Major:

- Drop FFmpeg 5, Support FFmpeg 7.
- Drop Python 3.8, Support Python 3.13.
- Update FFmpeg to 7.0.2 for the binary wheels.
- Disallow initializing an AudioLayout object with an int.
- Disallow accessing gop_size, timebase as a decoder (Raised deprecation warning before).
- Remove `ticks_per_frame` property because it was deprecated in FFmpeg.

Features:

- Add AttachmentStream class.
- Add `best()` method to StreamContainer.
- Add `set_audio_frame_size()` method to Graph object.
- Add `nb_channels` property to AudioLayout object.
- Add `from_bytes()` method to VideoFrame object.

Fixes:

- Fix VideoCC's repl breaking when `self._format` is None.
- Fix getting `pix_fmt` property when VideoCC's `self._format` is None.

v12.3.0
-------

Features:

- Support libav's `av_log_set_level` by :gh-user:`materight` in (:pr:`1448`).
- Add Graph.link_nodes by :gh-user:`WyattBlue` in (:pr:`1449`).
- Add default codec properties by :gh-user:`WyattBlue` in (:pr:`1450`).
- Remove the xvid and ass packages in ffmpeg binaries because they were unused by :gh-user:`WyattBlue` in (:pr:`1462`).
- Add supported_codecs property to OutputContainer by :gh-user:`WyattBlue` in (:pr:`1465`).
- Add text and dialogue property to AssSubtitle, remove TextSubtitle by :gh-user:`WyattBlue` in (:pr:`1456`).

Fixes:

- Include libav headers in final distribution by :gh-user:`materight` in (:pr:`1455`).
- Fix segfault when calling subtitle_stream.decode() by :gh-user:`WyattBlue` in (:pr:`1460`).
- flushing subtitle decoder requires a new uninitialized packet by :gh-user:`moonsikpark` in (:pr:`1461`).
- Set default color range for VideoReformatter.format() by :gh-user:`elxy` in (:pr:`1458`).
- Resampler: format, layout accepts `str` `int` too by :gh-user:`WyattBlue` in (:pr:`1446`).

v12.2.0
-------

Features:

- Add a `make_writable` method to `Frame` instances (:issue:`1414`).
- Use `av_guess_sample_aspect_ratio` to report sample and display aspect ratios.

Fixes:

- Fix a crash when assigning an `AudioLayout` to `AudioCodecContext.layout` (:issue:`1434`).
- Remove a circular reference which caused `AudioSampler` to occupy memory until garbage collected (:issue:`1429`).
- Fix more type stubs, remove incorrect `__init__.pyi`.

v12.1.0
-------

Features:

- Build binary wheels with webp support.
- Allow disabling logs, disable logs by default.
- Add bitstream filters by :gh-user:`skeskinen` in (:pr:`1379` :issue:`1375`).
- Expose CodecContext flush_buffers by :gh-user:`skeskinen` in (:pr:`1382`).

Fixes:

- Fix type stubs, add missing type stubs.
- Add S12M_TIMECODE by :gh-user:`WyattBlue` in (:pr:`1381`).
- Subtitle.text now returns bytes by :gh-user:`WyattBlue` in (:pr:`1398`).
- Allow packet.duration to be writable by :gh-user:`WyattBlue` in (:pr:`1399`).
- Remove deprecated `VideoStream.frame_rate` by :gh-user:`WyattBlue` in (:pr:`1351`).
- Build with Arm for PyPy now by :gh-user:`WyattBlue` in (:pr:`1395`).
- Fix #1378 by :gh-user:`WyattBlue` in (:pr:`1400`).
- setup.py: use PKG_CONFIG env var to get the pkg-config to use by :gh-user:`Artturin` in (:pr:`1387`).

v12.0.0
-------

Major:

- Add type hints.
- Update FFmpeg to 6.1.1 for the binary wheels.
- Update libraries for the binary wheels (notably dav1d to 1.4.1).
- Deprecate VideoCodecContext.gop_size for decoders by :gh-user:`JoeSchiff` in (:pr:`1256`).
- Deprecate frame.index by :gh-user:`JoeSchiff` in (:pr:`1218`).

Features:

- Allow using pathlib.Path for av.open by :gh-user:`WyattBlue` in (:pr:`1231`).
- Add `max_b_frames` property to CodecContext by :gh-user:`davidplowman` in (:pr:`1119`).
- Add `encode_lazy` method to CodecContext by :gh-user:`rawler` in (:pr:`1092`).
- Add `color_range` to CodecContext/Frame by :gh-user:`johanjeppsson` in (:pr:`686`).
- Set `time_base` for AudioResampler by :gh-user:`daveisfera` in (:issue:`1209`).
- Add support for ffmpeg's AVCodecContext::delay by :gh-user:`JoeSchiff` in (:issue:`1279`).
- Add `color_primaries`, `color_trc`, `colorspace` to VideoStream by :gh-user:`WyattBlue` in (:pr:`1304`).
- Add `bits_per_coded_sample` to VideoCodecContext by :gh-user:`rvanlaar` in (:pr:`1203`).
- AssSubtitle.ass now returns as bytes by :gh-user:`WyattBlue` in (:pr:`1333`).
- Expose DISPLAYMATRIX side data by :gh-user:`hyenal` in (:pr:`1249`).

Fixes:

- Convert deprecated Cython extension class properties to decorator syntax by :gh-user:`JoeSchiff`.
- Check None packet when setting time_base after decode by :gh-user:`philipnbbc` in (:pr:`1281`).
- Remove deprecated `Buffer.to_bytes` by :gh-user:`WyattBlue` in (:pr:`1286`).
- Remove deprecated `Packet.decode_one` by :gh-user:`WyattBlue` in (:pr:`1301`).

v11.0.0
-------

Major:

- Add support for FFmpeg 6.0, drop support for FFmpeg < 5.0.
- Add support for Python 3.12, drop support for Python < 3.8.
- Build binary wheels against libvpx 1.13.1 to fix CVE-2023-5217.
- Build binary wheels against FFmpeg 6.0.

Features:

- Add support for the `ENCODER_FLUSH` encoder flag (:issue:`1067`).
- Add VideoFrame ndarray operations for yuv444p/yuvj444p formats (:issue:`788`).
- Add setters for `AVFrame.dts`, `AVPacket.is_keyframe` and `AVPacket.is_corrupt` (:issue:`1179`).

Fixes:

- Fix build using Cython 3 (:issue:`1140`).
- Populate new streams with codec parameters (:issue:`1044`).
- Explicitly set `python_requires` to avoid installing on incompatible Python (:issue:`1057`).
- Make `AudioFifo.__repr__` safe before the first frame (:issue:`1130`).
- Guard input container members against use after closes (:issue:`1137`).

v10.0.0
-------

Major:

- Add support for FFmpeg 5.0 and 5.1 (:issue:`817`).
- Drop support for FFmpeg < 4.3.
- Deprecate `CodecContext.time_base` for decoders (:issue:`966`).
- Deprecate `VideoStream.framerate` and `VideoStream.rate` (:issue:`1005`).
- Stop proxying `Codec` from `Stream` instances (:issue:`1037`).

Features:

- Update FFmpeg to 5.1.2 for the binary wheels.
- Provide binary wheels for Python 3.11 (:issue:`1019`).
- Add VideoFrame ndarray operations for gbrp formats (:issue:`986`).
- Add VideoFrame ndarray operations for gbrpf32 formats (:issue:`1028`).
- Add VideoFrame ndarray operations for nv12 format (:issue:`996`).

Fixes:

- Fix conversion to numpy array for multi-byte formats (:issue:`981`).
- Safely iterate over filter pads (:issue:`1000`).

v9.2.0
------

Features:

- Update binary wheels to enable libvpx support.
- Add an `io_open` argument to `av.open` for multi-file custom I/O.
- Add support for AV_FRAME_DATA_SEI_UNREGISTERED (:issue:`723`).
- Ship .pxd files to allow other libraries to `cimport av` (:issue:`716`).

Fixes:

- Fix an `ImportError` when using Python 3.8/3.9 via Conda (:issue:`952`).
- Fix a muxing memory leak which was introduced in v9.1.0 (:issue:`959`).

v9.1.1
------

Fixes:

- Update binary wheels to update dependencies on Windows, disable ALSA on Linux.

v9.1.0
------

Features:

- Add VideoFrame ndarray operations for rgb48be, rgb48le, rgb64be, rgb64le pixel formats.
- Add VideoFrame ndarray operations for gray16be, gray16le pixel formats (:issue:`674`).
- Make it possible to use av.open() on a pipe (:issue:`738`).
- Use the "ASS without timings" format when decoding subtitles.

Fixes:

- Update binary wheels to fix security vulnerabilities (:issue:`921`) and enable ALSA on Linux (:issue:`941`).
- Fix crash when closing an output container an encountering an I/O error (:issue:`613`).
- Fix crash when probing corrupt raw format files (:issue:`590`).
- Fix crash when manipulating streams with an unknown codec (:issue:`689`).
- Remove obsolete KEEP_SIDE_DATA and MP4A_LATM flags which are gone in FFmpeg 5.0.
- Deprecate `to_bytes()` method of Packet, Plane and SideData, use `bytes(packet)` instead.

v9.0.2
------

Minor:

- Update FFmpeg to 4.4.1 for the binary wheels.
- Fix framerate when writing video with FFmpeg 4.4 (:issue:`876`).

v9.0.1
------

Minor:

- Update binary wheels to fix security vulnerabilities (:issue:`901`).

v9.0.0
------

Major:

- Re-implement AudioResampler with aformat and buffersink (:issue:`761`).
  AudioResampler.resample() now returns a list of frames.
- Remove deprecated methods: AudioFrame.to_nd_array, VideoFrame.to_nd_array and Stream.seek.

Minor:

- Provide binary wheels for macOS/arm64 and Linux/aarch64.
- Simplify setup.py, require Cython.
- Update the installation instructions in favor of PyPI.
- Fix VideoFrame.to_image with height & width (:issue:`878`).
- Fix setting Stream time_base (:issue:`784`).
- Replace deprecated av_init_packet with av_packet_alloc (:issue:`872`).
- Validate pixel format in VideoCodecContext.pix_fmt setter (:issue:`815`).
- Fix AudioFrame ndarray conversion endianness (:issue:`833`).
- Improve time_base support with filters (:issue:`765`).
- Allow flushing filters by sending `None` (:issue:`886`).
- Avoid unnecessary vsnprintf() calls in log_callback() (:issue:`877`).
- Make Frame.from_ndarray raise ValueError instead of AssertionError.

v8.1.0
------

Minor:

- Update FFmpeg to 4.3.2 for the binary wheels.
- Provide binary wheels for Python 3.10 (:issue:`820`).
- Stop providing binary wheels for end-of-life Python 3.6.
- Fix args order in Frame.__repr__ (:issue:`749`).
- Fix documentation to remove unavailable QUIET log level (:issue:`719`).
- Expose codec_context.codec_tag (:issue:`741`).
- Add example for encoding with a custom PTS (:issue:`725`).
- Use av_packet_rescale_ts in Packet._rebase_time() (:issue:`737`).
- Do not hardcode errno values in test suite (:issue:`729`).
- Use av_guess_format for output container format (:issue:`691`).
- Fix setting CodecContext.extradata (:issue:`658`, :issue:`740`).
- Fix documentation code block indentation (:issue:`783`).
- Fix link to Conda installation instructions (:issue:`782`).
- Export AudioStream from av.audio (:issue:`775`).
- Fix setting CodecContext.extradata (:issue:`801`).

v8.0.3
------

Minor:

- Update FFmpeg to 4.3.1 for the binary wheels.

v8.0.2
------

Minor:

- Enable GnuTLS support in the FFmpeg build used for binary wheels (:issue:`675`).
- Make binary wheels compatible with Mac OS X 10.9+ (:issue:`662`).
- Drop Python 2.x buffer protocol code.
- Remove references to previous repository location.

v8.0.1
------

Minor:

- Enable additional FFmpeg features in the binary wheels.
- Use os.fsencode for both input and output file names (:issue:`600`).

v8.0.0
------

Major:

- Drop support for Python 2 and Python 3.4.
- Provide binary wheels for Linux, Mac and Windows.

Minor:

- Remove shims for obsolete FFmpeg versions (:issue:`588`).
- Add yuvj420p format for :meth:`VideoFrame.from_ndarray` and :meth:`VideoFrame.to_ndarray` (:issue:`583`).
- Add support for palette formats in :meth:`VideoFrame.from_ndarray` and :meth:`VideoFrame.to_ndarray` (:issue:`601`).
- Fix Python 3.8 deprecation warning related to abstract base classes (:issue:`616`).
- Remove ICC profiles from logos (:issue:`622`).

Fixes:

- Avoid infinite timeout in :func:`av.open` (:issue:`589`).

v7.0.1
------

Fixes:

- Removed deprecated ``AV_FRAME_DATA_QP_TABLE_*`` enums. (:issue:`607`)


v7.0.0
------

Major:

- Drop support for FFmpeg < 4.0. (:issue:`559`)
- Introduce per-error exceptions, and mirror the builtin exception hierarchy. It is recommended to examine your error handling code, as common FFmpeg errors will result in `ValueError` baseclasses now. (:issue:`563`)
- Data stream's `encode` and `decode` return empty lists instead of none allowing common API use patterns with data streams.
- Remove ``whence`` parameter from :meth:`InputContainer.seek` as non-time seeking doesn't seem to actually be supported by any FFmpeg formats.

Minor:

- Users can disable the logging system to avoid lockups in sub-interpreters. (:issue:`545`)
- Filters support audio in general, and a new :meth:`.Graph.add_abuffer`. (:issue:`562`)
- :func:`av.open` supports `timeout` parameters. (:issue:`480` and :issue:`316`)
- Expose :attr:`Stream.base_rate` and :attr:`Stream.guessed_rate`. (:issue:`564`)
- :meth:`.VideoFrame.reformat` can specify interpolation.
- Expose many sets of flags.

Fixes:

- Fix typing in :meth:`.CodecContext.parse` and make it more robust.
- Fix wrong attribute in ByteSource. (:issue:`340`)
- Remove exception that would break audio remuxing. (:issue:`537`)
- Log messages include last FFmpeg error log in more helpful way.
- Use AVCodecParameters so FFmpeg doesn't complain. (:issue:`222`)


v6.2.0
------

Major:

- Allow :meth:`av.open` to be used as a context manager.
- Fix compatibility with PyPy, the full test suite now passes. (:issue:`130`)

Minor:

- Add :meth:`.InputContainer.close` method. (:issue:`317`, :issue:`456`)
- Ensure audio output gets flushes when using a FIFO. (:issue:`511`)
- Make Python I/O buffer size configurable. (:issue:`512`)
- Make :class:`.AudioFrame` and :class:`VideoFrame` more garbage-collector friendly by breaking a reference cycle. (:issue:`517`)

Build:

- Do not install the `scratchpad` package.


v6.1.2
------

Micro:

- Fix a numpy deprecation warning in :meth:`.AudioFrame.to_ndarray`.


v6.1.1
------

Micro:

- Fix alignment in :meth:`.VideoFrame.from_ndarray`. (:issue:`478`)
- Fix error message in :meth:`.Buffer.update`.

Build:

- Fix more compiler warnings.


v6.1.0
------

Minor:

- ``av.datasets`` for sample data that is pulled from either FFmpeg's FATE suite, or our documentation server.
- :meth:`.InputContainer.seek` gets a ``stream`` argument to specify the ``time_base`` the requested ``offset`` is in.

Micro:

- Avoid infinite look in ``Stream.__getattr__``. (:issue:`450`)
- Correctly handle Python I/O with no ``seek`` method.
- Remove ``Datastream.seek`` override (:issue:`299`)

Build:

- Assert building against compatible FFmpeg. (:issue:`401`)
- Lock down Cython language level to avoid build warnings. (:issue:`443`)

Other:

- Incremental improvements to docs and tests.
- Examples directory will now always be runnable as-is, and embedded in the docs (in a copy-pastable form).


v6.0.0
------

Major:

- Drop support for FFmpeg < 3.2.
- Remove ``VideoFrame.to_qimage`` method, as it is too tied to PyQt4. (:issue:`424`)

Minor:

- Add support for all known sample formats in :meth:`.AudioFrame.to_ndarray` and add :meth:`.AudioFrame.to_ndarray`. (:issue:`422`)
- Add support for more image formats in :meth:`.VideoFrame.to_ndarray` and :meth:`.VideoFrame.from_ndarray`. (:issue:`415`)

Micro:

- Fix a memory leak in :meth:`.OutputContainer.mux_one`. (:issue:`431`)
- Ensure :meth:`.OutputContainer.close` is called at destruction. (:issue:`427`)
- Fix a memory leak in :class:`.OutputContainer` initialisation. (:issue:`427`)
- Make all video frames created by PyAV use 8-byte alignment. (:issue:`425`)
- Behave properly in :meth:`.VideoFrame.to_image` and :meth:`.VideoFrame.from_image` when ``width != line_width``. (:issue:`425`)
- Fix manipulations on video frames whose width does not match the line stride. (:issue:`423`)
- Fix several :attr:`.Plane.line_size` misunderstandings. (:issue:`421`)
- Consistently decode dictionary contents. (:issue:`414`)
- Always use send/recv en/decoding mechanism. This removes the ``count`` parameter, which was not used in the send/recv pipeline. (:issue:`413`)
- Remove various deprecated iterators. (:issue:`412`)
- Fix a memory leak when using Python I/O. (:issue:`317`)
- Make :meth:`.OutputContainer.mux_one` call `av_interleaved_write_frame` with the GIL released.

Build:

- Remove the "reflection" mechanism, and rely on FFmpeg version we build against to decide which methods to call. (:issue:`416`)
- Fix many more ``const`` warnings.


v0.x.y
------

.. note::

    Below here we used ``v0.x.y``.

    We incremented ``x`` to signal a major change (i.e. backwards
    incompatibilities) and incremented ``y`` as a minor change (i.e. backwards
    compatible features).

    Once we wanted more subtlety and felt we had matured enough, we jumped
    past the implications of ``v1.0.0`` straight to ``v6.0.0``
    (as if we had not been stuck in ``v0.x.y`` all along).


v0.5.3
------

Minor:

- Expose :attr:`.VideoFrame.pict_type` as :class:`.PictureType` enum.
  (:pr:`402`)
- Expose :attr:`.Codec.video_rates` and :attr:`.Codec.audio_rates`.
  (:pr:`381`)

Patch:

- Fix :attr:`.Packet.time_base` handling during flush.
  (:pr:`398`)
- :meth:`.VideoFrame.reformat` can throw exceptions when requested colorspace
  transforms aren't possible.
- Wrapping the stream object used to overwrite the ``pix_fmt`` attribute.
  (:pr:`390`)

Runtime:

- Deprecate ``VideoFrame.ptr`` in favour of :attr:`VideoFrame.buffer_ptr`.
- Deprecate ``Plane.update_buffer()`` and ``Packet.update_buffer`` in favour of
  :meth:`.Plane.update`.
  (:pr:`407`)
- Deprecate ``Plane.update_from_string()`` in favour of :meth:`.Plane.update`.
  (:pr:`407`)
- Deprecate ``AudioFrame.to_nd_array()`` and ``VideoFrame.to_nd_array()`` in
  favour of :meth:`.AudioFrame.to_ndarray` and :meth:`.VideoFrame.to_ndarray`.
  (:pr:`404`)

Build:

- CI covers more cases, including macOS.
  (:pr:`373` and :pr:`399`)
- Fix many compilation warnings.
  (:issue:`379`, :pr:`380`, :pr:`387`, and :pr:`388`)

Docs:

- Docstrings for many commonly used attributes.
  (:pr:`372` and :pr:`409`)


v0.5.2
------

Build:

- Fixed Windows build, which broke in v0.5.1.
- Compiler checks are not cached by default. This behaviour is retained if you
  ``source scripts/activate.sh`` to develop PyAV.
  (:issue:`256`)
- Changed to ``PYAV_SETUP_REFLECT_DEBUG=1`` from ``PYAV_DEBUG_BUILD=1``.


v0.5.1
------

Build:

- Set ``PYAV_DEBUG_BUILD=1`` to force a verbose reflection (mainly for being
  installed via ``pip``, which is why this is worth a release).


v0.5.0
------

Major:

- Dropped support for Libav in general.
  (:issue:`110`)
- No longer uses libavresample.

Minor:

- ``av.open`` has ``container_options`` and ``stream_options``.
- ``Frame`` includes ``pts`` in ``repr``.

Patch:

- EnumItem's hash calculation no longer overflows.
  (:issue:`339`, :issue:`341` and :issue:`342`.)
- Frame.time_base was not being set in most cases during decoding.
  (:issue:`364`)
- CodecContext.options no longer needs to be manually initialized.
- CodexContext.thread_type accepts its enums.


v0.4.1
------

Minor:

- Add `Frame.interlaced_frame` to indicate if the frame is interlaced.
  (:issue:`327` by :gh-user:`MPGek`)
- Add FLTP support to ``Frame.to_nd_array()``.
  (:issue:`288` by :gh-user:`rawler`)
- Expose ``CodecContext.extradata`` for codecs that have extra data, e.g.
  Huffman tables.
  (:issue:`287` by :gh-user:`adavoudi`)

Patch:

- Packets retain their refcount after muxing.
  (:issue:`334`)
- `Codec` construction is more robust to find more codecs.
  (:issue:`332` by :gh-user:`adavoudi`)
- Refined frame corruption detection.
  (:issue:`291` by :gh-user:`Litterfeldt`)
- Unicode filenames are okay.
  (:issue:`82`)


v0.4.0
------

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`` and ``AudioResampler`` will raise ``ValueError`` if input frames
  inconsistent ``pts``.
- ``time_base`` use has been revisited across the codebase, and may not be converted
  between ``Stream.time_base`` and ``CodecContext.time_base`` at the same times
  in the transcoding pipeline.
- ``CodecContext.rate`` has been removed, but proxied to ``VideoCodecContext.framerate``
  and ``AudioCodecContext.sample_rate``. The definition is effectively inverted from
  the old one (i.e. for 24fps it used to be ``1/24`` and is now ``24/1``).
- Fractions (e.g. ``time_base``, ``rate``) will be ``None`` if they are invalid.
- ``InputContainer.seek`` and ``Stream.seek`` will raise TypeError if given
  a float, when previously they converted it from seconds.

Minor:

- Added ``Packet.is_keyframe`` and ``Packet.is_corrupt``.
  (:issue:`226`)
- Many more ``time_base``, ``pts`` and other attributes are writable.
- ``Option`` exposes much more of the API (but not get/set).
  (:issue:`243`)
- Expose metadata encoding controls.
  (:issue:`250`)
- Expose ``CodecContext.skip_frame``.
  (:issue:`259`)

Patch:

- Build doesn't fail if you don't have git installed.
  (:issue:`184`)
- Developer environment works better with Python3.
  (:issue:`248`)
- Fix Container deallocation resulting in segfaults.
  (:issue:`253`)


v0.3.3
------

Patch:

- Fix segfault due to buffer overflow in handling of stream options.
  (:issue:`163` and :issue:`169`)
- Fix segfault due to seek not properly checking if codecs were open before
  using avcodec_flush_buffers.
  (:issue:`201`)


v0.3.2
------

Minor:

- Expose basics of avfilter via ``Filter``.
- Add ``Packet.time_base``.
- Add ``AudioFrame.to_nd_array`` to match same on ``VideoFrame``.
- Update Windows build process.

Patch:

- Further improvements to the logging system.
  (:issue:`128`)


v0.3.1
------

Minor:

- ``av.logging.set_log_after_shutdown`` renamed to ``set_print_after_shutdown``
- Repeating log messages will be skipped, much like ffmpeg's does by default

Patch:

- Fix memory leak in logging system when under heavy logging loads while
  threading.
  (:issue:`128` with help from :gh-user:`mkassner` and :gh-user:`ksze`)


v0.3.0
------

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.
  (:issue:`115` by :gh-user:`vidartf`)
- Continuous integration on Windows via AppVeyor. (by :gh-user:`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

Patch:

- Fix bug when using Python IO on files larger than 2GB.
  (:issue:`109` by :gh-user:`xxr3376`)
- Fix usage of changed Pillow API

Known Issues:

- VideoFrame is suspected to leak memory in narrow cases on Linux.
  (:issue:`128`)


v0.2.4
------

- fix library search path for current Libav/Ubuntu 14.04.
  (:issue:`97`)
- explicitly include all sources to combat 0.2.3 release problem.
  (:issue:`100`)


v0.2.3
------

.. warning:: There was an issue with the PyPI distribution in which it required
    Cython to be installed.

Major:

- Python IO.
- Aggressively releases GIL
- Add experimental Windows build.
  (:issue:`84`)

Minor:

- Several new Stream/Packet/Frame attributes

Patch:

- Fix segfault in audio handling.
  (:issue:`86` and :issue:`93`)
- Fix use of PIL/Pillow API.
  (:issue:`85`)
- Fix bad assumptions about plane counts.
  (:issue:`76`)


v0.2.2
------

- Cythonization in setup.py; mostly a development issue.
- Fix for av.InputContainer.size over 2**31.


v0.2.1
------

- Python 3 compatibility!
- Build process fails if missing libraries.
- Fix linking of libavdevices.


v0.2.0
------

.. 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).


v0.1.0
------

- FIRST PUBLIC RELEASE!
- Container/video/audio formats.
- Audio layouts.
- Decoding video/audio/subtitles.
- Encoding video.
- Audio FIFOs and resampling.