mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 03:59:43 +00:00
hwcontext: Add frame context mapping for nontrivial contexts
Some frames contexts are not usable without additional format-specific state in hwctx. This change adds new functions frames_derive_from and frames_derive_to to initialise this state appropriately when deriving a frames context which will require it to be set.
This commit is contained in:
parent
aa51bb3d27
commit
27978155bc
@ -816,7 +816,14 @@ int av_hwframe_ctx_create_derived(AVBufferRef **derived_frame_ctx,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = av_hwframe_ctx_init(dst_ref);
|
||||
ret = AVERROR(ENOSYS);
|
||||
if (src->internal->hw_type->frames_derive_from)
|
||||
ret = src->internal->hw_type->frames_derive_from(dst, src, flags);
|
||||
if (ret == AVERROR(ENOSYS) &&
|
||||
dst->internal->hw_type->frames_derive_to)
|
||||
ret = dst->internal->hw_type->frames_derive_to(dst, src, flags);
|
||||
if (ret == AVERROR(ENOSYS))
|
||||
ret = 0;
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
||||
|
@ -92,6 +92,11 @@ typedef struct HWContextType {
|
||||
const AVFrame *src, int flags);
|
||||
int (*map_from)(AVHWFramesContext *ctx, AVFrame *dst,
|
||||
const AVFrame *src, int flags);
|
||||
|
||||
int (*frames_derive_to)(AVHWFramesContext *dst_ctx,
|
||||
AVHWFramesContext *src_ctx, int flags);
|
||||
int (*frames_derive_from)(AVHWFramesContext *dst_ctx,
|
||||
AVHWFramesContext *src_ctx, int flags);
|
||||
} HWContextType;
|
||||
|
||||
struct AVHWDeviceInternal {
|
||||
|
Loading…
Reference in New Issue
Block a user