mirror of https://github.com/mpv-player/mpv
command: change properties added in previous commit
Make their meaning more exact, and don't pretend that there's a reasonable definition for "bits-per-pixel". Also make unset fields unavailable. average_depth still might be inconsistent: for example, 10 bit 4:2:0 is identified as 24 bits, but RGB 4:4:4 as 12 bits. So YUV formats seemingly drop the per-component padding, while RGB formats do not. Internally it's consistent though: 10 bit YUV components are read as 16 bit, and the padding must be 0 (it's basically like an odd fixed- point representation, rather than a bitfield).
This commit is contained in:
parent
242558bec1
commit
e5f2072364
|
@ -1119,11 +1119,15 @@ Property list
|
|||
The pixel format as string. This uses the same names as used in other
|
||||
places of mpv.
|
||||
|
||||
``video-params/bpp``
|
||||
Bits-per-pixel as integer.
|
||||
``video-params/average_bpp``
|
||||
Average bits-per-pixel as integer. Subsampled planar formats use a
|
||||
different resolution, which is the reason this value can sometimes be
|
||||
odd or confusing. Can be unavailable with some formats.
|
||||
|
||||
``video-params/depth``
|
||||
Bit depth for each color component as integer.
|
||||
``video-params/plane_depth``
|
||||
Bit depth for each color component as integer. This is only exposed
|
||||
for planar or single-component formats, and is unavailable for other
|
||||
formats.
|
||||
|
||||
``video-params/w``, ``video-params/h``
|
||||
Video size as integers, with no aspect correction applied.
|
||||
|
|
|
@ -2396,20 +2396,17 @@ static int property_imgparams(struct mp_image_params p, int action, void *arg)
|
|||
double dar = p.d_w / (double)p.d_h;
|
||||
double sar = p.w / (double)p.h;
|
||||
|
||||
const struct mp_imgfmt_desc desc = mp_imgfmt_get_desc(p.imgfmt);
|
||||
struct mp_imgfmt_desc desc = mp_imgfmt_get_desc(p.imgfmt);
|
||||
int bpp = 0;
|
||||
// unknown bpp for hwdec
|
||||
if (!IMGFMT_IS_HWACCEL(desc.id)) {
|
||||
for (int i=0; i<desc.num_planes; ++i)
|
||||
bpp += desc.bpp[i] >> (desc.xs[i] + desc.ys[i]);
|
||||
}
|
||||
// hwdec supports 8bit depth only
|
||||
const int depth = IMGFMT_IS_HWACCEL(desc.id) ? 8 : desc.plane_bits;
|
||||
for (int i = 0; i < desc.num_planes; i++)
|
||||
bpp += desc.bpp[i] >> (desc.xs[i] + desc.ys[i]);
|
||||
|
||||
struct m_sub_property props[] = {
|
||||
{"pixelformat", SUB_PROP_STR(mp_imgfmt_to_name(p.imgfmt))},
|
||||
{"bpp", SUB_PROP_INT(bpp)},
|
||||
{"depth", SUB_PROP_INT(depth)},
|
||||
{"average_bpp", SUB_PROP_INT(bpp),
|
||||
.unavailable = !bpp},
|
||||
{"plane_depth", SUB_PROP_INT(desc.plane_bits),
|
||||
.unavailable = !(desc.flags & MP_IMGFLAG_PLANAR)},
|
||||
{"w", SUB_PROP_INT(p.w)},
|
||||
{"h", SUB_PROP_INT(p.h)},
|
||||
{"dw", SUB_PROP_INT(p.d_w)},
|
||||
|
|
|
@ -240,8 +240,10 @@ struct mp_imgfmt_desc mp_imgfmt_get_desc(int mpfmt)
|
|||
if ((desc.bpp[0] % 8) != 0)
|
||||
desc.align_x = 8 / desc.bpp[0]; // expect power of 2
|
||||
|
||||
if (pd->flags & AV_PIX_FMT_FLAG_HWACCEL)
|
||||
if (pd->flags & AV_PIX_FMT_FLAG_HWACCEL) {
|
||||
desc.flags |= MP_IMGFLAG_HWACCEL;
|
||||
desc.plane_bits = 8; // usually restricted to 8 bit; may change
|
||||
}
|
||||
|
||||
return desc;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue