Fix [#20821] COLOR MANAGEMENT: Corrupts motion picture files

Wasn't tagging movie formats with profiles properly.
This commit is contained in:
2010-01-26 02:49:30 +00:00
parent ba2257b57e
commit e6a23762da
4 changed files with 18 additions and 3 deletions

View File

@@ -504,6 +504,8 @@ static ImBuf * avi_fetchibuf (struct anim *anim, int position) {
MEM_freeN (tmp);
}
ibuf->profile = IB_PROFILE_SRGB;
return ibuf;
}
@@ -881,6 +883,8 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) {
IMB_filtery(ibuf);
}
ibuf->profile = IB_PROFILE_SRGB;
return(ibuf);
}
@@ -1069,6 +1073,7 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position) {
if (nextanim5(anim)) return (0);
}
ibuf = anim5_fetchibuf(anim);
ibuf->profile = IB_PROFILE_SRGB;
break;
case ANIM_SEQUENCE:
pic = an_stringdec(anim->first, head, tail, &digits);
@@ -1089,22 +1094,26 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position) {
if (ibuf) {
anim->curposition = position;
IMB_convert_rgba_to_abgr(ibuf);
ibuf->profile = IB_PROFILE_SRGB;
}
break;
case ANIM_AVI:
ibuf = avi_fetchibuf(anim, position);
if (ibuf) anim->curposition = position;
if (ibuf)
anim->curposition = position;
break;
#ifdef WITH_QUICKTIME
case ANIM_QTIME:
ibuf = qtime_fetchibuf(anim, position);
if (ibuf) anim->curposition = position;
if (ibuf)
anim->curposition = position;
break;
#endif
#ifdef WITH_FFMPEG
case ANIM_FFMPEG:
ibuf = ffmpeg_fetchibuf(anim, position);
if (ibuf) anim->curposition = position;
if (ibuf)
anim->curposition = position;
filter_y = 0; /* done internally */
break;
#endif

View File

@@ -532,6 +532,8 @@ struct ImBuf * anim5_fetchibuf(struct anim * anim) {
ibuf = IMB_dupImBuf(anim->ibuf1);
planes_to_rect(ibuf, anim->ib_flags);
ibuf->profile = IB_PROFILE_SRGB;
return(ibuf);
}

View File

@@ -281,6 +281,8 @@ ImBuf * qtime_fetchibuf (struct anim *anim, int position)
ibuf = nsImageToiBuf(frameImage,anim->x, anim->y);
[pool drain];
ibuf->profile = IB_PROFILE_SRGB;
return ibuf;
}

View File

@@ -373,6 +373,8 @@ ImBuf * qtime_fetchibuf (struct anim *anim, int position)
}
#endif
ibuf->profile == IB_PROFILE_SRGB;
IMB_flipy(ibuf);
return ibuf;
}