Fix for bug #5862: crash rendering to quicktime h.264. This would need

an upgrade to the new quicktime api to work, but that's not really
compatible with rendering out frames sequentially. For now it sets the
compression to minimum quality, which doesn't need seeking forward and
backwards.
This commit is contained in:
Brecht Van Lommel
2008-04-12 13:49:00 +00:00
parent 8355a71365
commit ff77d00544

View File

@@ -311,6 +311,7 @@ static void QT_EndCreateMyVideoTrack(void)
static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, int recty)
{
SCTemporalSettings gTemporalSettings;
OSErr err = noErr;
qtexport->ibuf = IMB_allocImBuf (rectx, recty, 32, IB_rect, 0);
@@ -329,7 +330,18 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame, int rectx, i
SCDefaultPixMapSettings (qtdata->theComponent, qtexport->thePixMap, true);
SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings);
// workaround for crash with H.264, which requires an upgrade to
// the new callback based api for proper encoding, but that's not
// really compatible with rendering out frames sequentially
gTemporalSettings = qtdata->gTemporalSettings;
if(qtdata->gSpatialSettings.codecType == kH264CodecType) {
if(gTemporalSettings.temporalQuality != codecMinQuality) {
fprintf(stderr, "Only minimum quality compression supported for QuickTime H.264.\n");
gTemporalSettings.temporalQuality = codecMinQuality;
}
}
SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &gTemporalSettings);
SCSetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings);
SCSetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting);