aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2016-05-03 15:20:48 -0400
committerRonald S. Bultje <rsbultje@gmail.com>2016-05-10 08:37:56 -0400
commit9c4943e6710d9e57dac7547d7136b619cfff23a2 (patch)
treec8845d566c0aa85c550e8b39151a5ca5fd3aee48
parentf4075767b20fd9b7ecb6b4c15a4ede45361d3ab5 (diff)
downloadffmpeg-9c4943e6710d9e57dac7547d7136b619cfff23a2.tar.gz
ffmpeg: copy color properties in case of -c:v copy.
I have no idea why the first hunk uses ost->enc_ctx, because as far as I understand, that is never used in case of -c:v copy, but this code block is only entered if encoding_needed=0, which means stream_copy=1. My point being: review from someone that knows this really well would be appreciated.
-rw-r--r--ffmpeg.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 03ac34e4cb..002705ac2c 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2678,7 +2678,7 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len)
ost->st->time_base = av_add_q(ost->enc_ctx->time_base, (AVRational){0, 1});
ost->st->codec->codec= ost->enc_ctx->codec;
} else {
- ret = av_opt_set_dict(ost->enc_ctx, &ost->encoder_opts);
+ ret = av_opt_set_dict(ost->st->codec, &ost->encoder_opts);
if (ret < 0) {
av_log(NULL, AV_LOG_FATAL,
"Error setting up codec context options.\n");
@@ -3011,6 +3011,10 @@ static int transcode_init(void)
break;
case AVMEDIA_TYPE_VIDEO:
enc_ctx->pix_fmt = dec_ctx->pix_fmt;
+ enc_ctx->colorspace = dec_ctx->colorspace;
+ enc_ctx->color_range = dec_ctx->color_range;
+ enc_ctx->color_primaries = dec_ctx->color_primaries;
+ enc_ctx->color_trc = dec_ctx->color_trc;
enc_ctx->width = dec_ctx->width;
enc_ctx->height = dec_ctx->height;
enc_ctx->has_b_frames = dec_ctx->has_b_frames;