diff --git a/.pick_status.json b/.pick_status.json index e297689c1a4..e4048b430ab 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1246,7 +1246,7 @@ "description": "gallium/pipe: add interface update_decoder_target", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/include/pipe/p_video_codec.h b/src/gallium/include/pipe/p_video_codec.h index c68d8fd672c..bda37e396dd 100644 --- a/src/gallium/include/pipe/p_video_codec.h +++ b/src/gallium/include/pipe/p_video_codec.h @@ -133,6 +133,19 @@ struct pipe_video_codec int (*get_decoder_fence)(struct pipe_video_codec *codec, struct pipe_fence_handle *fence, uint64_t timeout); + /** + * Update target buffer address. + * + * Due to reallocation, target buffer address has changed, and the + * changed buffer will need to update to decoder so that when this buffer + * used as a reference frame, decoder can obtain its recorded information. + * Failed updating this buffer will miss reference frames and + * cause image corruption in the sebsequent output. + * If no target buffer change, this call is not necessary. + */ + void (*update_decoder_target)(struct pipe_video_codec *codec, + struct pipe_video_buffer *old, + struct pipe_video_buffer *updated); }; /**