[vlc-commits] misc/image: fixed overwriting of correct visible dimensions
Maxim Bublis
git at videolan.org
Fri Jan 24 17:04:09 CET 2014
vlc | branch: master | Maxim Bublis <b at codemonkey.ru> | Fri Jan 24 18:08:51 2014 +0400| [e3b809c1e4d16d858732d467b5ecd10b81d16db8] | committer: Jean-Baptiste Kempf
misc/image: fixed overwriting of correct visible dimensions
In some cases fmt_in already contains correct i_visible_width and i_visible_height values.
This patch fixes incorrect overwriting of valid values.
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e3b809c1e4d16d858732d467b5ecd10b81d16db8
---
src/misc/image.c | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/src/misc/image.c b/src/misc/image.c
index 6489259..c399b8b 100644
--- a/src/misc/image.c
+++ b/src/misc/image.c
@@ -707,34 +707,39 @@ static encoder_t *CreateEncoder( vlc_object_t *p_this, video_format_t *fmt_in,
p_enc->p_module = NULL;
es_format_Init( &p_enc->fmt_in, VIDEO_ES, fmt_in->i_chroma );
p_enc->fmt_in.video = *fmt_in;
- if( fmt_out->i_width > 0 && fmt_out->i_height > 0 )
- {
- p_enc->fmt_in.video.i_width = fmt_out->i_width;
- p_enc->fmt_in.video.i_height = fmt_out->i_height;
- if( fmt_out->i_visible_width > 0 &&
- fmt_out->i_visible_height > 0 )
+ if( p_enc->fmt_in.video.i_visible_width == 0 ||
+ p_enc->fmt_in.video.i_visible_height == 0 )
+ {
+ if( fmt_out->i_width > 0 && fmt_out->i_height > 0 )
{
- p_enc->fmt_in.video.i_visible_width = fmt_out->i_visible_width;
- p_enc->fmt_in.video.i_visible_height = fmt_out->i_visible_height;
+ p_enc->fmt_in.video.i_width = fmt_out->i_width;
+ p_enc->fmt_in.video.i_height = fmt_out->i_height;
+
+ if( fmt_out->i_visible_width > 0 &&
+ fmt_out->i_visible_height > 0 )
+ {
+ p_enc->fmt_in.video.i_visible_width = fmt_out->i_visible_width;
+ p_enc->fmt_in.video.i_visible_height = fmt_out->i_visible_height;
+ }
+ else
+ {
+ p_enc->fmt_in.video.i_visible_width = fmt_out->i_width;
+ p_enc->fmt_in.video.i_visible_height = fmt_out->i_height;
+ }
}
- else
+ else if( fmt_out->i_sar_num && fmt_out->i_sar_den &&
+ fmt_out->i_sar_num * fmt_in->i_sar_den !=
+ fmt_out->i_sar_den * fmt_in->i_sar_num )
{
- p_enc->fmt_in.video.i_visible_width = fmt_out->i_width;
- p_enc->fmt_in.video.i_visible_height = fmt_out->i_height;
+ p_enc->fmt_in.video.i_width =
+ fmt_in->i_sar_num * (int64_t)fmt_out->i_sar_den * fmt_in->i_width /
+ fmt_in->i_sar_den / fmt_out->i_sar_num;
+ p_enc->fmt_in.video.i_visible_width =
+ fmt_in->i_sar_num * (int64_t)fmt_out->i_sar_den *
+ fmt_in->i_visible_width / fmt_in->i_sar_den / fmt_out->i_sar_num;
}
}
- else if( fmt_out->i_sar_num && fmt_out->i_sar_den &&
- fmt_out->i_sar_num * fmt_in->i_sar_den !=
- fmt_out->i_sar_den * fmt_in->i_sar_num )
- {
- p_enc->fmt_in.video.i_width =
- fmt_in->i_sar_num * (int64_t)fmt_out->i_sar_den * fmt_in->i_width /
- fmt_in->i_sar_den / fmt_out->i_sar_num;
- p_enc->fmt_in.video.i_visible_width =
- fmt_in->i_sar_num * (int64_t)fmt_out->i_sar_den *
- fmt_in->i_visible_width / fmt_in->i_sar_den / fmt_out->i_sar_num;
- }
p_enc->fmt_in.video.i_frame_rate = 25;
p_enc->fmt_in.video.i_frame_rate_base = 1;
More information about the vlc-commits
mailing list