diff options
Diffstat (limited to 'source/blender/imbuf')
-rw-r--r-- | source/blender/imbuf/intern/anim_movie.c | 8 | ||||
-rw-r--r-- | source/blender/imbuf/intern/indexer.c | 8 |
2 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index b9500c2f798..c07326c1237 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -418,6 +418,7 @@ static int startffmpeg(struct anim * anim) { int frs_num; double frs_den; int streamcount; + int width, height; #ifdef FFMPEG_SWSCALE_COLOR_SPACE_SUPPORT /* The following for color space determination */ @@ -474,6 +475,9 @@ static int startffmpeg(struct anim * anim) { pCodecCtx->workaround_bugs = 1; + width = pCodecCtx->width; + height = pCodecCtx->height; + if(avcodec_open(pCodecCtx, pCodec) < 0) { av_close_input_file(pFormatCtx); return -1; @@ -498,8 +502,8 @@ static int startffmpeg(struct anim * anim) { anim->params = 0; - anim->x = pCodecCtx->width; - anim->y = pCodecCtx->height; + anim->x = width; + anim->y = height; anim->interlacing = 0; anim->orientation = 0; anim->framesize = anim->x * anim->y * 4; diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c index d79e881e5a2..3f764e4d452 100644 --- a/source/blender/imbuf/intern/indexer.c +++ b/source/blender/imbuf/intern/indexer.c @@ -87,7 +87,7 @@ anim_index_builder * IMB_index_builder_create(const char * name) BLI_make_existing_file(rv->temp_name); - rv->fp = fopen(rv->temp_name, "w"); + rv->fp = fopen(rv->temp_name, "wb"); if (!rv->fp) { fprintf(stderr, "Couldn't open index target: %s! " @@ -797,7 +797,7 @@ static int index_rebuild_ffmpeg(struct anim * anim, while(av_read_frame(iFormatCtx, &next_packet) >= 0) { int frame_finished = 0; - float next_progress = ((int)floor(((double) next_packet.pos) * 100 / + float next_progress = (float)((int)floor(((double) next_packet.pos) * 100 / ((double) stream_size)+0.5)) / 100; if (*progress != next_progress) { @@ -840,8 +840,8 @@ static int index_rebuild_ffmpeg(struct anim * anim, start_pts_set = TRUE; } - frameno = (pts - start_pts) - * pts_time_base * frame_rate; + frameno = round((pts - start_pts) + * pts_time_base * frame_rate); /* decoding starts *always* on I-Frames, so: P-Frames won't work, even if all the |