mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
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>
This commit is contained in:
parent
df05fd3131
commit
69f1853a28
@ -75,7 +75,7 @@ static int dnxhd_find_frame_end(DNXHDParserContext *dctx,
|
|||||||
|
|
||||||
remaining = avpriv_dnxhd_get_frame_size(cid);
|
remaining = avpriv_dnxhd_get_frame_size(cid);
|
||||||
if (remaining <= 0) {
|
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)
|
if (remaining <= 0)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1092,6 +1092,19 @@ int avpriv_dnxhd_get_frame_size(int cid)
|
|||||||
return ff_dnxhd_cid_table[i].frame_size;
|
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 avpriv_dnxhd_get_interlaced(int cid)
|
||||||
{
|
{
|
||||||
int i = ff_dnxhd_get_cid_table(cid);
|
int i = ff_dnxhd_get_cid_table(cid);
|
||||||
|
@ -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);
|
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_frame_size(int cid);
|
||||||
|
int avpriv_dnxhd_get_hr_frame_size(int cid, int w, int h);
|
||||||
int avpriv_dnxhd_get_interlaced(int cid);
|
int avpriv_dnxhd_get_interlaced(int cid);
|
||||||
|
|
||||||
#endif /* AVCODEC_DNXHDDATA_H */
|
#endif /* AVCODEC_DNXHDDATA_H */
|
||||||
|
@ -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;
|
ctx->m.mb_num = ctx->m.mb_height * ctx->m.mb_width;
|
||||||
|
|
||||||
if (ctx->cid_table->frame_size == DNXHD_VARIABLE) {
|
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);
|
avctx->width, avctx->height);
|
||||||
av_assert0(ctx->frame_size >= 0);
|
av_assert0(ctx->frame_size >= 0);
|
||||||
ctx->coding_unit_size = ctx->frame_size;
|
ctx->coding_unit_size = ctx->frame_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user