Exemplo n.º 1
0
int show_codecs(void *optctx, const char *opt, const char *arg)
{
    const AVCodecDescriptor **codecs;
    unsigned i, nb_codecs = get_codecs_sorted(&codecs);
	
	char tmp[1024];
    th_writelog("Codecs:\n"
           " D..... = Decoding supported\n"
           " .E.... = Encoding supported\n"
           " ..V... = Video codec\n"
           " ..A... = Audio codec\n"
           " ..S... = Subtitle codec\n"
           " ...I.. = Intra frame-only codec\n"
           " ....L. = Lossy compression\n"
           " .....S = Lossless compression\n"
           " -------\n");
    for (i = 0; i < nb_codecs; ++i) {
        const AVCodecDescriptor *desc = codecs[i];
        const AVCodec *codec = NULL;
		
        _log(" ");
        _log(avcodec_find_decoder(desc->id) ? "D" : ".");
        _log(avcodec_find_encoder(desc->id) ? "E" : ".");
		
        _log(get_media_type_char(desc->type));
        _log((desc->props & AV_CODEC_PROP_INTRA_ONLY) ? "I" : ".");
        _log((desc->props & AV_CODEC_PROP_LOSSY)      ? "L" : ".");
        _log((desc->props & AV_CODEC_PROP_LOSSLESS)   ? "S" : ".");
		
		
        sprintf(tmp, " %-20s %s", desc->name, desc->long_name ? desc->long_name : "");
		
		_log(tmp);
        /* print decoders/encoders when there's more than one or their
         * names are different from codec name */
        while ((codec = next_codec_for_id(desc->id, codec, 0))) {
            if (strcmp(codec->name, desc->name)) {
                print_codecs_for_id(desc->id, 0);
                break;
            }
        }
        codec = NULL;
        while ((codec = next_codec_for_id(desc->id, codec, 1))) {
            if (strcmp(codec->name, desc->name)) {
                print_codecs_for_id(desc->id, 1);
                break;
            }
        }
		_log("\n");
    }
    av_free(codecs);
	
	av_log(0, 0, "%s", text.c_str());
    return 0;
}
Exemplo n.º 2
0
static void get_codecs_for_id(const struct ff_format_desc *format_desc,
		struct ff_codec_desc **first, struct ff_codec_desc **current,
		enum AVCodecID id)
{
	const AVCodec *codec = NULL;
	while ((codec = next_codec_for_id(id, codec)))
		add_codec_to_list(format_desc, first, current, codec->id,
				codec);
}
Exemplo n.º 3
0
static void print_codecs_for_id(enum AVCodecID id, int encoder)
{
    const AVCodec *codec = NULL;
	
    _log(encoder ? "encoders" : "decoders");
	
    while ((codec = next_codec_for_id(id, codec, encoder)))
        _log(codec->name);
	
    _log(")");
}