[FFmpeg-cvslog] Merge commit '4de220d2e3751c459f8739a08ac6ca52e63eba30'
James Almer
git at videolan.org
Thu Sep 28 05:34:47 EEST 2017
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Wed Sep 27 23:29:20 2017 -0300| [7aa6b8a68fce93d84c359158f198cd55324d0025] | committer: James Almer
Merge commit '4de220d2e3751c459f8739a08ac6ca52e63eba30'
* commit '4de220d2e3751c459f8739a08ac6ca52e63eba30':
frame: allow align=0 (meaning automatic) for av_frame_get_buffer()
See https://ffmpeg.org/pipermail/ffmpeg-devel/2017-September/215834.html
Merged-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7aa6b8a68fce93d84c359158f198cd55324d0025
---
doc/APIchanges | 4 ++++
libavutil/frame.c | 3 +++
libavutil/frame.h | 4 +++-
libavutil/version.h | 2 +-
4 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 4838ec3728..606ba7f6c0 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,10 @@ libavutil: 2015-08-28
API changes, most recent first:
+2017-09-27 - xxxxxxx - lavu 55.77.101 / lavu 55.31.1 - frame.h
+ Allow passing the value of 0 (meaning "automatic") as the required alignment
+ to av_frame_get_buffer().
+
2017-09-27 - xxxxxxx - lavu 55.77.100 / lavu 55.31.0 - cpu.h
Add av_cpu_max_align() for querying maximum required data alignment.
diff --git a/libavutil/frame.c b/libavutil/frame.c
index 85d89b9ed5..d5fd2932e3 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -181,6 +181,9 @@ static int get_video_buffer(AVFrame *frame, int align)
return ret;
if (!frame->linesize[0]) {
+ if (align <= 0)
+ align = 32; /* STRIDE_ALIGN. Should be av_cpu_max_align() */
+
for(i=1; i<=align; i+=i) {
ret = av_image_fill_linesizes(frame->linesize, frame->format,
FFALIGN(frame->width, i));
diff --git a/libavutil/frame.h b/libavutil/frame.h
index 013043c250..b8591a442b 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -681,7 +681,9 @@ void av_frame_move_ref(AVFrame *dst, AVFrame *src);
* cases.
*
* @param frame frame in which to store the new buffers.
- * @param align required buffer size alignment
+ * @param align Required buffer size alignment. If equal to 0, alignment will be
+ * chosen automatically for the current CPU. It is highly
+ * recommended to pass 0 here unless you know what you are doing.
*
* @return 0 on success, a negative AVERROR on error.
*/
diff --git a/libavutil/version.h b/libavutil/version.h
index 9dbcdc4a8c..dee4f5b4c5 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -81,7 +81,7 @@
#define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 77
-#define LIBAVUTIL_VERSION_MICRO 100
+#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \
======================================================================
diff --cc doc/APIchanges
index 4838ec3728,9b9f46ef49..606ba7f6c0
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@@ -15,10 -13,17 +15,14 @@@ libavutil: 2015-08-2
API changes, most recent first:
-2017-02-xx - xxxxxxx - lavu 55.31.1 - frame.h
++2017-09-27 - xxxxxxx - lavu 55.77.101 / lavu 55.31.1 - frame.h
+ Allow passing the value of 0 (meaning "automatic") as the required alignment
+ to av_frame_get_buffer().
+
-2017-02-xx - xxxxxxx - lavu 55.31.0 - cpu.h
+2017-09-27 - xxxxxxx - lavu 55.77.100 / lavu 55.31.0 - cpu.h
Add av_cpu_max_align() for querying maximum required data alignment.
-2016-xx-xx - xxxxxxx - lavf 57.11.0 - avio.h
- Add avio_context_free(). From now on it must be used for freeing AVIOContext.
-
-2017-02-01 - xxxxxxx - lavc - avcodec.h
+2017-09-26 - xxxxxxx - lavc 57.106.102 - avcodec.h
Deprecate AVCodecContext.refcounted_frames. This was useful for deprecated
API only (avcodec_decode_video2/avcodec_decode_audio4). The new decode APIs
(avcodec_send_packet/avcodec_receive_frame) always work with reference
diff --cc libavutil/frame.c
index 85d89b9ed5,aa5820c0e9..d5fd2932e3
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@@ -181,14 -99,13 +181,17 @@@ static int get_video_buffer(AVFrame *fr
return ret;
if (!frame->linesize[0]) {
- ret = av_image_fill_linesizes(frame->linesize, frame->format,
- frame->width);
- if (ret < 0)
- return ret;
-
+ if (align <= 0)
- align = av_cpu_max_align();
++ align = 32; /* STRIDE_ALIGN. Should be av_cpu_max_align() */
++
+ for(i=1; i<=align; i+=i) {
+ ret = av_image_fill_linesizes(frame->linesize, frame->format,
+ FFALIGN(frame->width, i));
+ if (ret < 0)
+ return ret;
+ if (!(frame->linesize[0] & (align-1)))
+ break;
+ }
for (i = 0; i < 4 && frame->linesize[i]; i++)
frame->linesize[i] = FFALIGN(frame->linesize[i], align);
diff --cc libavutil/version.h
index 9dbcdc4a8c,0768f9fe99..dee4f5b4c5
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@@ -78,10 -53,9 +78,10 @@@
* @{
*/
-#define LIBAVUTIL_VERSION_MAJOR 55
-#define LIBAVUTIL_VERSION_MINOR 31
-#define LIBAVUTIL_VERSION_MICRO 1
+
+#define LIBAVUTIL_VERSION_MAJOR 55
+#define LIBAVUTIL_VERSION_MINOR 77
- #define LIBAVUTIL_VERSION_MICRO 100
++#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \
More information about the ffmpeg-cvslog
mailing list