thanks the ARB works fine also with undo group in my first tests. But I've a new strange error with dispose stream. I'm wrote the function to get the stream value. But if I dispose the streamValue I get a "magic error" . However, the effectRef and the streamH dispose correctly. the function : static PF_Err AEGP_GetParamStreamValue(PF_InData *in_data, PF_OutData *out_data, AEGP_PluginID PlugId, PF_ParamIndex param_index, PF_Handle *arbH ) { PF_Err err = PF_Err_NONE, err2 = PF_Err_NONE; AEGP_LayerH layerH; AEGP_StreamRefH effect_streamH = NULL; AEGP_EffectRefH thisEffect_refH = NULL; AEGP_StreamValue2 val; AEGP_StreamValue2 *sample_valP = &val; const A_Time currT = { 0,100 }; AEFX_SuiteScoper<AEGP_PFInterfaceSuite1> PFInterfaceSuite = AEFX_SuiteScoper<AEGP_PFInterfaceSuite1>(in_data, kAEGPPFInterfaceSuite, kAEGPPFInterfaceSuiteVersion1, out_data); AEFX_SuiteScoper<AEGP_LayerSuite8> layerSuite = AEFX_SuiteScoper<AEGP_LayerSuite8>(in_data, kAEGPLayerSuite, kAEGPLayerSuiteVersion8, out_data); AEFX_SuiteScoper<AEGP_StreamSuite4> StreamSuite = AEFX_SuiteScoper<AEGP_StreamSuite4>(in_data, kAEGPStreamSuite, kAEGPStreamSuiteVersion4, out_data); AEFX_SuiteScoper<AEGP_EffectSuite4> EffectSuite = AEFX_SuiteScoper<AEGP_EffectSuite4>(in_data, kAEGPEffectSuite, kAEGPEffectSuiteVersion4, out_data); PFInterfaceSuite->AEGP_GetEffectLayer(in_data->effect_ref, &layerH); PFInterfaceSuite->AEGP_GetNewEffectForEffect(PlugId, in_data->effect_ref, &thisEffect_refH); StreamSuite->AEGP_GetNewEffectStreamByIndex(PlugId, thisEffect_refH, param_index, &effect_streamH); StreamSuite->AEGP_GetNewStreamValue(PlugId, effect_streamH, AEGP_LTimeMode_LayerTime, &currT, FALSE, sample_valP); *arbH = reinterpret_cast<PF_Handle>(val.val.arbH); if (thisEffect_refH) { ERR2(EffectSuite->AEGP_DisposeEffect(thisEffect_refH)); } if (effect_streamH) { ERR2(StreamSuite->AEGP_DisposeStream(effect_streamH)); } /* if (sample_valP) { ERR2(StreamSuite->AEGP_DisposeStreamValue(sample_valP)); }*/ return err; }
... View more