summaryrefslogtreecommitdiff
path: root/libavcodec/libx264.c
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2015-07-15 18:41:21 +0100
committerVittorio Giovara <vittorio.giovara@gmail.com>2015-07-20 15:06:47 +0100
commit5d3addb937946eca5391e40b5e6308e74ac6f77b (patch)
treee758d6b07dd07480a3b32901ccedc421d45b33c0 /libavcodec/libx264.c
parentd6604b29ef544793479d7fb4e05ef6622bb3e534 (diff)
Add a quality factor packet side data
This is necessary to preserve the quality information currently exported with coded_frame. Add the new side data to every encoder that needs it, and use it in avconv. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavcodec/libx264.c')
-rw-r--r--libavcodec/libx264.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index ace750cc54..a3ffe228c1 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -268,8 +268,15 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame,
}
pkt->flags |= AV_PKT_FLAG_KEY*pic_out.b_keyframe;
- if (ret)
+ if (ret) {
+ uint8_t *sd = av_packet_new_side_data(pkt, AV_PKT_DATA_QUALITY_FACTOR,
+ sizeof(int));
+ if (!sd)
+ return AVERROR(ENOMEM);
+ *(int *)sd = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;
+
ctx->coded_frame->quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;
+ }
*got_packet = ret;
return 0;