diff options
author | Jason Stevens <jay@wizardofthenet.com> | 2018-09-07 22:42:13 -0700 |
---|---|---|
committer | Carl Eugen Hoyos <ceffmpeg@gmail.com> | 2018-09-10 23:15:42 +0200 |
commit | 69f1853a2831addd662041ceb2d90df355b0e60a (patch) | |
tree | b83c08a5fbf89c9f28ab5e78235c78420a68bb40 | |
parent | df05fd3131fd94d01ebeaa58b4c60510961b8be2 (diff) |
libavcodec/dnxhd: change ff_dnxhd_get_hr_frame_size to avpriv_
refactor ff_dnxhd_get_hr_frame_size to avpriv_dnxhd_get_hr_frame_size,
to allow cross library usage in libavformat/mxfenc this change makes
this function no longer be always inlined.
Signed-off-by: Jason Stevens <jay@wizardofthenet.com>
-rw-r--r-- | libavcodec/dnxhd_parser.c | 2 | ||||
-rw-r--r-- | libavcodec/dnxhddata.c | 13 | ||||
-rw-r--r-- | libavcodec/dnxhddata.h | 14 | ||||
-rw-r--r-- | libavcodec/dnxhdenc.c | 2 |
4 files changed, 16 insertions, 15 deletions
diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c index 79ca1d6718..7c16e251a4 100644 --- a/libavcodec/dnxhd_parser.c +++ b/libavcodec/dnxhd_parser.c @@ -75,7 +75,7 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx, remaining = avpriv_dnxhd_get_frame_size(cid); if (remaining <= 0) { - remaining = ff_dnxhd_get_hr_frame_size(cid, dctx->w, dctx->h); + remaining = avpriv_dnxhd_get_hr_frame_size(cid, dctx->w, dctx->h); if (remaining <= 0) continue; } diff --git a/libavcodec/dnxhddata.c b/libavcodec/dnxhddata.c index e9dd29ce4c..154be89860 100644 --- a/libavcodec/dnxhddata.c +++ b/libavcodec/dnxhddata.c @@ -1092,6 +1092,19 @@ int avpriv_dnxhd_get_frame_size(int cid) return ff_dnxhd_cid_table[i].frame_size; } +int avpriv_dnxhd_get_hr_frame_size(int cid, int w, int h) +{ + int result, i = ff_dnxhd_get_cid_table(cid); + + if (i < 0) + return i; + + result = ((h + 15) / 16) * ((w + 15) / 16) * (int64_t)ff_dnxhd_cid_table[i].packet_scale.num / ff_dnxhd_cid_table[i].packet_scale.den; + result = (result + 2048) / 4096 * 4096; + + return FFMAX(result, 8192); +} + int avpriv_dnxhd_get_interlaced(int cid) { int i = ff_dnxhd_get_cid_table(cid); diff --git a/libavcodec/dnxhddata.h b/libavcodec/dnxhddata.h index f80ce18f3c..cfa6b0c99d 100644 --- a/libavcodec/dnxhddata.h +++ b/libavcodec/dnxhddata.h @@ -90,20 +90,8 @@ static av_always_inline uint64_t ff_dnxhd_parse_header_prefix(const uint8_t *buf return ff_dnxhd_check_header_prefix(prefix); } -static av_always_inline int ff_dnxhd_get_hr_frame_size(int cid, int w, int h) -{ - int result, i = ff_dnxhd_get_cid_table(cid); - - if (i < 0) - return i; - - result = ((h + 15) / 16) * ((w + 15) / 16) * (int64_t)ff_dnxhd_cid_table[i].packet_scale.num / ff_dnxhd_cid_table[i].packet_scale.den; - result = (result + 2048) / 4096 * 4096; - - return FFMAX(result, 8192); -} - int avpriv_dnxhd_get_frame_size(int cid); +int avpriv_dnxhd_get_hr_frame_size(int cid, int w, int h); int avpriv_dnxhd_get_interlaced(int cid); #endif /* AVCODEC_DNXHDDATA_H */ diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c index 9325f38baf..41b8079a09 100644 --- a/libavcodec/dnxhdenc.c +++ b/libavcodec/dnxhdenc.c @@ -482,7 +482,7 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx) ctx->m.mb_num = ctx->m.mb_height * ctx->m.mb_width; if (ctx->cid_table->frame_size == DNXHD_VARIABLE) { - ctx->frame_size = ff_dnxhd_get_hr_frame_size(ctx->cid, + ctx->frame_size = avpriv_dnxhd_get_hr_frame_size(ctx->cid, avctx->width, avctx->height); av_assert0(ctx->frame_size >= 0); ctx->coding_unit_size = ctx->frame_size; |