Commit 99214d42 authored by Luca Barbato's avatar Luca Barbato

dnxhd: Make the encoder message friendlier

parent 34c9eba9
...@@ -1203,3 +1203,26 @@ int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth) ...@@ -1203,3 +1203,26 @@ int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
} }
return 0; return 0;
} }
void ff_dnxhd_list_cid(AVCodecContext *avctx)
{
int i, j;
for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
const CIDEntry *cid = &ff_dnxhd_cid_table[i];
av_log(avctx, AV_LOG_INFO,
"cid %d %ux%u %dbits %s bit rates",
cid->cid,
cid->width, cid->height,
cid->bit_depth,
cid->interlaced ? "interlaced " :
"progressive");
for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
if (!cid->bit_rates[j])
break;
av_log(avctx, AV_LOG_INFO, " %dM",
cid->bit_rates[j]);
}
av_log(avctx, AV_LOG_INFO, "\n");
}
}
...@@ -47,5 +47,6 @@ extern const CIDEntry ff_dnxhd_cid_table[]; ...@@ -47,5 +47,6 @@ extern const CIDEntry ff_dnxhd_cid_table[];
int ff_dnxhd_get_cid_table(int cid); int ff_dnxhd_get_cid_table(int cid);
int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth); int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth);
void ff_dnxhd_list_cid(AVCodecContext *avctx);
#endif /* AVCODEC_DNXHDDATA_H */ #endif /* AVCODEC_DNXHDDATA_H */
...@@ -289,14 +289,15 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx) ...@@ -289,14 +289,15 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
break; break;
default: default:
av_log(avctx, AV_LOG_ERROR, av_log(avctx, AV_LOG_ERROR,
"pixel format is incompatible with DNxHD\n"); "Pixel format is incompatible with DNxHD, use yuv422p or yuv422p10.\n");
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
ctx->cid = ff_dnxhd_find_cid(avctx, bit_depth); ctx->cid = ff_dnxhd_find_cid(avctx, bit_depth);
if (!ctx->cid) { if (!ctx->cid) {
av_log(avctx, AV_LOG_ERROR, av_log(avctx, AV_LOG_ERROR,
"video parameters incompatible with DNxHD\n"); "Video parameters incompatible with DNxHD, available CIDs:\n");
ff_dnxhd_list_cid(avctx);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
av_log(avctx, AV_LOG_DEBUG, "cid %d\n", ctx->cid); av_log(avctx, AV_LOG_DEBUG, "cid %d\n", ctx->cid);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment