vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sat Feb 6 16:43:45 2021 +0200| [ade9dd9cd1030bcf5aaddb0ba27c4b167103ccac] | committer: Rémi Denis-Courmont
vout: parse crop string into dedicated structure This changes the parser function to output into a single structure rather than half a dozen different variables. No functional changes. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ade9dd9cd1030bcf5aaddb0ba27c4b167103ccac --- src/video_output/video_output.c | 18 ++++++++---------- src/video_output/vout_internal.h | 5 +---- src/video_output/vout_intf.c | 41 +++++++++++++++++++--------------------- 3 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index d01bf880d6..9ca6dab765 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -2214,24 +2214,22 @@ static void vout_InitSource(vout_thread_sys_t *vout) char *psz_crop = var_InheritString(&vout->obj, "crop"); if (psz_crop) { - unsigned num, den; - unsigned y, x; - unsigned width, height; - enum vout_crop_mode mode; + struct vout_crop crop; - if (GetCropMode(psz_crop, &mode, &num, &den, - &x, &y, &width, &height)) + if (vout_ParseCrop(&crop, psz_crop)) { - switch (mode) + switch (crop.mode) { case VOUT_CROP_RATIO: - vout_SetCropRatio(vout, num, den); + vout_SetCropRatio(vout, crop.ratio.num, crop.ratio.den); break; case VOUT_CROP_WINDOW: - vout_SetCropWindow(vout, x, y, width, height); + vout_SetCropWindow(vout, crop.window.x, crop.window.y, + crop.window.width, crop.window.height); break; case VOUT_CROP_BORDER: - vout_SetCropBorder(vout, x, y, width, height); + vout_SetCropBorder(vout, crop.border.left, crop.border.top, + crop.border.right, crop.border.bottom); break; case VOUT_CROP_NONE: break; diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h index a351106224..42e5748d54 100644 --- a/src/video_output/vout_internal.h +++ b/src/video_output/vout_internal.h @@ -126,10 +126,7 @@ struct vout_crop { }; }; -bool GetCropMode(const char *crop_str, enum vout_crop_mode *mode, - unsigned *num, unsigned *den, - unsigned *x, unsigned *y, - unsigned *width, unsigned *height ); +bool vout_ParseCrop(struct vout_crop *, const char *crop_str); bool GetAspectRatio(const char *ar_str, unsigned *num, unsigned *den); /* TODO to move them to vlc_vout.h */ diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c index a4ea6bf5af..daa1d70eab 100644 --- a/src/video_output/vout_intf.c +++ b/src/video_output/vout_intf.c @@ -449,22 +449,21 @@ exit: free( psz_path ); } -bool GetCropMode(const char *crop_str, enum vout_crop_mode *mode, - unsigned *num, unsigned *den, - unsigned *x, unsigned *y, - unsigned *width, unsigned *height ) +bool vout_ParseCrop(struct vout_crop *restrict cfg, const char *crop_str) { - if (sscanf(crop_str, "%u:%u", num, den) == 2) { - *mode = VOUT_CROP_RATIO; + if (sscanf(crop_str, "%u:%u", &cfg->ratio.num, &cfg->ratio.den) == 2) { + cfg->mode = VOUT_CROP_RATIO; } else if (sscanf(crop_str, "%ux%u+%u+%u", - width, height, x, y) == 4) { - *mode = VOUT_CROP_WINDOW; + &cfg->window.width, &cfg->window.height, + &cfg->window.x, &cfg->window.y) == 4) { + cfg->mode = VOUT_CROP_WINDOW; } else if (sscanf(crop_str, "%u+%u+%u+%u", - x, y, width, height) == 4) { - *mode = VOUT_CROP_BORDER; + &cfg->border.left, &cfg->border.top, + &cfg->border.right, &cfg->border.bottom) == 4) { + cfg->mode = VOUT_CROP_BORDER; } else if (*crop_str == '\0') { - *mode = VOUT_CROP_RATIO; - *num = *den = 0; + cfg->mode = VOUT_CROP_RATIO; + cfg->ratio.num = cfg->ratio.den = 0; } else { return false; } @@ -479,23 +478,21 @@ static int CropCallback( vlc_object_t *object, char const *cmd, { vout_thread_t *vout = (vout_thread_t *)object; VLC_UNUSED(cmd); VLC_UNUSED(oldval); VLC_UNUSED(data); - unsigned num, den; - unsigned y, x; - unsigned width, height; - enum vout_crop_mode mode; + struct vout_crop crop; - if (GetCropMode(newval.psz_string, &mode, &num, &den, - &x, &y, &width, &height)) { - switch (mode) + if (vout_ParseCrop(&crop, newval.psz_string)) { + switch (crop.mode) { case VOUT_CROP_RATIO: - vout_ChangeCropRatio(vout, num, den); + vout_ChangeCropRatio(vout, crop.ratio.num, crop.ratio.den); break; case VOUT_CROP_WINDOW: - vout_ChangeCropWindow(vout, x, y, width, height); + vout_ChangeCropWindow(vout, crop.window.x, crop.window.y, + crop.window.width, crop.window.height); break; case VOUT_CROP_BORDER: - vout_ChangeCropBorder(vout, x, y, width, height); + vout_ChangeCropBorder(vout, crop.border.left, crop.border.top, + crop.border.right, crop.border.bottom); break; case VOUT_CROP_NONE: break; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
