diff options
author | wm4 <wm4@nowhere> | 2013-11-03 23:55:16 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-11-03 23:55:16 +0100 |
commit | 6f17410f88fd3765b6598b4e706b1d03ee85efe8 (patch) | |
tree | 20847e88cd1c5780f58eef1ccf1c32743d5b4f37 /video | |
parent | 3b5f8ea571b2227097840ff3e0be0168fdd813eb (diff) | |
download | mpv-6f17410f88fd3765b6598b4e706b1d03ee85efe8.tar.bz2 mpv-6f17410f88fd3765b6598b4e706b1d03ee85efe8.tar.xz |
mp_image: add helper for copying image attributes
This enw function is similar to mp_image_set_params(), but doesn't force
setting "hard" parameters like image size and format.
Diffstat (limited to 'video')
-rw-r--r-- | video/mp_image.c | 22 | ||||
-rw-r--r-- | video/mp_image.h | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/video/mp_image.c b/video/mp_image.c index 3bc76b669e..9b96bab67d 100644 --- a/video/mp_image.c +++ b/video/mp_image.c @@ -36,6 +36,8 @@ #include "memcpy_pic.h" #include "fmt-conversion.h" +#include "video/filter/vf.h" + #if HAVE_PTHREADS #include <pthread.h> static pthread_mutex_t refcount_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -468,6 +470,26 @@ void mp_image_set_params(struct mp_image *image, image->chroma_location = params->chroma_location; } +// Set most image parameters, but not image format or size. +// Display size is used to set the PAR. +void mp_image_set_attributes(struct mp_image *image, + const struct mp_image_params *params) +{ + struct mp_image_params nparams = *params; + nparams.imgfmt = image->imgfmt; + nparams.w = image->w; + nparams.h = image->h; + if (nparams.imgfmt != params->imgfmt) + mp_image_params_guess_csp(&nparams); + if (nparams.w != params->w || nparams.h != params->h) { + if (nparams.d_w && nparams.d_h) { + vf_rescale_dsize(&nparams.d_w, &nparams.d_h, + params->w, params->h, nparams.w, nparams.h); + } + } + mp_image_set_params(image, &nparams); +} + void mp_image_set_colorspace_details(struct mp_image *image, struct mp_csp_details *csp) { diff --git a/video/mp_image.h b/video/mp_image.h index e198c4e547..f7e7353475 100644 --- a/video/mp_image.h +++ b/video/mp_image.h @@ -153,6 +153,9 @@ void mp_image_params_from_image(struct mp_image_params *params, void mp_image_set_params(struct mp_image *image, const struct mp_image_params *params); +void mp_image_set_attributes(struct mp_image *image, + const struct mp_image_params *params); + struct AVFrame; void mp_image_copy_fields_from_av_frame(struct mp_image *dst, struct AVFrame *src); |