diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-04-28 00:09:21 +0300 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-05-22 17:34:39 +0300 |
commit | 4e17946f10d39eec6cc03fb249ae8147373141b6 (patch) | |
tree | 75afaa4f48f7c9da9f7f2fc3cd4feef1a167f8e1 /libavcodec | |
parent | a3f4c930ac3f49f47b6e6ffda925d0dcf80320e2 (diff) |
mpegvideo: Rework various functions not to use MpegEncContext directly
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/h263dec.c | 2 | ||||
-rw-r--r-- | libavcodec/mpegvideo.c | 34 | ||||
-rw-r--r-- | libavcodec/mpegvideo.h | 3 | ||||
-rw-r--r-- | libavcodec/mpegvideo_enc.c | 4 |
4 files changed, 22 insertions, 21 deletions
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 0a030542f2..0e08a8df70 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -463,7 +463,7 @@ int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, } if (!s->current_picture_ptr || s->current_picture_ptr->f->data[0]) { - int i = ff_find_unused_picture(s, 0); + int i = ff_find_unused_picture(s->avctx, s->picture, 0); if (i < 0) return i; s->current_picture_ptr = &s->picture[i]; diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 8055d15178..f81e357a52 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1612,18 +1612,18 @@ av_cold void ff_init_vlc_rl(RLTable *rl) } } -static void release_unused_pictures(MpegEncContext *s) +static void release_unused_pictures(AVCodecContext *avctx, Picture *picture) { int i; /* release non reference frames */ for (i = 0; i < MAX_PICTURE_COUNT; i++) { - if (!s->picture[i].reference) - ff_mpeg_unref_picture(s->avctx, &s->picture[i]); + if (!picture[i].reference) + ff_mpeg_unref_picture(avctx, &picture[i]); } } -static inline int pic_is_unused(MpegEncContext *s, Picture *pic) +static inline int pic_is_unused(Picture *pic) { if (!pic->f->buf[0]) return 1; @@ -1632,18 +1632,18 @@ static inline int pic_is_unused(MpegEncContext *s, Picture *pic) return 0; } -static int find_unused_picture(MpegEncContext *s, int shared) +static int find_unused_picture(Picture *picture, int shared) { int i; if (shared) { for (i = 0; i < MAX_PICTURE_COUNT; i++) { - if (!s->picture[i].f->buf[0]) + if (!picture[i].f->buf[0]) return i; } } else { for (i = 0; i < MAX_PICTURE_COUNT; i++) { - if (pic_is_unused(s, &s->picture[i])) + if (pic_is_unused(&picture[i])) return i; } } @@ -1651,15 +1651,15 @@ static int find_unused_picture(MpegEncContext *s, int shared) return AVERROR_INVALIDDATA; } -int ff_find_unused_picture(MpegEncContext *s, int shared) +int ff_find_unused_picture(AVCodecContext *avctx, Picture *picture, int shared) { - int ret = find_unused_picture(s, shared); + int ret = find_unused_picture(picture, shared); if (ret >= 0 && ret < MAX_PICTURE_COUNT) { - if (s->picture[ret].needs_realloc) { - s->picture[ret].needs_realloc = 0; - ff_free_picture_tables(&s->picture[ret]); - ff_mpeg_unref_picture(s->avctx, &s->picture[ret]); + if (picture[ret].needs_realloc) { + picture[ret].needs_realloc = 0; + ff_free_picture_tables(&picture[ret]); + ff_mpeg_unref_picture(avctx, &picture[ret]); } } return ret; @@ -1697,14 +1697,14 @@ int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx) ff_mpeg_unref_picture(s->avctx, &s->current_picture); - release_unused_pictures(s); + release_unused_pictures(s->avctx, s->picture); if (s->current_picture_ptr && !s->current_picture_ptr->f->buf[0]) { // we already have a unused image // (maybe it was set before reading the header) pic = s->current_picture_ptr; } else { - i = ff_find_unused_picture(s, 0); + i = ff_find_unused_picture(s->avctx, s->picture, 0); if (i < 0) { av_log(s->avctx, AV_LOG_ERROR, "no frame buffer available\n"); return i; @@ -1771,7 +1771,7 @@ int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx) "allocate dummy last picture for field based first keyframe\n"); /* Allocate a dummy frame */ - i = ff_find_unused_picture(s, 0); + i = ff_find_unused_picture(s->avctx, s->picture, 0); if (i < 0) { av_log(s->avctx, AV_LOG_ERROR, "no frame buffer available\n"); return i; @@ -1801,7 +1801,7 @@ int ff_mpv_frame_start(MpegEncContext *s, AVCodecContext *avctx) if ((!s->next_picture_ptr || !s->next_picture_ptr->f->buf[0]) && s->pict_type == AV_PICTURE_TYPE_B) { /* Allocate a dummy frame */ - i = ff_find_unused_picture(s, 0); + i = ff_find_unused_picture(s->avctx, s->picture, 0); if (i < 0) { av_log(s->avctx, AV_LOG_ERROR, "no frame buffer available\n"); return i; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index aec74b4bf7..8ac7851d2c 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -742,7 +742,8 @@ void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h); void ff_mpeg_flush(AVCodecContext *avctx); void ff_print_debug_info(MpegEncContext *s, Picture *p); void ff_write_quant_matrix(PutBitContext *pb, uint16_t *matrix); -int ff_find_unused_picture(MpegEncContext *s, int shared); + +int ff_find_unused_picture(AVCodecContext *avctx, Picture *picture, int shared); int ff_update_duplicate_context(MpegEncContext *dst, MpegEncContext *src); int ff_mpeg_update_thread_context(AVCodecContext *dst, const AVCodecContext *src); void ff_set_qscale(MpegEncContext * s, int qscale); diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index ec495c1f59..15cca64c49 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -994,7 +994,7 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg) ff_dlog(s->avctx, "%d %d %td %td\n", pic_arg->linesize[0], pic_arg->linesize[1], s->linesize, s->uvlinesize); - i = ff_find_unused_picture(s, direct); + i = ff_find_unused_picture(s->avctx, s->picture, direct); if (i < 0) return i; @@ -1379,7 +1379,7 @@ no_output_pic: // one & ensure that the shared one is reuseable Picture *pic; - int i = ff_find_unused_picture(s, 0); + int i = ff_find_unused_picture(s->avctx, s->picture, 0); if (i < 0) return i; pic = &s->picture[i]; |