[x264-devel] commit: Fix potential crash in the case that the input statsfile is too short ( Jason Garrett-Glaser )
BugMaster
BugMaster at narod.ru
Mon Nov 10 23:14:06 CET 2008
On Mon, 10 Nov 2008 02:41:09 +0100 (CET), git version control wrote:
> x264 | branch: master | Jason Garrett-Glaser
> <darkshikari at gmail.com> | Wed Nov 5 19:51:59 2008 -0800|
> [418cace8646a6f546a9026da47f79fad7285f577] | committer: Jason Garrett-Glaser
> Fix potential crash in the case that the input statsfile is too short
> Also resolve various other potential weirdness (such as multiple
> copies of the same error message in threaded mode).
>> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=418cace8646a6f546a9026da47f79fad7285f577
> ---
> encoder/ratecontrol.c | 25 ++++++++++++++-----------
> 1 files changed, 14 insertions(+), 11 deletions(-)
> diff --git a/encoder/ratecontrol.c b/encoder/ratecontrol.c
> index 876551f..75d7532 100644
> --- a/encoder/ratecontrol.c
> +++ b/encoder/ratecontrol.c
> @@ -441,9 +441,6 @@ int x264_ratecontrol_new( x264_t *h )
> return -1;
> }
>
> - /* FIXME: ugly padding because VfW drops delayed B-frames */
- rc->>num_entries += h->param.i_bframe;
> -
> rc->entry = (ratecontrol_entry_t*)
> x264_malloc(rc->num_entries * sizeof(ratecontrol_entry_t));
> memset(rc->entry, 0, rc->num_entries * sizeof(ratecontrol_entry_t));
>
> @@ -981,6 +978,7 @@ int x264_ratecontrol_slice_type( x264_t *h, int frame_num )
> /* We could try to initialize everything required for ABR and
> * adaptive B-frames, but that would be complicated.
> * So just calculate the average QP used so far. */
> + int i;
>
> h->param.rc.i_qp_constant =
> (h->stat.i_slice_count[SLICE_TYPE_P] == 0) ? 24
> : 1 +
> h->stat.f_slice_qp[SLICE_TYPE_P] /
> h->stat.i_slice_count[SLICE_TYPE_P];
> @@ -993,14 +991,19 @@ int x264_ratecontrol_slice_type( x264_t *h, int frame_num )
> if( h->param.i_bframe_adaptive )
> x264_log(h, X264_LOG_ERROR, "disabling adaptive B-frames\n");
>
- rc->>b_abr = 0;
- rc->>b_2pass = 0;
- h->>param.rc.i_rc_method = X264_RC_CQP;
- h->>param.rc.b_stat_read = 0;
- h->>param.i_bframe_adaptive = 0;
- if( h->>param.i_bframe > 1 )
- h->>param.i_bframe = 1;
> - return X264_TYPE_P;
> + for( i = 0; i < h->param.i_threads; i++ )
> + {
+ h->>thread[i]->rc->b_abr = 0;
+ h->>thread[i]->rc->b_2pass = 0;
+ h->>thread[i]->param.rc.i_rc_method = X264_RC_CQP;
+ h->>thread[i]->param.rc.b_stat_read = 0;
+ h->>thread[i]->param.i_bframe_adaptive = 0;
+ h->>thread[i]->param.b_pre_scenecut = 0;
+ h->>thread[i]->param.i_scenecut_threshold = -1;
> + if( h->thread[i]->param.i_bframe > 1 )
> + h->thread[i]->param.i_bframe = 1;
> + }
> + return X264_TYPE_AUTO;
> }
> switch( rc->entry[frame_num].pict_type )
> {
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> http://mailman.videolan.org/listinfo/x264-devel
Does it thread-safe to do such thing?
More information about the x264-devel
mailing list