mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-08 06:09:50 +00:00
Merge commit 'e85f6f7f8d'
* commit 'e85f6f7f8d':
lavc: allow using AVCodecContext.hw_frames_ctx for decoding
Conflicts:
doc/APIchanges
libavcodec/version.h
Merged-by: James Almer <jamrial@gmail.com>
This commit is contained in:
commit
32c25f06b7
4 changed files with 37 additions and 9 deletions
|
|
@ -724,6 +724,9 @@ int avcodec_default_get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags
|
|||
{
|
||||
int ret;
|
||||
|
||||
if (avctx->hw_frames_ctx)
|
||||
return av_hwframe_get_buffer(avctx->hw_frames_ctx, frame, 0);
|
||||
|
||||
if ((ret = update_frame_pool(avctx, frame)) < 0)
|
||||
return ret;
|
||||
|
||||
|
|
@ -1119,6 +1122,8 @@ int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
|
|||
av_freep(&avctx->internal->hwaccel_priv_data);
|
||||
avctx->hwaccel = NULL;
|
||||
|
||||
av_buffer_unref(&avctx->hw_frames_ctx);
|
||||
|
||||
ret = avctx->get_format(avctx, choices);
|
||||
|
||||
desc = av_pix_fmt_desc_get(ret);
|
||||
|
|
@ -1134,6 +1139,16 @@ int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
|
|||
break;
|
||||
#endif
|
||||
|
||||
if (avctx->hw_frames_ctx) {
|
||||
AVHWFramesContext *hw_frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data;
|
||||
if (hw_frames_ctx->format != ret) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Format returned from get_buffer() "
|
||||
"does not match the format of provided AVHWFramesContext\n");
|
||||
ret = AV_PIX_FMT_NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!setup_hwaccel(avctx, ret, desc->name))
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue