Commit 472e0445 authored by vectronic's avatar vectronic Committed by Derek Buitenhuis

avformat/mov: add ICC profile support for colr atom

Signed-off-by: 's avatarvectronic <hello.vectronic@gmail.com>
parent 05d27f34
...@@ -1546,6 +1546,7 @@ static int mov_read_enda(MOVContext *c, AVIOContext *pb, MOVAtom atom) ...@@ -1546,6 +1546,7 @@ static int mov_read_enda(MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
{ {
AVStream *st; AVStream *st;
uint8_t *icc_profile;
char color_parameter_type[5] = { 0 }; char color_parameter_type[5] = { 0 };
uint16_t color_primaries, color_trc, color_matrix; uint16_t color_primaries, color_trc, color_matrix;
int ret; int ret;
...@@ -1558,12 +1559,22 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) ...@@ -1558,12 +1559,22 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (strncmp(color_parameter_type, "nclx", 4) && if (strncmp(color_parameter_type, "nclx", 4) &&
strncmp(color_parameter_type, "nclc", 4)) { strncmp(color_parameter_type, "nclc", 4) &&
strncmp(color_parameter_type, "prof", 4)) {
av_log(c->fc, AV_LOG_WARNING, "unsupported color_parameter_type %s\n", av_log(c->fc, AV_LOG_WARNING, "unsupported color_parameter_type %s\n",
color_parameter_type); color_parameter_type);
return 0; return 0;
} }
if (!strncmp(color_parameter_type, "prof", 4)) {
icc_profile = av_stream_new_side_data(st, AV_PKT_DATA_ICC_PROFILE, atom.size - 4);
if (!icc_profile)
return AVERROR(ENOMEM);
ret = ffio_read_size(pb, icc_profile, atom.size - 4);
if (ret < 0)
return ret;
}
else {
color_primaries = avio_rb16(pb); color_primaries = avio_rb16(pb);
color_trc = avio_rb16(pb); color_trc = avio_rb16(pb);
color_matrix = avio_rb16(pb); color_matrix = avio_rb16(pb);
...@@ -1592,7 +1603,7 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) ...@@ -1592,7 +1603,7 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
st->codecpar->color_trc = color_trc; st->codecpar->color_trc = color_trc;
st->codecpar->color_space = color_matrix; st->codecpar->color_space = color_matrix;
av_log(c->fc, AV_LOG_TRACE, "\n"); av_log(c->fc, AV_LOG_TRACE, "\n");
}
return 0; return 0;
} }
......
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