History

player/command: add track-list/N/decoder

Kacper Michajłow committed 2 years ago

Commit a569c3c1 parent 8a4ecda7 files · +22 −28Browse files

Unified · Split

7 files
  1. DOCS/interface-changes/track-list-decoder-tag.txt +1 −0
  2. DOCS/man/input.rst +3 −0
  3. common/av_common.c +2 −0
  4. demux/stheader.h +6 −0
  5. filters/f_decoder_wrapper.c +6 −18
  6. filters/f_decoder_wrapper.h +0 −4
  7. player/command.c +4 −6
DOCS/interface-changes/track-list-decoder-tag.txt+1−0
@@ -0,0 +1 @@
1+add `track-list/N/decoder`
DOCS/man/input.rst+3−0
@@ -3077,6 +3077,9 @@ Property list · 3076 unmodified lines
30773077 match even if the default (builtin) demuxer is used, but there is
30783078 no hard guarantee.
30793079
3080+ ``track-list/N/decoder``
3081+ If this track is being decoded, the short decoder name,
3082+
30803083 ``track-list/N/decoder-desc``
30813084 If this track is being decoded, the human-readable decoder name,
30823085
common/av_common.c+2−0
@@ -410,4 +410,6 @@ void mp_codec_info_from_av(const AVCodecContext *avctx, struct mp_codec_params * · 409 unmodified lines
410410 c->codec_profile = avcodec_profile_name(avctx->codec_id, avctx->profile);
411411 c->codec = avctx->codec_descriptor->name;
412412 c->codec_desc = avctx->codec_descriptor->long_name;
413+ c->decoder = avctx->codec->name;
414+ c->decoder_desc = avctx->codec->long_name;
413415 }
demux/stheader.h+6−0
@@ -78,6 +78,12 @@ struct mp_codec_params { · 77 unmodified lines
7878 // Corresponding codec profile
7979 const char *codec_profile;
8080
81+ // E.g. "h264" (usually corresponds to AVCodec.name)
82+ const char *decoder;
83+
84+ // Usually corresponds to AVCodec.long_name
85+ const char *decoder_desc;
86+
8187 // Usually a FourCC, exact meaning depends on codec.
8288 unsigned int codec_tag;
8389
filters/f_decoder_wrapper.c+6−18
@@ -224,7 +224,6 @@ struct priv { · 223 unmodified lines
224224
225225 // --- Protected by cache_lock.
226226 char *cur_hwdec;
227− char *decoder_desc;
228227 bool try_spdif;
229228 bool attached_picture;
230229 bool pts_reset;
@@ -397,9 +396,6 @@ static bool reinit_decoder(struct priv *p) · 166 unmodified lines
397396 reset_decoder(p);
398397 p->has_broken_packet_pts = -10; // needs 10 packets to reach decision
399398
400− talloc_free(p->decoder_desc);
401− p->decoder_desc = NULL;
402−
403399 const struct mp_decoder_fns *driver = NULL;
404400 struct mp_decoder_list *list = NULL;
405401 char *user_list = NULL;
@@ -451,11 +447,12 @@ static bool reinit_decoder(struct priv *p) · 45 unmodified lines
451447
452448 p->decoder = driver->create(p->decf, p->codec, sel->decoder);
453449 if (p->decoder) {
454− mp_mutex_lock(&p->cache_lock);
455− const char *d = sel->desc && sel->desc[0] ? sel->desc : sel->decoder;
456− p->decoder_desc = talloc_strdup(p, d);
457− MP_VERBOSE(p, "Selected codec: %s\n", p->decoder_desc);
458− mp_mutex_unlock(&p->cache_lock);
450+ p->codec->decoder = talloc_strdup(p, sel->decoder);
451+ p->codec->decoder_desc = talloc_strdup(p, sel->desc && sel->desc[0] ? sel->desc : NULL);
452+ MP_VERBOSE(p, "Selected decoder: %s", sel->decoder);
453+ if (p->codec->decoder_desc)
454+ MP_VERBOSE(p, " - %s", p->codec->decoder_desc);
455+ MP_VERBOSE(p, "\n");
459456 break;
460457 }
461458
@@ -482,15 +479,6 @@ bool mp_decoder_wrapper_reinit(struct mp_decoder_wrapper *d) · 20 unmodified lines
482479 return res;
483480 }
484481
485−void mp_decoder_wrapper_get_desc(struct mp_decoder_wrapper *d,
486− char *buf, size_t buf_size)
487−{
488− struct priv *p = d->f->priv;
489− mp_mutex_lock(&p->cache_lock);
490− snprintf(buf, buf_size, "%s", p->decoder_desc ? p->decoder_desc : "");
491− mp_mutex_unlock(&p->cache_lock);
492−}
493−
494482 void mp_decoder_wrapper_set_frame_drops(struct mp_decoder_wrapper *d, int num)
495483 {
496484 struct priv *p = d->f->priv;
filters/f_decoder_wrapper.h+0−4
@@ -43,10 +43,6 @@ struct mp_decoder_wrapper { · 42 unmodified lines
4343 struct mp_decoder_wrapper *mp_decoder_wrapper_create(struct mp_filter *parent,
4444 struct sh_stream *src);
4545
46−// For informational purposes.
47−void mp_decoder_wrapper_get_desc(struct mp_decoder_wrapper *d,
48− char *buf, size_t buf_size);
49−
5046 // Legacy decoder framedrop control.
5147 void mp_decoder_wrapper_set_frame_drops(struct mp_decoder_wrapper *d, int num);
5248 int mp_decoder_wrapper_get_frames_dropped(struct mp_decoder_wrapper *d);
player/command.c+4−6
@@ -1977,10 +1977,6 @@ static int get_track_entry(int item, int action, void *arg, void *ctx) · 1976 unmodified lines
19771977 struct mp_codec_params p =
19781978 track->stream ? *track->stream->codec : (struct mp_codec_params){0};
19791979
1980− char decoder_desc[256] = {0};
1981− if (track->dec)
1982− mp_decoder_wrapper_get_desc(track->dec, decoder_desc, sizeof(decoder_desc));
1983−
19841980 bool has_rg = track->stream && track->stream->codec->replaygain_data;
19851981 struct replaygain_data rg = has_rg ? *track->stream->codec->replaygain_data
19861982 : (struct replaygain_data){0};
@@ -2029,8 +2025,10 @@ static int get_track_entry(int item, int action, void *arg, void *ctx) · 42 unmodified lines
20292025 .unavailable = !track->hls_bitrate},
20302026 {"program-id", SUB_PROP_INT(track->program_id),
20312027 .unavailable = track->program_id < 0},
2032− {"decoder-desc", SUB_PROP_STR(decoder_desc),
2033− .unavailable = !decoder_desc[0]},
2028+ {"decoder", SUB_PROP_STR(p.decoder),
2029+ .unavailable = !p.decoder},
2030+ {"decoder-desc", SUB_PROP_STR(p.decoder_desc),
2031+ .unavailable = !p.decoder_desc},
20342032 {"codec", SUB_PROP_STR(p.codec),
20352033 .unavailable = !p.codec},
20362034 {"codec-desc", SUB_PROP_STR(p.codec_desc),

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t