Thanks to av_get_pix_fmt_loss, we can determine more precisely if a
conversion will incur some kind of loss. If this loss doesn't modify
in particular bitdepth, the input bitdepth can be reused for the
output.
---
ffmpeg.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/ffmpeg.c b/ffmpeg.c
index fa907b4..2bfa047 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2774,6 +2774,15 @@ static int transcode_init(void)
enc_ctx->bits_per_raw_sample = frame_bits_per_raw_sample;
}
+ if (!(av_get_pix_fmt_loss(enc_ctx->pix_fmt, dec_ctx->pix_fmt,
0)
+ & (FF_LOSS_DEPTH|FF_LOSS_COLORSPACE|FF_LOSS_CHROMA))) {
+ const AVPixFmtDescriptor *pix1 =
av_pix_fmt_desc_get(enc_ctx->pix_fmt);
+ const AVPixFmtDescriptor *pix2 =
av_pix_fmt_desc_get(dec_ctx->pix_fmt);
+ if (pix1 && pix2 &&
+ av_get_bits_per_pixel(pix1) ==
av_get_bits_per_pixel(pix2))
+ enc_ctx->bits_per_raw_sample =
dec_ctx->bits_per_raw_sample;
+ }
+
if (ost->forced_keyframes) {
if (!strncmp(ost->forced_keyframes, "expr:", 5)) {
ret = av_expr_parse(&ost->forced_keyframes_pexpr,
ost->forced_keyframes+5,
--
1.9.2.msysgit.0
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel