mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '7b3214d0050613bd347a2e41c9f78ffb766da25e'
* commit '7b3214d0050613bd347a2e41c9f78ffb766da25e': lavc: add a field for passing AVHWFramesContext to encoders Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
commit
7e49cdd129
|
@ -15,6 +15,9 @@ libavutil: 2015-08-28
|
|||
|
||||
API changes, most recent first:
|
||||
|
||||
2016-xx-xx - lavc 57.25.0 - avcodec.h
|
||||
Add AVCodecContext.hw_frames_ctx.
|
||||
|
||||
2016-xx-xx - lavfi 6.36.0 - avfilter.h
|
||||
xxxxxxx avfilter.h - Add AVFilterLink.hw_frames_ctx.
|
||||
xxxxxxx buffersrc.h - Add AVBufferSrcParameters and functions for handling it.
|
||||
|
|
|
@ -3361,6 +3361,18 @@ typedef struct AVCodecContext {
|
|||
AVPacketSideData *coded_side_data;
|
||||
int nb_coded_side_data;
|
||||
|
||||
/**
|
||||
* Encoding only.
|
||||
*
|
||||
* For hardware encoders configured to use a hwaccel pixel format, this
|
||||
* field should be set by the caller to a reference to the AVHWFramesContext
|
||||
* describing input frames. AVHWFramesContext.format must be equal to
|
||||
* AVCodecContext.pix_fmt.
|
||||
*
|
||||
* This field should be set before avcodec_open2() is called and is
|
||||
* afterwards owned and managed by libavcodec.
|
||||
*/
|
||||
AVBufferRef *hw_frames_ctx;
|
||||
} AVCodecContext;
|
||||
|
||||
AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx);
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "libavutil/channel_layout.h"
|
||||
#include "libavutil/crc.h"
|
||||
#include "libavutil/frame.h"
|
||||
#include "libavutil/hwcontext.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/mem_internal.h"
|
||||
|
@ -1489,6 +1490,16 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||
avctx->time_base.den);
|
||||
goto free_and_end;
|
||||
}
|
||||
|
||||
if (avctx->hw_frames_ctx) {
|
||||
AVHWFramesContext *frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data;
|
||||
if (frames_ctx->format != avctx->pix_fmt) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Mismatching AVCodecContext.pix_fmt and AVHWFramesContext.format\n");
|
||||
ret = AVERROR(EINVAL);
|
||||
goto free_and_end;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
avctx->pts_correction_num_faulty_pts =
|
||||
|
@ -2564,6 +2575,8 @@ av_cold int avcodec_close(AVCodecContext *avctx)
|
|||
av_freep(&avctx->coded_side_data);
|
||||
avctx->nb_coded_side_data = 0;
|
||||
|
||||
av_buffer_unref(&avctx->hw_frames_ctx);
|
||||
|
||||
if (avctx->priv_data && avctx->codec && avctx->codec->priv_class)
|
||||
av_opt_free(avctx->priv_data);
|
||||
av_opt_free(avctx);
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 57
|
||||
#define LIBAVCODEC_VERSION_MINOR 24
|
||||
#define LIBAVCODEC_VERSION_MICRO 106
|
||||
#define LIBAVCODEC_VERSION_MINOR 25
|
||||
#define LIBAVCODEC_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
LIBAVCODEC_VERSION_MINOR, \
|
||||
|
|
Loading…
Reference in New Issue