mirror of https://github.com/mpv-player/mpv
player/command: add track-list/N/decoder
This commit is contained in:
parent
8a4ecda940
commit
a569c3ce0c
|
@ -0,0 +1 @@
|
|||
add `track-list/N/decoder`
|
|
@ -3077,6 +3077,9 @@ Property list
|
|||
match even if the default (builtin) demuxer is used, but there is
|
||||
no hard guarantee.
|
||||
|
||||
``track-list/N/decoder``
|
||||
If this track is being decoded, the short decoder name,
|
||||
|
||||
``track-list/N/decoder-desc``
|
||||
If this track is being decoded, the human-readable decoder name,
|
||||
|
||||
|
|
|
@ -410,4 +410,6 @@ void mp_codec_info_from_av(const AVCodecContext *avctx, struct mp_codec_params *
|
|||
c->codec_profile = avcodec_profile_name(avctx->codec_id, avctx->profile);
|
||||
c->codec = avctx->codec_descriptor->name;
|
||||
c->codec_desc = avctx->codec_descriptor->long_name;
|
||||
c->decoder = avctx->codec->name;
|
||||
c->decoder_desc = avctx->codec->long_name;
|
||||
}
|
||||
|
|
|
@ -78,6 +78,12 @@ struct mp_codec_params {
|
|||
// Corresponding codec profile
|
||||
const char *codec_profile;
|
||||
|
||||
// E.g. "h264" (usually corresponds to AVCodec.name)
|
||||
const char *decoder;
|
||||
|
||||
// Usually corresponds to AVCodec.long_name
|
||||
const char *decoder_desc;
|
||||
|
||||
// Usually a FourCC, exact meaning depends on codec.
|
||||
unsigned int codec_tag;
|
||||
|
||||
|
|
|
@ -224,7 +224,6 @@ struct priv {
|
|||
|
||||
// --- Protected by cache_lock.
|
||||
char *cur_hwdec;
|
||||
char *decoder_desc;
|
||||
bool try_spdif;
|
||||
bool attached_picture;
|
||||
bool pts_reset;
|
||||
|
@ -397,9 +396,6 @@ static bool reinit_decoder(struct priv *p)
|
|||
reset_decoder(p);
|
||||
p->has_broken_packet_pts = -10; // needs 10 packets to reach decision
|
||||
|
||||
talloc_free(p->decoder_desc);
|
||||
p->decoder_desc = NULL;
|
||||
|
||||
const struct mp_decoder_fns *driver = NULL;
|
||||
struct mp_decoder_list *list = NULL;
|
||||
char *user_list = NULL;
|
||||
|
@ -451,11 +447,12 @@ static bool reinit_decoder(struct priv *p)
|
|||
|
||||
p->decoder = driver->create(p->decf, p->codec, sel->decoder);
|
||||
if (p->decoder) {
|
||||
mp_mutex_lock(&p->cache_lock);
|
||||
const char *d = sel->desc && sel->desc[0] ? sel->desc : sel->decoder;
|
||||
p->decoder_desc = talloc_strdup(p, d);
|
||||
MP_VERBOSE(p, "Selected codec: %s\n", p->decoder_desc);
|
||||
mp_mutex_unlock(&p->cache_lock);
|
||||
p->codec->decoder = talloc_strdup(p, sel->decoder);
|
||||
p->codec->decoder_desc = talloc_strdup(p, sel->desc && sel->desc[0] ? sel->desc : NULL);
|
||||
MP_VERBOSE(p, "Selected decoder: %s", sel->decoder);
|
||||
if (p->codec->decoder_desc)
|
||||
MP_VERBOSE(p, " - %s", p->codec->decoder_desc);
|
||||
MP_VERBOSE(p, "\n");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -482,15 +479,6 @@ bool mp_decoder_wrapper_reinit(struct mp_decoder_wrapper *d)
|
|||
return res;
|
||||
}
|
||||
|
||||
void mp_decoder_wrapper_get_desc(struct mp_decoder_wrapper *d,
|
||||
char *buf, size_t buf_size)
|
||||
{
|
||||
struct priv *p = d->f->priv;
|
||||
mp_mutex_lock(&p->cache_lock);
|
||||
snprintf(buf, buf_size, "%s", p->decoder_desc ? p->decoder_desc : "");
|
||||
mp_mutex_unlock(&p->cache_lock);
|
||||
}
|
||||
|
||||
void mp_decoder_wrapper_set_frame_drops(struct mp_decoder_wrapper *d, int num)
|
||||
{
|
||||
struct priv *p = d->f->priv;
|
||||
|
|
|
@ -43,10 +43,6 @@ struct mp_decoder_wrapper {
|
|||
struct mp_decoder_wrapper *mp_decoder_wrapper_create(struct mp_filter *parent,
|
||||
struct sh_stream *src);
|
||||
|
||||
// For informational purposes.
|
||||
void mp_decoder_wrapper_get_desc(struct mp_decoder_wrapper *d,
|
||||
char *buf, size_t buf_size);
|
||||
|
||||
// Legacy decoder framedrop control.
|
||||
void mp_decoder_wrapper_set_frame_drops(struct mp_decoder_wrapper *d, int num);
|
||||
int mp_decoder_wrapper_get_frames_dropped(struct mp_decoder_wrapper *d);
|
||||
|
|
|
@ -1977,10 +1977,6 @@ static int get_track_entry(int item, int action, void *arg, void *ctx)
|
|||
struct mp_codec_params p =
|
||||
track->stream ? *track->stream->codec : (struct mp_codec_params){0};
|
||||
|
||||
char decoder_desc[256] = {0};
|
||||
if (track->dec)
|
||||
mp_decoder_wrapper_get_desc(track->dec, decoder_desc, sizeof(decoder_desc));
|
||||
|
||||
bool has_rg = track->stream && track->stream->codec->replaygain_data;
|
||||
struct replaygain_data rg = has_rg ? *track->stream->codec->replaygain_data
|
||||
: (struct replaygain_data){0};
|
||||
|
@ -2029,8 +2025,10 @@ static int get_track_entry(int item, int action, void *arg, void *ctx)
|
|||
.unavailable = !track->hls_bitrate},
|
||||
{"program-id", SUB_PROP_INT(track->program_id),
|
||||
.unavailable = track->program_id < 0},
|
||||
{"decoder-desc", SUB_PROP_STR(decoder_desc),
|
||||
.unavailable = !decoder_desc[0]},
|
||||
{"decoder", SUB_PROP_STR(p.decoder),
|
||||
.unavailable = !p.decoder},
|
||||
{"decoder-desc", SUB_PROP_STR(p.decoder_desc),
|
||||
.unavailable = !p.decoder_desc},
|
||||
{"codec", SUB_PROP_STR(p.codec),
|
||||
.unavailable = !p.codec},
|
||||
{"codec-desc", SUB_PROP_STR(p.codec_desc),
|
||||
|
|
Loading…
Reference in New Issue