mirror of https://git.ffmpeg.org/ffmpeg.git
avutil/frame: make frame copy functions hwframe aware
This commit is contained in:
parent
b06ae06e6a
commit
77d5ea1c7c
|
@ -25,6 +25,7 @@
|
||||||
#include "imgutils.h"
|
#include "imgutils.h"
|
||||||
#include "mem.h"
|
#include "mem.h"
|
||||||
#include "samplefmt.h"
|
#include "samplefmt.h"
|
||||||
|
#include "hwcontext.h"
|
||||||
|
|
||||||
#if FF_API_FRAME_GET_SET
|
#if FF_API_FRAME_GET_SET
|
||||||
MAKE_ACCESSORS(AVFrame, frame, int64_t, best_effort_timestamp)
|
MAKE_ACCESSORS(AVFrame, frame, int64_t, best_effort_timestamp)
|
||||||
|
@ -626,6 +627,10 @@ int av_frame_make_writable(AVFrame *frame)
|
||||||
tmp.channels = frame->channels;
|
tmp.channels = frame->channels;
|
||||||
tmp.channel_layout = frame->channel_layout;
|
tmp.channel_layout = frame->channel_layout;
|
||||||
tmp.nb_samples = frame->nb_samples;
|
tmp.nb_samples = frame->nb_samples;
|
||||||
|
|
||||||
|
if (frame->hw_frames_ctx)
|
||||||
|
ret = av_hwframe_get_buffer(frame->hw_frames_ctx, &tmp, 0);
|
||||||
|
else
|
||||||
ret = av_frame_get_buffer(&tmp, 32);
|
ret = av_frame_get_buffer(&tmp, 32);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -752,6 +757,9 @@ static int frame_copy_video(AVFrame *dst, const AVFrame *src)
|
||||||
dst->height < src->height)
|
dst->height < src->height)
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
|
|
||||||
|
if (src->hw_frames_ctx || dst->hw_frames_ctx)
|
||||||
|
return av_hwframe_transfer_data(dst, src, 0);
|
||||||
|
|
||||||
planes = av_pix_fmt_count_planes(dst->format);
|
planes = av_pix_fmt_count_planes(dst->format);
|
||||||
for (i = 0; i < planes; i++)
|
for (i = 0; i < planes; i++)
|
||||||
if (!dst->data[i] || !src->data[i])
|
if (!dst->data[i] || !src->data[i])
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 56
|
#define LIBAVUTIL_VERSION_MAJOR 56
|
||||||
#define LIBAVUTIL_VERSION_MINOR 42
|
#define LIBAVUTIL_VERSION_MINOR 42
|
||||||
#define LIBAVUTIL_VERSION_MICRO 101
|
#define LIBAVUTIL_VERSION_MICRO 102
|
||||||
|
|
||||||
#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, \
|
||||||
|
|
Loading…
Reference in New Issue