You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	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>
This commit is contained in:
		| @@ -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 && | ||||
|            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", | ||||
|                h->poc.frame_num, h->poc.prev_frame_num); | ||||
|         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 colPic; | ||||
|  | ||||
|     HEVCFrame *ref = s->ref->collocated_ref; | ||||
|     const HEVCFrame *ref = s->ref->collocated_ref; | ||||
|  | ||||
|     if (!ref) { | ||||
|         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); | ||||
| } | ||||
|  | ||||
| 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) | ||||
| { | ||||
|     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; | ||||
|     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 *dst1 = POS(1, 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)) { | ||||
|         /* wait for the referenced mb row to be finished */ | ||||
|         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); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1950,7 +1950,7 @@ static void vp3_draw_horiz_band(Vp3DecodeContext *s, int y) | ||||
| static void await_reference_row(Vp3DecodeContext *s, Vp3Fragment *fragment, | ||||
|                                 int motion_y, int y) | ||||
| { | ||||
|     ThreadFrame *ref_frame; | ||||
|     const ThreadFrame *ref_frame; | ||||
|     int ref_row; | ||||
|     int border = motion_y & 1; | ||||
|  | ||||
|   | ||||
| @@ -1283,7 +1283,7 @@ void decode_intra4x4_modes(VP8Context *s, VPXRangeCoder *c, VP8Macroblock *mb, | ||||
| static av_always_inline | ||||
| void decode_mb_mode(VP8Context *s, VP8mvbounds *mv_bounds, | ||||
|                     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; | ||||
|     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 | ||||
| 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 width, int height, ptrdiff_t linesize, | ||||
|                  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 | ||||
| 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 width, int height, ptrdiff_t linesize, | ||||
|                    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_x, mb_xy = mb_y * s->mb_width; | ||||
|     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)]; | ||||
|     VP8Macroblock *mb; | ||||
|     uint8_t *dst[3] = { | ||||
|   | ||||
| @@ -36,8 +36,8 @@ static void FN(inter_pred)(VP9TileData *td) | ||||
|     VP9Context *s = td->s; | ||||
|     VP9Block *b = td->b; | ||||
|     int row = td->row, col = td->col; | ||||
|     ThreadFrame *tref1 = &s->s.refs[s->s.h.refidx[b->ref[0]]], *tref2; | ||||
|     AVFrame *ref1 = tref1->f, *ref2; | ||||
|     const ThreadFrame *tref1 = &s->s.refs[s->s.h.refidx[b->ref[0]]], *tref2; | ||||
|     const AVFrame *ref1 = tref1->f, *ref2; | ||||
|     int w1 = ref1->width, h1 = ref1->height, w2, h2; | ||||
|     ptrdiff_t ls_y = td->y_stride, ls_uv = td->uv_stride; | ||||
|     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], | ||||
|                                               uint8_t *dst, ptrdiff_t dst_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, | ||||
|                                               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, | ||||
|                                                 const uint8_t *ref_u, ptrdiff_t src_stride_u, | ||||
|                                                 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, | ||||
|                                                 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], | ||||
|                                             uint8_t *dst, ptrdiff_t dst_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, | ||||
|                                             int px, int py, int pw, int ph, | ||||
|                                             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, | ||||
|                                               const uint8_t *ref_u, ptrdiff_t src_stride_u, | ||||
|                                               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, | ||||
|                                               int px, int py, int pw, int ph, | ||||
|                                               int bw, int bh, int w, int h, int bytesperpixel, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user