Commit 4de220d2 authored by Anton Khirnov's avatar Anton Khirnov

frame: allow align=0 (meaning automatic) for av_frame_get_buffer()

This will avoid every caller from hardcoding some specific alignment,
which may break in the future with new instruction sets.
parent f44ec22e
...@@ -13,6 +13,10 @@ libavutil: 2015-08-28 ...@@ -13,6 +13,10 @@ libavutil: 2015-08-28
API changes, most recent first: API changes, most recent first:
2017-02-xx - xxxxxxx - 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-02-xx - xxxxxxx - lavu 55.31.0 - cpu.h
Add av_cpu_max_align() for querying maximum required data alignment. Add av_cpu_max_align() for querying maximum required data alignment.
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "channel_layout.h" #include "channel_layout.h"
#include "buffer.h" #include "buffer.h"
#include "common.h" #include "common.h"
#include "cpu.h"
#include "dict.h" #include "dict.h"
#include "frame.h" #include "frame.h"
#include "imgutils.h" #include "imgutils.h"
...@@ -103,6 +104,9 @@ static int get_video_buffer(AVFrame *frame, int align) ...@@ -103,6 +104,9 @@ static int get_video_buffer(AVFrame *frame, int align)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (align <= 0)
align = av_cpu_max_align();
for (i = 0; i < 4 && frame->linesize[i]; i++) for (i = 0; i < 4 && frame->linesize[i]; i++)
frame->linesize[i] = FFALIGN(frame->linesize[i], align); frame->linesize[i] = FFALIGN(frame->linesize[i], align);
} }
......
...@@ -475,7 +475,9 @@ void av_frame_move_ref(AVFrame *dst, AVFrame *src); ...@@ -475,7 +475,9 @@ void av_frame_move_ref(AVFrame *dst, AVFrame *src);
* cases. * cases.
* *
* @param frame frame in which to store the new buffers. * @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. * @return 0 on success, a negative AVERROR on error.
*/ */
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
#define LIBAVUTIL_VERSION_MAJOR 55 #define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 31 #define LIBAVUTIL_VERSION_MINOR 31
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 1
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MINOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment