-// Class to handle buffer allocation and resize for each frame
-typedef struct FuzzDataBuffer {
- size_t size_;
- uint8_t *data_;
-} FuzzDataBuffer;
-
-static void FDBCreate(FuzzDataBuffer *FDB) {
- FDB->size_ = 0x1000;
- FDB->data_ = av_malloc(FDB->size_);
- if (!FDB->data_)
- error("Failed memory allocation");
-}
-
-static void FDBDesroy(FuzzDataBuffer *FDB) { av_free(FDB->data_); }
-
-static void FDBRealloc(FuzzDataBuffer *FDB, size_t size) {
- size_t needed = size + AV_INPUT_BUFFER_PADDING_SIZE;
- av_assert0(needed > size);
- if (needed > FDB->size_) {
- av_free(FDB->data_);
- FDB->size_ = needed;
- FDB->data_ = av_malloc(FDB->size_);
- if (!FDB->data_)
- error("Failed memory allocation");
- }
-}
-
-static void FDBPrepare(FuzzDataBuffer *FDB, AVPacket *dst, const uint8_t *data,
- size_t size)
-{
- FDBRealloc(FDB, size);
- memcpy(FDB->data_, data, size);
- size_t padd = FDB->size_ - size;
- if (padd > AV_INPUT_BUFFER_PADDING_SIZE)
- padd = AV_INPUT_BUFFER_PADDING_SIZE;
- memset(FDB->data_ + size, 0, padd);
- av_init_packet(dst);
- dst->data = FDB->data_;
- dst->size = size;
-}
-