--- encoder.c 2006/02/24 14:18:59 1.127 +++ encoder.c 2007/02/08 13:10:24 1.130 @@ -21,7 +21,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: encoder.c,v 1.127 2006/02/24 14:18:59 syskin Exp $ + * $Id: encoder.c,v 1.130 2007/02/08 13:10:24 Isibaar Exp $ * ****************************************************************************/ @@ -662,6 +662,9 @@ xvid_free(pEnc->temp_dquants); } + if ((pEnc->mbParam.plugin_flags & XVID_REQLAMBDA)) { + xvid_free(pEnc->temp_lambda); + } if (pEnc->num_plugins>0) { xvid_plg_destroy_t pdestroy; @@ -767,6 +770,7 @@ if(pEnc->mbParam.plugin_flags & XVID_REQLAMBDA) { int block = 0; + emms(); data.lambda = pEnc->temp_lambda; for(i = 0;i < pEnc->mbParam.mb_height; i++) for(j = 0;j < pEnc->mbParam.mb_width; j++) @@ -1303,8 +1307,9 @@ if (pEnc->current->stamp > 0) { call_plugins(pEnc, pEnc->reference, &pEnc->sOriginal, XVID_PLG_AFTER, NULL, NULL, stats); } - else - stats->type = XVID_TYPE_NOTHING; + else if (stats) { + stats->type = XVID_TYPE_NOTHING; + } } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2034,7 +2039,7 @@ pthread_create(&pEnc->motionData[k].handle, NULL, (void*)SMPMotionEstimationBVOP, (void*)&pEnc->motionData[k]); } - + SMPMotionEstimationBVOP(&pEnc->motionData[0]); for (k = 1; k < pEnc->num_threads; k++) {