avcodec: Constify ThreadFrames if possible

This is possible now that ff_thread_await_progress() accepts
a const ThreadFrame*.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
pull/388/head
Andreas Rheinhardt 2 years ago
parent 34276b815b
commit 0eb399ac39
  1. 2
      libavcodec/h264_slice.c
  2. 2
      libavcodec/hevc_mvs.c
  3. 4
      libavcodec/hevcdec.c
  4. 2
      libavcodec/rv34.c
  5. 2
      libavcodec/vp3.c
  6. 9
      libavcodec/vp8.c
  7. 4
      libavcodec/vp9_mc_template.c
  8. 8
      libavcodec/vp9recon.c

@ -1649,7 +1649,7 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl,
while (h->poc.frame_num != h->poc.prev_frame_num && !h->first_field && while (h->poc.frame_num != h->poc.prev_frame_num && !h->first_field &&
h->poc.frame_num != (h->poc.prev_frame_num + 1) % (1 << sps->log2_max_frame_num)) { h->poc.frame_num != (h->poc.prev_frame_num + 1) % (1 << sps->log2_max_frame_num)) {
H264Picture *prev = h->short_ref_count ? h->short_ref[0] : NULL; const H264Picture *prev = h->short_ref_count ? h->short_ref[0] : NULL;
av_log(h->avctx, AV_LOG_DEBUG, "Frame num gap %d %d\n", av_log(h->avctx, AV_LOG_DEBUG, "Frame num gap %d %d\n",
h->poc.frame_num, h->poc.prev_frame_num); h->poc.frame_num, h->poc.prev_frame_num);
if (!sps->gaps_in_frame_num_allowed_flag) if (!sps->gaps_in_frame_num_allowed_flag)

@ -227,7 +227,7 @@ static int temporal_luma_motion_vector(const HEVCContext *s, int x0, int y0,
int availableFlagLXCol = 0; int availableFlagLXCol = 0;
int colPic; int colPic;
HEVCFrame *ref = s->ref->collocated_ref; const HEVCFrame *ref = s->ref->collocated_ref;
if (!ref) { if (!ref) {
memset(mvLXCol, 0, sizeof(*mvLXCol)); memset(mvLXCol, 0, sizeof(*mvLXCol));

@ -1799,7 +1799,7 @@ static void chroma_mc_bi(HEVCLocalContext *lc, uint8_t *dst0, ptrdiff_t dststrid
_mx1, _my1, block_w); _mx1, _my1, block_w);
} }
static void hevc_await_progress(const HEVCContext *s, HEVCFrame *ref, static void hevc_await_progress(const HEVCContext *s, const HEVCFrame *ref,
const Mv *mv, int y0, int height) const Mv *mv, int y0, int height)
{ {
if (s->threads_type == FF_THREAD_FRAME ) { if (s->threads_type == FF_THREAD_FRAME ) {
@ -1869,7 +1869,7 @@ static void hls_prediction_unit(HEVCLocalContext *lc, int x0, int y0,
MvField *tab_mvf = s->ref->tab_mvf; MvField *tab_mvf = s->ref->tab_mvf;
const RefPicList *refPicList = s->ref->refPicList; const RefPicList *refPicList = s->ref->refPicList;
HEVCFrame *ref0 = NULL, *ref1 = NULL; const HEVCFrame *ref0 = NULL, *ref1 = NULL;
uint8_t *dst0 = POS(0, x0, y0); uint8_t *dst0 = POS(0, x0, y0);
uint8_t *dst1 = POS(1, x0, y0); uint8_t *dst1 = POS(1, x0, y0);
uint8_t *dst2 = POS(2, x0, y0); uint8_t *dst2 = POS(2, x0, y0);

@ -703,7 +703,7 @@ static inline void rv34_mc(RV34DecContext *r, const int block_type,
if (HAVE_THREADS && (s->avctx->active_thread_type & FF_THREAD_FRAME)) { if (HAVE_THREADS && (s->avctx->active_thread_type & FF_THREAD_FRAME)) {
/* wait for the referenced mb row to be finished */ /* wait for the referenced mb row to be finished */
int mb_row = s->mb_y + ((yoff + my + 5 + 8 * height) >> 4); int mb_row = s->mb_y + ((yoff + my + 5 + 8 * height) >> 4);
ThreadFrame *f = dir ? &s->next_picture_ptr->tf : &s->last_picture_ptr->tf; const ThreadFrame *f = dir ? &s->next_picture_ptr->tf : &s->last_picture_ptr->tf;
ff_thread_await_progress(f, mb_row, 0); ff_thread_await_progress(f, mb_row, 0);
} }

@ -1950,7 +1950,7 @@ static void vp3_draw_horiz_band(Vp3DecodeContext *s, int y)
static void await_reference_row(Vp3DecodeContext *s, Vp3Fragment *fragment, static void await_reference_row(Vp3DecodeContext *s, Vp3Fragment *fragment,
int motion_y, int y) int motion_y, int y)
{ {
ThreadFrame *ref_frame; const ThreadFrame *ref_frame;
int ref_row; int ref_row;
int border = motion_y & 1; int border = motion_y & 1;

@ -1283,7 +1283,7 @@ void decode_intra4x4_modes(VP8Context *s, VPXRangeCoder *c, VP8Macroblock *mb,
static av_always_inline static av_always_inline
void decode_mb_mode(VP8Context *s, VP8mvbounds *mv_bounds, void decode_mb_mode(VP8Context *s, VP8mvbounds *mv_bounds,
VP8Macroblock *mb, int mb_x, int mb_y, VP8Macroblock *mb, int mb_x, int mb_y,
uint8_t *segment, uint8_t *ref, int layout, int is_vp7) uint8_t *segment, const uint8_t *ref, int layout, int is_vp7)
{ {
VPXRangeCoder *c = &s->c; VPXRangeCoder *c = &s->c;
static const char * const vp7_feature_name[] = { "q-index", static const char * const vp7_feature_name[] = { "q-index",
@ -1848,7 +1848,7 @@ static const uint8_t subpel_idx[3][8] = {
*/ */
static av_always_inline static av_always_inline
void vp8_mc_luma(VP8Context *s, VP8ThreadData *td, uint8_t *dst, void vp8_mc_luma(VP8Context *s, VP8ThreadData *td, uint8_t *dst,
ThreadFrame *ref, const VP8mv *mv, const ThreadFrame *ref, const VP8mv *mv,
int x_off, int y_off, int block_w, int block_h, int x_off, int y_off, int block_w, int block_h,
int width, int height, ptrdiff_t linesize, int width, int height, ptrdiff_t linesize,
vp8_mc_func mc_func[3][3]) vp8_mc_func mc_func[3][3])
@ -1906,7 +1906,7 @@ void vp8_mc_luma(VP8Context *s, VP8ThreadData *td, uint8_t *dst,
*/ */
static av_always_inline static av_always_inline
void vp8_mc_chroma(VP8Context *s, VP8ThreadData *td, uint8_t *dst1, void vp8_mc_chroma(VP8Context *s, VP8ThreadData *td, uint8_t *dst1,
uint8_t *dst2, ThreadFrame *ref, const VP8mv *mv, uint8_t *dst2, const ThreadFrame *ref, const VP8mv *mv,
int x_off, int y_off, int block_w, int block_h, int x_off, int y_off, int block_w, int block_h,
int width, int height, ptrdiff_t linesize, int width, int height, ptrdiff_t linesize,
vp8_mc_func mc_func[3][3]) vp8_mc_func mc_func[3][3])
@ -2411,7 +2411,8 @@ static av_always_inline int decode_mb_row_no_filter(AVCodecContext *avctx, void
int mb_y = atomic_load(&td->thread_mb_pos) >> 16; int mb_y = atomic_load(&td->thread_mb_pos) >> 16;
int mb_x, mb_xy = mb_y * s->mb_width; int mb_x, mb_xy = mb_y * s->mb_width;
int num_jobs = s->num_jobs; int num_jobs = s->num_jobs;
VP8Frame *curframe = s->curframe, *prev_frame = s->prev_frame; const VP8Frame *prev_frame = s->prev_frame;
VP8Frame *curframe = s->curframe;
VPXRangeCoder *c = &s->coeff_partition[mb_y & (s->num_coeff_partitions - 1)]; VPXRangeCoder *c = &s->coeff_partition[mb_y & (s->num_coeff_partitions - 1)];
VP8Macroblock *mb; VP8Macroblock *mb;
uint8_t *dst[3] = { uint8_t *dst[3] = {

@ -36,8 +36,8 @@ static void FN(inter_pred)(VP9TileData *td)
VP9Context *s = td->s; VP9Context *s = td->s;
VP9Block *b = td->b; VP9Block *b = td->b;
int row = td->row, col = td->col; int row = td->row, col = td->col;
ThreadFrame *tref1 = &s->s.refs[s->s.h.refidx[b->ref[0]]], *tref2; const ThreadFrame *tref1 = &s->s.refs[s->s.h.refidx[b->ref[0]]], *tref2;
AVFrame *ref1 = tref1->f, *ref2; const AVFrame *ref1 = tref1->f, *ref2;
int w1 = ref1->width, h1 = ref1->height, w2, h2; int w1 = ref1->width, h1 = ref1->height, w2, h2;
ptrdiff_t ls_y = td->y_stride, ls_uv = td->uv_stride; ptrdiff_t ls_y = td->y_stride, ls_uv = td->uv_stride;
int bytesperpixel = BYTES_PER_PIXEL; int bytesperpixel = BYTES_PER_PIXEL;

@ -298,7 +298,7 @@ void ff_vp9_intra_recon_16bpp(VP9TileData *td, ptrdiff_t y_off, ptrdiff_t uv_off
static av_always_inline void mc_luma_unscaled(VP9TileData *td, vp9_mc_func (*mc)[2], static av_always_inline void mc_luma_unscaled(VP9TileData *td, vp9_mc_func (*mc)[2],
uint8_t *dst, ptrdiff_t dst_stride, uint8_t *dst, ptrdiff_t dst_stride,
const uint8_t *ref, ptrdiff_t ref_stride, const uint8_t *ref, ptrdiff_t ref_stride,
ThreadFrame *ref_frame, const ThreadFrame *ref_frame,
ptrdiff_t y, ptrdiff_t x, const VP9mv *mv, ptrdiff_t y, ptrdiff_t x, const VP9mv *mv,
int bw, int bh, int w, int h, int bytesperpixel) int bw, int bh, int w, int h, int bytesperpixel)
{ {
@ -336,7 +336,7 @@ static av_always_inline void mc_chroma_unscaled(VP9TileData *td, vp9_mc_func (*m
ptrdiff_t dst_stride, ptrdiff_t dst_stride,
const uint8_t *ref_u, ptrdiff_t src_stride_u, const uint8_t *ref_u, ptrdiff_t src_stride_u,
const uint8_t *ref_v, ptrdiff_t src_stride_v, const uint8_t *ref_v, ptrdiff_t src_stride_v,
ThreadFrame *ref_frame, const ThreadFrame *ref_frame,
ptrdiff_t y, ptrdiff_t x, const VP9mv *mv, ptrdiff_t y, ptrdiff_t x, const VP9mv *mv,
int bw, int bh, int w, int h, int bytesperpixel) int bw, int bh, int w, int h, int bytesperpixel)
{ {
@ -407,7 +407,7 @@ static av_always_inline void mc_luma_scaled(VP9TileData *td, vp9_scaled_mc_func
vp9_mc_func (*mc)[2], vp9_mc_func (*mc)[2],
uint8_t *dst, ptrdiff_t dst_stride, uint8_t *dst, ptrdiff_t dst_stride,
const uint8_t *ref, ptrdiff_t ref_stride, const uint8_t *ref, ptrdiff_t ref_stride,
ThreadFrame *ref_frame, const ThreadFrame *ref_frame,
ptrdiff_t y, ptrdiff_t x, const VP9mv *in_mv, ptrdiff_t y, ptrdiff_t x, const VP9mv *in_mv,
int px, int py, int pw, int ph, int px, int py, int pw, int ph,
int bw, int bh, int w, int h, int bytesperpixel, int bw, int bh, int w, int h, int bytesperpixel,
@ -467,7 +467,7 @@ static av_always_inline void mc_chroma_scaled(VP9TileData *td, vp9_scaled_mc_fun
ptrdiff_t dst_stride, ptrdiff_t dst_stride,
const uint8_t *ref_u, ptrdiff_t src_stride_u, const uint8_t *ref_u, ptrdiff_t src_stride_u,
const uint8_t *ref_v, ptrdiff_t src_stride_v, const uint8_t *ref_v, ptrdiff_t src_stride_v,
ThreadFrame *ref_frame, const ThreadFrame *ref_frame,
ptrdiff_t y, ptrdiff_t x, const VP9mv *in_mv, ptrdiff_t y, ptrdiff_t x, const VP9mv *in_mv,
int px, int py, int pw, int ph, int px, int py, int pw, int ph,
int bw, int bh, int w, int h, int bytesperpixel, int bw, int bh, int w, int h, int bytesperpixel,

Loading…
Cancel
Save