Merge commit 'cea1eef25c3310a68dd327eb74aae14ad3c2ddef'
authorHendrik Leppkes <h.leppkes@gmail.com>
Fri, 1 Jan 2016 15:29:28 +0000 (16:29 +0100)
committerHendrik Leppkes <h.leppkes@gmail.com>
Fri, 1 Jan 2016 15:29:28 +0000 (16:29 +0100)
* commit 'cea1eef25c3310a68dd327eb74aae14ad3c2ddef':
  lavc: get the profile name through the codec descriptor in avcodec_string()

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/utils.c

@@@ -2666,50 -1747,27 +2666,41 @@@ size_t av_get_codec_tag_string(char *bu
  
  void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
  {
 +    const char *codec_type;
      const char *codec_name;
      const char *profile = NULL;
-     const AVCodec *p;
 -    char buf1[32];
 -    int bitrate;
 +    int64_t bitrate;
      int new_line = 0;
      AVRational display_aspect_ratio;
 -    const AVCodecDescriptor *desc = avcodec_descriptor_get(enc->codec_id);
 +    const char *separator = enc->dump_separator ? (const char *)enc->dump_separator : ", ";
  
 -    if (desc) {
 -        codec_name = desc->name;
 -        profile = avcodec_profile_name(enc->codec_id, enc->profile);
 -    } else if (enc->codec_id == AV_CODEC_ID_MPEG2TS) {
 -        /* fake mpeg2 transport stream codec (currently not
 -         * registered) */
 -        codec_name = "mpeg2ts";
 -    } else {
 -        /* output avi tags */
 +    if (!buf || buf_size <= 0)
 +        return;
 +    codec_type = av_get_media_type_string(enc->codec_type);
 +    codec_name = avcodec_get_name(enc->codec_id);
-     if (enc->profile != FF_PROFILE_UNKNOWN) {
-         if (enc->codec)
-             p = enc->codec;
-         else
-             p = encode ? avcodec_find_encoder(enc->codec_id) :
-                         avcodec_find_decoder(enc->codec_id);
-         if (p)
-             profile = av_get_profile_name(p, enc->profile);
-     }
++    profile = avcodec_profile_name(enc->codec_id, enc->profile);
 +
 +    snprintf(buf, buf_size, "%s: %s", codec_type ? codec_type : "unknown",
 +             codec_name);
 +    buf[0] ^= 'a' ^ 'A'; /* first letter in uppercase */
 +
 +    if (enc->codec && strcmp(enc->codec->name, codec_name))
 +        snprintf(buf + strlen(buf), buf_size - strlen(buf), " (%s)", enc->codec->name);
 +
 +    if (profile)
 +        snprintf(buf + strlen(buf), buf_size - strlen(buf), " (%s)", profile);
 +    if (   enc->codec_type == AVMEDIA_TYPE_VIDEO
 +        && av_log_get_level() >= AV_LOG_VERBOSE
 +        && enc->refs)
 +        snprintf(buf + strlen(buf), buf_size - strlen(buf),
 +                 ", %d reference frame%s",
 +                 enc->refs, enc->refs > 1 ? "s" : "");
 +
 +    if (enc->codec_tag) {
          char tag_buf[32];
          av_get_codec_tag_string(tag_buf, sizeof(tag_buf), enc->codec_tag);
 -        snprintf(buf1, sizeof(buf1), "%s / 0x%04X", tag_buf, enc->codec_tag);
 -        codec_name = buf1;
 +        snprintf(buf + strlen(buf), buf_size - strlen(buf),
 +                 " (%s / 0x%04X)", tag_buf, enc->codec_tag);
      }
  
      switch (enc->codec_type) {