Commit 367d785a authored by James Almer's avatar James Almer

meson: add "-Werror=missing-prototypes" to the list of optional arguments

Add duplicate prototypes to ref_mvs.c for now, since ref_mvs.h can't
be included.
Signed-off-by: James Almer's avatarJames Almer <jamrial@gmail.com>
parent 6cb362d0
......@@ -149,6 +149,7 @@ optional_arguments = [
'-Werror=vla',
'-Wno-maybe-uninitialized',
'-Wno-unused-parameter',
'-Werror=missing-prototypes',
]
if (get_option('buildtype') != 'debug' and get_option('buildtype') != 'plain')
......
......@@ -1824,57 +1824,6 @@ static void av1_setup_motion_field(AV1_COMMON *cm) {
}
}
void av1_fill_motion_field(AV1_COMMON *cm,
const int tile_col_start4, const int tile_col_end4,
const int row_start4, int row_end4)
{
RefCntBuffer *const frame_bufs = cm->buffer_pool.frame_bufs;
const int cur_order_hint = cm->cur_frame.cur_frame_offset;
int *const ref_buf_idx = cm->ref_buf_idx;
int *const ref_order_hint = cm->ref_order_hint;
int ref_stamp = MFMV_STACK_SIZE - 1;
if (ref_buf_idx[LAST_FRAME - LAST_FRAME] >= 0) {
const int alt_of_lst_order_hint =
frame_bufs[ref_buf_idx[LAST_FRAME - LAST_FRAME]]
.ref_frame_offset[ALTREF_FRAME - LAST_FRAME];
const int is_lst_overlay =
(alt_of_lst_order_hint == ref_order_hint[GOLDEN_FRAME - LAST_FRAME]);
if (!is_lst_overlay) motion_field_projection(cm, LAST_FRAME, 2,
tile_col_start4, tile_col_end4,
row_start4, row_end4);
--ref_stamp;
}
if (get_relative_dist(cm, ref_order_hint[BWDREF_FRAME - LAST_FRAME],
cur_order_hint) > 0) {
if (motion_field_projection(cm, BWDREF_FRAME, 0,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
}
if (get_relative_dist(cm, ref_order_hint[ALTREF2_FRAME - LAST_FRAME],
cur_order_hint) > 0) {
if (motion_field_projection(cm, ALTREF2_FRAME, 0,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
}
if (get_relative_dist(cm, ref_order_hint[ALTREF_FRAME - LAST_FRAME],
cur_order_hint) > 0 &&
ref_stamp >= 0)
if (motion_field_projection(cm, ALTREF_FRAME, 0,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
if (ref_stamp >= 0 && ref_buf_idx[LAST2_FRAME - LAST_FRAME] >= 0)
if (motion_field_projection(cm, LAST2_FRAME, 2,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
}
enum BlockSize {
BS_128x128,
BS_128x64,
......@@ -1952,6 +1901,12 @@ const uint8_t sbtype_to_bs[BLOCK_SIZES_ALL] = {
#include <stdio.h>
void av1_find_ref_mvs(CANDIDATE_MV *mvstack, int *cnt, int_mv (*mvlist)[2],
int *ctx, int refidx_dav1d[2],
int w4, int h4, int bs, int bp, int by4, int bx4,
int tile_col_start4, int tile_col_end4,
int tile_row_start4, int tile_row_end4,
AV1_COMMON *cm);
void av1_find_ref_mvs(CANDIDATE_MV *mvstack, int *cnt, int_mv (*mvlist)[2],
int *ctx, int refidx_dav1d[2],
int w4, int h4, int bs, int bp, int by4, int bx4,
......@@ -2091,6 +2046,20 @@ void av1_find_ref_mvs(CANDIDATE_MV *mvstack, int *cnt, int_mv (*mvlist)[2],
}
}
int av1_init_ref_mv_common(AV1_COMMON *cm,
const int w8, const int h8,
const ptrdiff_t stride,
const int allow_sb128,
MV_REF *cur,
MV_REF *ref_mvs[7],
const unsigned cur_poc,
const unsigned ref_poc[7],
const unsigned ref_ref_poc[7][7],
const WarpedMotionParams gmv[7],
const int allow_hp,
const int force_int_mv,
const int allow_ref_frame_mvs,
const int order_hint);
int av1_init_ref_mv_common(AV1_COMMON *cm,
const int w8, const int h8,
const ptrdiff_t stride,
......@@ -2156,14 +2125,61 @@ int av1_init_ref_mv_common(AV1_COMMON *cm,
return 0;
}
void av1_init_ref_mv_tile_row(AV1_COMMON *cm,
int tile_col_start4, int tile_col_end4,
int row_start4, int row_end4);
void av1_init_ref_mv_tile_row(AV1_COMMON *cm,
int tile_col_start4, int tile_col_end4,
int row_start4, int row_end4)
{
av1_fill_motion_field(cm, tile_col_start4, tile_col_end4,
RefCntBuffer *const frame_bufs = cm->buffer_pool.frame_bufs;
const int cur_order_hint = cm->cur_frame.cur_frame_offset;
int *const ref_buf_idx = cm->ref_buf_idx;
int *const ref_order_hint = cm->ref_order_hint;
int ref_stamp = MFMV_STACK_SIZE - 1;
if (ref_buf_idx[LAST_FRAME - LAST_FRAME] >= 0) {
const int alt_of_lst_order_hint =
frame_bufs[ref_buf_idx[LAST_FRAME - LAST_FRAME]]
.ref_frame_offset[ALTREF_FRAME - LAST_FRAME];
const int is_lst_overlay =
(alt_of_lst_order_hint == ref_order_hint[GOLDEN_FRAME - LAST_FRAME]);
if (!is_lst_overlay) motion_field_projection(cm, LAST_FRAME, 2,
tile_col_start4, tile_col_end4,
row_start4, row_end4);
--ref_stamp;
}
if (get_relative_dist(cm, ref_order_hint[BWDREF_FRAME - LAST_FRAME],
cur_order_hint) > 0) {
if (motion_field_projection(cm, BWDREF_FRAME, 0,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
}
if (get_relative_dist(cm, ref_order_hint[ALTREF2_FRAME - LAST_FRAME],
cur_order_hint) > 0) {
if (motion_field_projection(cm, ALTREF2_FRAME, 0,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
}
if (get_relative_dist(cm, ref_order_hint[ALTREF_FRAME - LAST_FRAME],
cur_order_hint) > 0 &&
ref_stamp >= 0)
if (motion_field_projection(cm, ALTREF_FRAME, 0,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
if (ref_stamp >= 0 && ref_buf_idx[LAST2_FRAME - LAST_FRAME] >= 0)
if (motion_field_projection(cm, LAST2_FRAME, 2,
tile_col_start4, tile_col_end4,
row_start4, row_end4)) --ref_stamp;
}
AV1_COMMON *av1_alloc_ref_mv_common(void);
AV1_COMMON *av1_alloc_ref_mv_common(void) {
AV1_COMMON *cm = malloc(sizeof(*cm));
if (!cm) return NULL;
......@@ -2171,6 +2187,7 @@ AV1_COMMON *av1_alloc_ref_mv_common(void) {
return cm;
}
void av1_free_ref_mv_common(AV1_COMMON *cm);
void av1_free_ref_mv_common(AV1_COMMON *cm) {
if (cm->tpl_mvs) free(cm->tpl_mvs);
free(cm);
......
......@@ -31,6 +31,7 @@
#include <string.h>
#include <dav1d/dav1d.h>
#include <tests/libfuzzer/dav1d_fuzzer.h>
static unsigned r32le(const uint8_t *const p) {
return ((uint32_t)p[3] << 24U) | (p[2] << 16U) | (p[1] << 8U) | p[0];
......
/*
* Copyright © 2018, VideoLAN and dav1d authors
* Copyright © 2018, Janne Grunau
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __DAV1D_TESTS_LIBFUZZER_DAV1D_FUZZER_H
#define __DAV1D_TESTS_LIBFUZZER_DAV1D_FUZZER_H
#include <stddef.h>
#include <stdint.h>
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
#endif /* __DAV1D_TESTS_LIBFUZZER_DAV1D_FUZZER_H*/
......@@ -33,9 +33,9 @@
#include <string.h>
#include <stdio.h>
// expects ivf input
#include <tests/libfuzzer/dav1d_fuzzer.h>
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
// expects ivf input
int main(const int argc, char *const *const argv) {
int ret = -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment