mirror of https://github.com/mpv-player/mpv
command: add encoder-list property
Also change decoder-list (for the sake of sharing the underlying code for both properties).
This commit is contained in:
parent
af66fa8fa5
commit
33774e18ed
|
@ -1999,7 +1999,7 @@ Property list
|
|||
Canonical codec name, which identifies the format the decoder can
|
||||
handle.
|
||||
|
||||
``decoder``
|
||||
``driver``
|
||||
The name of the decoder itself. Often, this is the same as ``codec``.
|
||||
Sometimes it can be different. It is used to distinguish multiple
|
||||
decoders for the same codec.
|
||||
|
@ -2017,9 +2017,14 @@ Property list
|
|||
MPV_FORMAT_NODE_MAP (for each decoder entry)
|
||||
"family" MPV_FORMAT_STRING
|
||||
"codec" MPV_FORMAT_STRING
|
||||
"decoder" MPV_FORMAT_STRING
|
||||
"driver" MPV_FORMAT_STRING
|
||||
"description" MPV_FORMAT_STRING
|
||||
|
||||
``encoder-list``
|
||||
List of libavcodec encoders. This has the same format as ``decoder-list``.
|
||||
The encoder names (``driver`` entries) can be passed to ``--ovc`` and
|
||||
``--oac`` (without the ``lavc:`` prefix required by ``--vd`` and ``--ad``).
|
||||
|
||||
``mpv-version``
|
||||
Return the mpv version/copyright string. Depending on how the binary was
|
||||
built, it might contain either a release version, or just a git hash.
|
||||
|
|
|
@ -158,6 +158,21 @@ void mp_add_lavc_decoders(struct mp_decoder_list *list, enum AVMediaType type)
|
|||
}
|
||||
}
|
||||
|
||||
// (Abuses the decoder list data structures.)
|
||||
void mp_add_lavc_encoders(struct mp_decoder_list *list)
|
||||
{
|
||||
AVCodec *cur = NULL;
|
||||
for (;;) {
|
||||
cur = av_codec_next(cur);
|
||||
if (!cur)
|
||||
break;
|
||||
if (av_codec_is_encoder(cur)) {
|
||||
mp_add_decoder(list, "lavc", mp_codec_from_av_codec_id(cur->id),
|
||||
cur->name, cur->long_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int mp_codec_to_av_codec_id(const char *codec)
|
||||
{
|
||||
int id = AV_CODEC_ID_NONE;
|
||||
|
|
|
@ -36,6 +36,7 @@ int64_t mp_pts_to_av(double mp_pts, AVRational *tb);
|
|||
double mp_pts_from_av(int64_t av_pts, AVRational *tb);
|
||||
void mp_set_avcodec_threads(struct mp_log *l, AVCodecContext *avctx, int threads);
|
||||
void mp_add_lavc_decoders(struct mp_decoder_list *list, enum AVMediaType type);
|
||||
void mp_add_lavc_encoders(struct mp_decoder_list *list);
|
||||
int mp_codec_to_av_codec_id(const char *codec);
|
||||
const char *mp_codec_from_av_codec_id(int codec_id);
|
||||
void mp_set_avdict(struct AVDictionary **dict, char **kv);
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "config.h"
|
||||
#include "mpv_talloc.h"
|
||||
#include "client.h"
|
||||
#include "common/av_common.h"
|
||||
#include "common/codecs.h"
|
||||
#include "common/msg.h"
|
||||
#include "common/msg_control.h"
|
||||
|
@ -3299,7 +3300,7 @@ static int get_decoder_entry(int item, int action, void *arg, void *ctx)
|
|||
struct m_sub_property props[] = {
|
||||
{"family", SUB_PROP_STR(c->family)},
|
||||
{"codec", SUB_PROP_STR(c->codec)},
|
||||
{"decoder", SUB_PROP_STR(c->decoder)},
|
||||
{"driver" , SUB_PROP_STR(c->decoder)},
|
||||
{"description", SUB_PROP_STR(c->desc)},
|
||||
{0}
|
||||
};
|
||||
|
@ -3321,6 +3322,17 @@ static int mp_property_decoders(void *ctx, struct m_property *prop,
|
|||
return r;
|
||||
}
|
||||
|
||||
static int mp_property_encoders(void *ctx, struct m_property *prop,
|
||||
int action, void *arg)
|
||||
{
|
||||
struct mp_decoder_list *codecs = talloc_zero(NULL, struct mp_decoder_list);
|
||||
mp_add_lavc_encoders(codecs);
|
||||
int r = m_property_read_list(action, arg, codecs->num_entries,
|
||||
get_decoder_entry, codecs);
|
||||
talloc_free(codecs);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int mp_property_version(void *ctx, struct m_property *prop,
|
||||
int action, void *arg)
|
||||
{
|
||||
|
@ -3749,6 +3761,7 @@ static const struct m_property mp_properties[] = {
|
|||
|
||||
{"protocol-list", mp_property_protocols},
|
||||
{"decoder-list", mp_property_decoders},
|
||||
{"encoder-list", mp_property_encoders},
|
||||
|
||||
{"mpv-version", mp_property_version},
|
||||
{"mpv-configuration", mp_property_configuration},
|
||||
|
|
Loading…
Reference in New Issue