mp_image_pool: disallow adding read only frames

Remove the feature of adding read-only frames to mp_image_pool_add().
This makes no sense, because an image pool is an allocator, and must
always return writable images. Also check these assumptions earlier.
This commit is contained in:
wm4 2017-07-23 09:27:51 +02:00
parent bbfd9b5a29
commit 0ce3dce03a
1 changed files with 6 additions and 2 deletions

View File

@ -152,9 +152,9 @@ struct mp_image *mp_image_pool_get_no_alloc(struct mp_image_pool *pool, int fmt,
// This assumes the buffer is at this point exclusively owned by us: we
// can't track whether the buffer is unique otherwise.
// (av_buffer_is_writable() checks the refcount of the new buffer only.)
int flags = av_buffer_is_writable(new->bufs[0]) ? 0 : AV_BUFFER_FLAG_READONLY;
assert(av_buffer_is_writable(new->bufs[0]));
ref->bufs[0] = av_buffer_create(new->bufs[0]->data, new->bufs[0]->size,
unref_image, new, flags);
unref_image, new, 0);
if (!ref->bufs[0]) {
talloc_free(ref);
return NULL;
@ -169,6 +169,10 @@ struct mp_image *mp_image_pool_get_no_alloc(struct mp_image_pool *pool, int fmt,
void mp_image_pool_add(struct mp_image_pool *pool, struct mp_image *new)
{
assert(new->bufs[0]);
assert(!new->bufs[1]);
assert(mp_image_is_writeable(new));
struct image_flags *it = talloc_ptrtype(new, it);
*it = (struct image_flags) { .pool_alive = true };
new->priv = it;