Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
ebf8ec5b0f | |||
548242d1a1 | |||
e554c667bd | |||
e6f35a9cd8 | |||
660229d647 | |||
32860d2fb8 | |||
7fd15f2939 |
15
RELEASE_NOTES
Normal file
15
RELEASE_NOTES
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
┌────────────────────────────────────────┐
|
||||
│ RELEASE NOTES for FFmpeg 3.2 "Hypatia" │
|
||||
└────────────────────────────────────────┘
|
||||
|
||||
The FFmpeg Project proudly presents FFmpeg 3.2 "Hypatia", about 4
|
||||
months after the release of FFmpeg 3.1.
|
||||
|
||||
A complete Changelog is available at the root of the project, and the
|
||||
complete Git history on http://source.ffmpeg.org.
|
||||
|
||||
We hope you will like this release as much as we enjoyed working on it, and
|
||||
as usual, if you have any questions about it, or any FFmpeg related topic,
|
||||
feel free to join us on the #ffmpeg IRC channel (on irc.freenode.net) or ask
|
||||
on the mailing-lists.
|
2
configure
vendored
2
configure
vendored
@ -1645,7 +1645,6 @@ CONFIG_LIST="
|
||||
$PROGRAM_LIST
|
||||
$SUBSYSTEM_LIST
|
||||
fontconfig
|
||||
incompatible_libav_abi
|
||||
memalign_hack
|
||||
memory_poisoning
|
||||
neon_clobber_test
|
||||
@ -1798,7 +1797,6 @@ HAVE_LIST_CMDLINE="
|
||||
HAVE_LIST_PUB="
|
||||
bigendian
|
||||
fast_unaligned
|
||||
incompatible_libav_abi
|
||||
"
|
||||
|
||||
HEADERS_LIST="
|
||||
|
@ -38,7 +38,7 @@ PROJECT_NAME = FFmpeg
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER =
|
||||
PROJECT_NUMBER = 3.2
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
@ -5566,15 +5566,8 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt
|
||||
enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
|
||||
|
||||
attribute_deprecated
|
||||
#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
|
||||
enum AVPixelFormat avcodec_find_best_pix_fmt2(const enum AVPixelFormat *pix_fmt_list,
|
||||
enum AVPixelFormat src_pix_fmt,
|
||||
int has_alpha, int *loss_ptr);
|
||||
#else
|
||||
enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
|
||||
enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
|
||||
#endif
|
||||
|
||||
|
||||
enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
|
||||
|
||||
|
@ -57,19 +57,11 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt
|
||||
return av_find_best_pix_fmt_of_2(dst_pix_fmt1, dst_pix_fmt2, src_pix_fmt, has_alpha, loss_ptr);
|
||||
}
|
||||
|
||||
#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
|
||||
enum AVPixelFormat avcodec_find_best_pix_fmt2(const enum AVPixelFormat *pix_fmt_list,
|
||||
enum AVPixelFormat src_pix_fmt,
|
||||
int has_alpha, int *loss_ptr){
|
||||
return avcodec_find_best_pix_fmt_of_list(pix_fmt_list, src_pix_fmt, has_alpha, loss_ptr);
|
||||
}
|
||||
#else
|
||||
enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
|
||||
enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
|
||||
{
|
||||
return avcodec_find_best_pix_fmt_of_2(dst_pix_fmt1, dst_pix_fmt2, src_pix_fmt, has_alpha, loss_ptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
|
||||
enum AVPixelFormat src_pix_fmt,
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 57
|
||||
#define LIBAVCODEC_VERSION_MINOR 65
|
||||
#define LIBAVCODEC_VERSION_MINOR 64
|
||||
#define LIBAVCODEC_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVDEVICE_VERSION_MAJOR 57
|
||||
#define LIBAVDEVICE_VERSION_MINOR 2
|
||||
#define LIBAVDEVICE_VERSION_MINOR 1
|
||||
#define LIBAVDEVICE_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVFILTER_VERSION_MAJOR 6
|
||||
#define LIBAVFILTER_VERSION_MINOR 66
|
||||
#define LIBAVFILTER_VERSION_MINOR 65
|
||||
#define LIBAVFILTER_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||
|
@ -690,8 +690,10 @@ static int avisynth_read_packet_video(AVFormatContext *s, AVPacket *pkt,
|
||||
#ifdef USING_AVISYNTH
|
||||
/* Flip Planar RGB video. */
|
||||
if (avsplus && (avs_library.avs_is_planar_rgb(avs->vi) ||
|
||||
avs_library.avs_is_planar_rgba(avs->vi)))
|
||||
avs_library.avs_is_planar_rgba(avs->vi))) {
|
||||
src_p = src_p + (planeheight - 1) * pitch;
|
||||
pitch = -pitch;
|
||||
}
|
||||
#endif
|
||||
|
||||
avs_library.avs_bit_blt(avs->env, dst_p, rowsize, src_p, pitch,
|
||||
|
@ -322,17 +322,19 @@ static void end_ebml_master(AVIOContext *pb, ebml_master master)
|
||||
avio_seek(pb, pos, SEEK_SET);
|
||||
}
|
||||
|
||||
static int start_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, ebml_master *master,
|
||||
unsigned int elementid, uint64_t expectedsize)
|
||||
static int start_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, MatroskaMuxContext *mkv,
|
||||
ebml_master *master, unsigned int elementid, uint64_t expectedsize)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if ((ret = avio_open_dyn_buf(dyn_cp)) < 0)
|
||||
return ret;
|
||||
|
||||
if (pb->seekable)
|
||||
if (pb->seekable) {
|
||||
*master = start_ebml_master(pb, elementid, expectedsize);
|
||||
else
|
||||
if (mkv->write_crc && mkv->mode != MODE_WEBM)
|
||||
put_ebml_void(*dyn_cp, 6); /* Reserve space for CRC32 so position/size calculations using avio_tell() take it into account */
|
||||
} else
|
||||
*master = start_ebml_master(*dyn_cp, elementid, expectedsize);
|
||||
|
||||
return 0;
|
||||
@ -342,15 +344,16 @@ static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, Matrosk
|
||||
ebml_master master)
|
||||
{
|
||||
uint8_t *buf, crc[4];
|
||||
int size;
|
||||
int size, skip = 0;
|
||||
|
||||
if (pb->seekable) {
|
||||
size = avio_close_dyn_buf(*dyn_cp, &buf);
|
||||
if (mkv->write_crc && mkv->mode != MODE_WEBM) {
|
||||
AV_WL32(crc, av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), UINT32_MAX, buf, size) ^ UINT32_MAX);
|
||||
skip = 6; /* Skip reserved 6-byte long void element from the dynamic buffer. */
|
||||
AV_WL32(crc, av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), UINT32_MAX, buf + skip, size - skip) ^ UINT32_MAX);
|
||||
put_ebml_binary(pb, EBML_ID_CRC32, crc, sizeof(crc));
|
||||
}
|
||||
avio_write(pb, buf, size);
|
||||
avio_write(pb, buf + skip, size - skip);
|
||||
end_ebml_master(pb, master);
|
||||
} else {
|
||||
end_ebml_master(*dyn_cp, master);
|
||||
@ -465,7 +468,7 @@ static int64_t mkv_write_seekhead(AVIOContext *pb, MatroskaMuxContext *mkv)
|
||||
}
|
||||
}
|
||||
|
||||
if (start_ebml_master_crc32(pb, &dyn_cp, &metaseek, MATROSKA_ID_SEEKHEAD,
|
||||
if (start_ebml_master_crc32(pb, &dyn_cp, mkv, &metaseek, MATROSKA_ID_SEEKHEAD,
|
||||
seekhead->reserved_size) < 0) {
|
||||
currentpos = -1;
|
||||
goto fail;
|
||||
@ -541,7 +544,7 @@ static int64_t mkv_write_cues(AVFormatContext *s, mkv_cues *cues, mkv_track *tra
|
||||
int i, j, ret;
|
||||
|
||||
currentpos = avio_tell(pb);
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, &cues_element, MATROSKA_ID_CUES, 0);
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, mkv, &cues_element, MATROSKA_ID_CUES, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@ -1269,7 +1272,7 @@ static int mkv_write_tracks(AVFormatContext *s)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, &tracks, MATROSKA_ID_TRACKS, 0);
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, mkv, &tracks, MATROSKA_ID_TRACKS, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@ -1300,7 +1303,7 @@ static int mkv_write_chapters(AVFormatContext *s)
|
||||
ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_CHAPTERS, avio_tell(pb));
|
||||
if (ret < 0) return ret;
|
||||
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, &chapters, MATROSKA_ID_CHAPTERS, 0);
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, mkv, &chapters, MATROSKA_ID_CHAPTERS, 0);
|
||||
if (ret < 0) return ret;
|
||||
|
||||
editionentry = start_ebml_master(dyn_cp, MATROSKA_ID_EDITIONENTRY, 0);
|
||||
@ -1387,7 +1390,7 @@ static int mkv_write_tag_targets(AVFormatContext *s,
|
||||
ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_TAGS, avio_tell(s->pb));
|
||||
if (ret < 0) return ret;
|
||||
|
||||
start_ebml_master_crc32(s->pb, &mkv->tags_bc, tags, MATROSKA_ID_TAGS, 0);
|
||||
start_ebml_master_crc32(s->pb, &mkv->tags_bc, mkv, tags, MATROSKA_ID_TAGS, 0);
|
||||
}
|
||||
pb = mkv->tags_bc;
|
||||
|
||||
@ -1524,7 +1527,7 @@ static int mkv_write_tags(AVFormatContext *s)
|
||||
|
||||
if (mkv->tags.pos) {
|
||||
if (s->pb->seekable && !mkv->is_live)
|
||||
put_ebml_void(s->pb, avio_tell(mkv->tags_bc) + ((mkv->write_crc && mkv->mode != MODE_WEBM) ? 2 /* ebml id + data size */ + 4 /* CRC32 */ : 0));
|
||||
put_ebml_void(s->pb, avio_tell(mkv->tags_bc));
|
||||
else
|
||||
end_ebml_master_crc32(s->pb, &mkv->tags_bc, mkv, mkv->tags);
|
||||
}
|
||||
@ -1551,7 +1554,7 @@ static int mkv_write_attachments(AVFormatContext *s)
|
||||
ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_ATTACHMENTS, avio_tell(pb));
|
||||
if (ret < 0) return ret;
|
||||
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, &attachments, MATROSKA_ID_ATTACHMENTS, 0);
|
||||
ret = start_ebml_master_crc32(pb, &dyn_cp, mkv, &attachments, MATROSKA_ID_ATTACHMENTS, 0);
|
||||
if (ret < 0) return ret;
|
||||
|
||||
for (i = 0; i < s->nb_streams; i++) {
|
||||
@ -1722,7 +1725,7 @@ static int mkv_write_header(AVFormatContext *s)
|
||||
ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_INFO, avio_tell(pb));
|
||||
if (ret < 0) goto fail;
|
||||
|
||||
ret = start_ebml_master_crc32(pb, &mkv->info_bc, &mkv->info, MATROSKA_ID_INFO, 0);
|
||||
ret = start_ebml_master_crc32(pb, &mkv->info_bc, mkv, &mkv->info, MATROSKA_ID_INFO, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
pb = mkv->info_bc;
|
||||
@ -1781,7 +1784,7 @@ static int mkv_write_header(AVFormatContext *s)
|
||||
}
|
||||
}
|
||||
if (s->pb->seekable)
|
||||
put_ebml_void(s->pb, avio_tell(pb) + ((mkv->write_crc && mkv->mode != MODE_WEBM) ? 2 /* ebml id + data size */ + 4 /* CRC32 */ : 0));
|
||||
put_ebml_void(s->pb, avio_tell(pb));
|
||||
else
|
||||
end_ebml_master_crc32(s->pb, &mkv->info_bc, mkv, mkv->info);
|
||||
pb = s->pb;
|
||||
@ -2097,7 +2100,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_
|
||||
|
||||
if (mkv->cluster_pos == -1) {
|
||||
mkv->cluster_pos = avio_tell(s->pb);
|
||||
ret = start_ebml_master_crc32(s->pb, &mkv->dyn_bc, &mkv->cluster, MATROSKA_ID_CLUSTER, 0);
|
||||
ret = start_ebml_master_crc32(s->pb, &mkv->dyn_bc, mkv, &mkv->cluster, MATROSKA_ID_CLUSTER, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
put_ebml_uint(mkv->dyn_bc, MATROSKA_ID_CLUSTERTIMECODE, FFMAX(0, ts));
|
||||
@ -2105,7 +2108,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_
|
||||
}
|
||||
pb = mkv->dyn_bc;
|
||||
|
||||
relative_packet_pos = avio_tell(s->pb) - mkv->cluster.pos + avio_tell(pb);
|
||||
relative_packet_pos = avio_tell(pb);
|
||||
|
||||
if (par->codec_type != AVMEDIA_TYPE_SUBTITLE) {
|
||||
mkv_write_block(s, pb, MATROSKA_ID_SIMPLEBLOCK, pkt, keyframe);
|
||||
|
@ -32,7 +32,7 @@
|
||||
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
|
||||
// Also please add any ticket numbers that you believe might be affected here
|
||||
#define LIBAVFORMAT_VERSION_MAJOR 57
|
||||
#define LIBAVFORMAT_VERSION_MINOR 57
|
||||
#define LIBAVFORMAT_VERSION_MINOR 56
|
||||
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVRESAMPLE_VERSION_MAJOR 3
|
||||
#define LIBAVRESAMPLE_VERSION_MINOR 2
|
||||
#define LIBAVRESAMPLE_VERSION_MINOR 1
|
||||
#define LIBAVRESAMPLE_VERSION_MICRO 0
|
||||
|
||||
#define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \
|
||||
|
@ -79,7 +79,7 @@
|
||||
*/
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 55
|
||||
#define LIBAVUTIL_VERSION_MINOR 35
|
||||
#define LIBAVUTIL_VERSION_MINOR 34
|
||||
#define LIBAVUTIL_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBPOSTPROC_VERSION_MAJOR 54
|
||||
#define LIBPOSTPROC_VERSION_MINOR 2
|
||||
#define LIBPOSTPROC_VERSION_MINOR 1
|
||||
#define LIBPOSTPROC_VERSION_MICRO 100
|
||||
|
||||
#define LIBPOSTPROC_VERSION_INT AV_VERSION_INT(LIBPOSTPROC_VERSION_MAJOR, \
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#define LIBSWRESAMPLE_VERSION_MAJOR 2
|
||||
#define LIBSWRESAMPLE_VERSION_MINOR 4
|
||||
#define LIBSWRESAMPLE_VERSION_MINOR 3
|
||||
#define LIBSWRESAMPLE_VERSION_MICRO 100
|
||||
|
||||
#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBSWSCALE_VERSION_MAJOR 4
|
||||
#define LIBSWSCALE_VERSION_MINOR 3
|
||||
#define LIBSWSCALE_VERSION_MINOR 2
|
||||
#define LIBSWSCALE_VERSION_MICRO 100
|
||||
|
||||
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
||||
|
@ -1,4 +1,4 @@
|
||||
7b8662e001bfb32a4bf709f4fe620138 *tests/data/fate/rgb24-mkv.matroska
|
||||
94cce0d7d5b14b4c86e74a1ca454c5aa *tests/data/fate/rgb24-mkv.matroska
|
||||
58361 tests/data/fate/rgb24-mkv.matroska
|
||||
#tb 0: 1/10
|
||||
#media_type 0: video
|
||||
|
@ -1,6 +1,6 @@
|
||||
d23ff6ba071001256fa5073a0a528337 *./tests/data/lavf/lavf.mkv
|
||||
7c8697c324e8ad79c5ea14364a6c39b8 *./tests/data/lavf/lavf.mkv
|
||||
472759 ./tests/data/lavf/lavf.mkv
|
||||
./tests/data/lavf/lavf.mkv CRC=0xec6c3c68
|
||||
e33c89229c7d5014137c7217f4547467 *./tests/data/lavf/lavf.mkv
|
||||
9767a3b526d7e56d7400164cb888990c *./tests/data/lavf/lavf.mkv
|
||||
320603 ./tests/data/lavf/lavf.mkv
|
||||
./tests/data/lavf/lavf.mkv CRC=0xec6c3c68
|
||||
|
Reference in New Issue
Block a user