diff --git a/doc/APIchanges b/doc/APIchanges
index 337f1466d8..f3ed86b9b2 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -14,6 +14,9 @@ libavutil:     2021-04-27
 
 API changes, most recent first:
 
+2022-06-XX - xxxxxxxxxxx - lavu 57.19.100 - avutil.h
+  Add av_media_type_get_string() which deprecates av_get_media_type_string().
+
 2022-05-23 - xxxxxxxxx - lavu 57.25.100 - avutil.h
   Deprecate av_fopen_utf8() without replacement.
 
diff --git a/doc/examples/demuxing_decoding.c b/doc/examples/demuxing_decoding.c
index 999a78db0d..467eda8a51 100644
--- a/doc/examples/demuxing_decoding.c
+++ b/doc/examples/demuxing_decoding.c
@@ -155,7 +155,7 @@ static int open_codec_context(int *stream_idx,
     ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0);
     if (ret < 0) {
         fprintf(stderr, "Could not find %s stream in input file '%s'\n",
-                av_get_media_type_string(type), src_filename);
+                av_media_type_get_string(type), src_filename);
         return ret;
     } else {
         stream_index = ret;
@@ -165,7 +165,7 @@ static int open_codec_context(int *stream_idx,
         dec = avcodec_find_decoder(st->codecpar->codec_id);
         if (!dec) {
             fprintf(stderr, "Failed to find %s codec\n",
-                    av_get_media_type_string(type));
+                    av_media_type_get_string(type));
             return AVERROR(EINVAL);
         }
 
@@ -173,21 +173,21 @@ static int open_codec_context(int *stream_idx,
         *dec_ctx = avcodec_alloc_context3(dec);
         if (!*dec_ctx) {
             fprintf(stderr, "Failed to allocate the %s codec context\n",
-                    av_get_media_type_string(type));
+                    av_media_type_get_string(type));
             return AVERROR(ENOMEM);
         }
 
         /* Copy codec parameters from input stream to output codec context */
         if ((ret = avcodec_parameters_to_context(*dec_ctx, st->codecpar)) < 0) {
             fprintf(stderr, "Failed to copy %s codec parameters to decoder context\n",
-                    av_get_media_type_string(type));
+                    av_media_type_get_string(type));
             return ret;
         }
 
         /* Init the decoders */
         if ((ret = avcodec_open2(*dec_ctx, dec, NULL)) < 0) {
             fprintf(stderr, "Failed to open %s codec\n",
-                    av_get_media_type_string(type));
+                    av_media_type_get_string(type));
             return ret;
         }
         *stream_idx = stream_index;
diff --git a/doc/examples/extract_mvs.c b/doc/examples/extract_mvs.c
index cc1311da91..2fb5517708 100644
--- a/doc/examples/extract_mvs.c
+++ b/doc/examples/extract_mvs.c
@@ -85,7 +85,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type)
     ret = av_find_best_stream(fmt_ctx, type, -1, -1, &dec, 0);
     if (ret < 0) {
         fprintf(stderr, "Could not find %s stream in input file '%s'\n",
-                av_get_media_type_string(type), src_filename);
+                av_media_type_get_string(type), src_filename);
         return ret;
     } else {
         int stream_idx = ret;
@@ -109,7 +109,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type)
         av_dict_free(&opts);
         if (ret < 0) {
             fprintf(stderr, "Failed to open %s codec\n",
-                    av_get_media_type_string(type));
+                    av_media_type_get_string(type));
             return ret;
         }
 
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 5ed287c522..e5874dc218 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -894,7 +894,7 @@ static int encode_frame(OutputFile *of, OutputStream *ost, AVFrame *frame)
 {
     AVCodecContext   *enc = ost->enc_ctx;
     AVPacket         *pkt = ost->pkt;
-    const char *type_desc = av_get_media_type_string(enc->codec_type);
+    const char *type_desc = av_media_type_get_string(enc->codec_type);
     const char    *action = frame ? "encode" : "flush";
     int ret;
 
@@ -1443,7 +1443,7 @@ static void print_final_stats(int64_t total_size)
             total_packets += ist->nb_packets;
 
             av_log(NULL, AV_LOG_VERBOSE, "  Input stream #%d:%d (%s): ",
-                   i, j, av_get_media_type_string(type));
+                   i, j, av_media_type_get_string(type));
             av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" packets read (%"PRIu64" bytes); ",
                    ist->nb_packets, ist->data_size);
 
@@ -1477,7 +1477,7 @@ static void print_final_stats(int64_t total_size)
             total_packets += ost->packets_written;
 
             av_log(NULL, AV_LOG_VERBOSE, "  Output stream #%d:%d (%s): ",
-                   i, j, av_get_media_type_string(type));
+                   i, j, av_media_type_get_string(type));
             if (ost->encoding_needed) {
                 av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" frames encoded",
                        ost->frames_encoded);
@@ -3267,7 +3267,7 @@ static void report_new_stream(int input_index, AVPacket *pkt)
         return;
     av_log(file->ctx, AV_LOG_WARNING,
            "New %s stream %d:%d at pos:%"PRId64" and DTS:%ss\n",
-           av_get_media_type_string(st->codecpar->codec_type),
+           av_media_type_get_string(st->codecpar->codec_type),
            input_index, pkt->stream_index,
            pkt->pos, av_ts2timestr(pkt->dts, &st->time_base));
     file->nb_streams_warn = pkt->stream_index + 1;
@@ -4001,7 +4001,7 @@ static int process_input(int file_index)
     if (debug_ts) {
         av_log(NULL, AV_LOG_INFO, "demuxer -> ist_index:%d type:%s "
                "next_dts:%s next_dts_time:%s next_pts:%s next_pts_time:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s off:%s off_time:%s\n",
-               ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
+               ifile->ist_index + pkt->stream_index, av_media_type_get_string(ist->dec_ctx->codec_type),
                av_ts2str(ist->next_dts), av_ts2timestr(ist->next_dts, &AV_TIME_BASE_Q),
                av_ts2str(ist->next_pts), av_ts2timestr(ist->next_pts, &AV_TIME_BASE_Q),
                av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
@@ -4129,7 +4129,7 @@ static int process_input(int file_index)
                        "timestamp discontinuity for stream #%d:%d "
                        "(id=%d, type=%s): %"PRId64", new offset= %"PRId64"\n",
                        ist->file_index, ist->st->index, ist->st->id,
-                       av_get_media_type_string(ist->dec_ctx->codec_type),
+                       av_media_type_get_string(ist->dec_ctx->codec_type),
                        delta, ifile->ts_offset);
                 pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
                 if (pkt->pts != AV_NOPTS_VALUE)
@@ -4158,7 +4158,7 @@ static int process_input(int file_index)
 
     if (debug_ts) {
         av_log(NULL, AV_LOG_INFO, "demuxer+ffmpeg -> ist_index:%d type:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s off:%s off_time:%s\n",
-               ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
+               ifile->ist_index + pkt->stream_index, av_media_type_get_string(ist->dec_ctx->codec_type),
                av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
                av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
                av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, &ist->st->time_base),
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index 794d580635..eb0cd3a045 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -157,7 +157,7 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
     if (debug_ts) {
         av_log(NULL, AV_LOG_INFO, "muxer <- type:%s "
                 "pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s size:%d\n",
-                av_get_media_type_string(ost->enc_ctx->codec_type),
+                av_media_type_get_string(ost->enc_ctx->codec_type),
                 av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->st->time_base),
                 av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->st->time_base),
                 av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, &ost->st->time_base),
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 2c1b3bd0dd..48c4f29d57 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -1705,7 +1705,7 @@ static void check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc,
                "Filtering and streamcopy cannot be used together.\n",
                ost->filters ? "Filtergraph" : "Filtergraph script",
                ost->filters ? ost->filters : ost->filters_script,
-               av_get_media_type_string(type), ost->file_index, ost->index);
+               av_media_type_get_string(type), ost->file_index, ost->index);
         exit_program(1);
     }
 }
diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index 040afa0189..c44c5e4ea6 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -2860,7 +2860,7 @@ static int read_thread(void *arg)
     }
     for (i = 0; i < AVMEDIA_TYPE_NB; i++) {
         if (wanted_stream_spec[i] && st_index[i] == -1) {
-            av_log(NULL, AV_LOG_ERROR, "Stream specifier %s does not match any %s stream\n", wanted_stream_spec[i], av_get_media_type_string(i));
+            av_log(NULL, AV_LOG_ERROR, "Stream specifier %s does not match any %s stream\n", wanted_stream_spec[i], av_media_type_get_string(i));
             st_index[i] = INT_MAX;
         }
     }
@@ -3191,7 +3191,7 @@ static void stream_cycle_channel(VideoState *is, int codec_type)
     if (p && stream_index != -1)
         stream_index = p->stream_index[stream_index];
     av_log(NULL, AV_LOG_INFO, "Switch %s stream from #%d to #%d\n",
-           av_get_media_type_string(codec_type),
+           av_media_type_get_string(codec_type),
            old_index,
            stream_index);
 
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
index c51c82ff65..d5590be133 100644
--- a/fftools/ffprobe.c
+++ b/fftools/ffprobe.c
@@ -2404,15 +2404,12 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
     char val_str[128];
     AVStream *st = ifile->streams[pkt->stream_index].st;
     AVBPrint pbuf;
-    const char *s;
 
     av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
 
     writer_print_section_header(w, SECTION_ID_PACKET);
 
-    s = av_get_media_type_string(st->codecpar->codec_type);
-    if (s) print_str    ("codec_type", s);
-    else   print_str_opt("codec_type", "unknown");
+    print_str("codec_type", av_media_type_get_string(st->codecpar->codec_type));
     print_int("stream_index",     pkt->stream_index);
     print_ts  ("pts",             pkt->pts);
     print_time("pts_time",        pkt->pts, &st->time_base);
@@ -2487,9 +2484,7 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
 
     writer_print_section_header(w, SECTION_ID_FRAME);
 
-    s = av_get_media_type_string(stream->codecpar->codec_type);
-    if (s) print_str    ("media_type", s);
-    else   print_str_opt("media_type", "unknown");
+    print_str("media_type", av_media_type_get_string(stream->codecpar->codec_type));
     print_int("stream_index",           stream->index);
     print_int("key_frame",              frame->key_frame);
     print_ts  ("pts",                   frame->pts);
@@ -2890,9 +2885,7 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
             print_str_opt("profile", "unknown");
     }
 
-    s = av_get_media_type_string(par->codec_type);
-    if (s) print_str    ("codec_type", s);
-    else   print_str_opt("codec_type", "unknown");
+    print_str("codec_type", av_media_type_get_string(par->codec_type));
 
     /* print AVI/FourCC tag */
     print_str("codec_tag_string",    av_fourcc2str(par->codec_tag));
diff --git a/fftools/opt_common.c b/fftools/opt_common.c
index ae5e28a5af..48bedb6440 100644
--- a/fftools/opt_common.c
+++ b/fftools/opt_common.c
@@ -522,7 +522,7 @@ static void show_help_filter(const char *name)
     count = avfilter_filter_pad_count(f, 0);
     for (i = 0; i < count; i++) {
         printf("       #%d: %s (%s)\n", i, avfilter_pad_get_name(f->inputs, i),
-               av_get_media_type_string(avfilter_pad_get_type(f->inputs, i)));
+               av_media_type_get_string(avfilter_pad_get_type(f->inputs, i)));
     }
     if (f->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)
         printf("        dynamic (depending on the options)\n");
@@ -533,7 +533,7 @@ static void show_help_filter(const char *name)
     count = avfilter_filter_pad_count(f, 1);
     for (i = 0; i < count; i++) {
         printf("       #%d: %s (%s)\n", i, avfilter_pad_get_name(f->outputs, i),
-               av_get_media_type_string(avfilter_pad_get_type(f->outputs, i)));
+               av_media_type_get_string(avfilter_pad_get_type(f->outputs, i)));
     }
     if (f->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS)
         printf("        dynamic (depending on the options)\n");
@@ -1313,10 +1313,9 @@ static void print_device_list(const AVDeviceInfoList *device_list)
             device->device_name, device->device_description);
         if (device->nb_media_types > 0) {
             for (int j = 0; j < device->nb_media_types; ++j) {
-                const char* media_type = av_get_media_type_string(device->media_types[j]);
                 if (j > 0)
                     printf(", ");
-                printf("%s", media_type ? media_type : "unknown");
+                printf("%s", av_media_type_get_string(device->media_types[j]));
             }
         } else {
             printf("none");
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index 5f6e71a39e..e02ac2e630 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -528,7 +528,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
     if (!buf || buf_size <= 0)
         return;
     av_bprint_init_for_buffer(&bprint, buf, buf_size);
-    codec_type = av_get_media_type_string(enc->codec_type);
+    codec_type = av_media_type_get_string(enc->codec_type);
     codec_name = avcodec_get_name(enc->codec_id);
     profile = avcodec_profile_name(enc->codec_id, enc->profile);
 
diff --git a/libavcodec/tests/avcodec.c b/libavcodec/tests/avcodec.c
index 08b5fbede1..c10a90fa92 100644
--- a/libavcodec/tests/avcodec.c
+++ b/libavcodec/tests/avcodec.c
@@ -22,12 +22,6 @@
 #include "libavcodec/codec_internal.h"
 #include "libavcodec/internal.h"
 
-static const char *get_type_string(enum AVMediaType type)
-{
-    const char *ret = av_get_media_type_string(type);
-    return ret ? ret : "unknown";
-}
-
 #define AV_LOG(...) av_log(NULL, AV_LOG_FATAL, __VA_ARGS__)
 #define ERR_INTERNAL(msg, ...)                                  \
 do {                                                            \
@@ -76,7 +70,7 @@ int main(void){
             codec->type != AVMEDIA_TYPE_AUDIO &&
             codec->type != AVMEDIA_TYPE_SUBTITLE)
             ERR_EXT("Codec %s has unsupported type %s\n",
-                    get_type_string(codec->type));
+                    av_media_type_get_string(codec->type));
         if (codec->type != AVMEDIA_TYPE_AUDIO) {
             if (codec->ch_layouts || codec->sample_fmts ||
                 codec->supported_samplerates)
@@ -179,7 +173,7 @@ int main(void){
         } else if (desc->type != codec->type)
             ERR_EXT("The type of AVCodec %s and its AVCodecDescriptor differ: "
                     "%s vs %s\n",
-                    get_type_string(codec->type), get_type_string(desc->type));
+                    av_media_type_get_string(codec->type), av_media_type_get_string(desc->type));
     }
     return ret;
 }
diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
index 5946a72cc2..7b36ea4bc9 100644
--- a/libavdevice/dshow.c
+++ b/libavdevice/dshow.c
@@ -577,10 +577,10 @@ dshow_cycle_devices(AVFormatContext *avctx, ICreateDevEnum *devenum,
             else {
                 av_log(avctx, AV_LOG_INFO, "\"%s\"", friendly_name);
                 if (nb_media_types > 0) {
-                    const char* media_type = av_get_media_type_string(media_types[0]);
+                    const char* media_type = av_media_type_get_string(media_types[0]);
                     av_log(avctx, AV_LOG_INFO, " (%s", media_type ? media_type : "unknown");
                     for (int i = 1; i < nb_media_types; ++i) {
-                        media_type = av_get_media_type_string(media_types[i]);
+                        media_type = av_media_type_get_string(media_types[i]);
                         av_log(avctx, AV_LOG_INFO, ", %s", media_type ? media_type : "unknown");
                     }
                     av_log(avctx, AV_LOG_INFO, ")");
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 965f5d0f63..b9be2eb6fe 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -153,8 +153,8 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad,
     if (src->output_pads[srcpad].type != dst->input_pads[dstpad].type) {
         av_log(src, AV_LOG_ERROR,
                "Media type mismatch between the '%s' filter output pad %d (%s) and the '%s' filter input pad %d (%s)\n",
-               src->name, srcpad, (char *)av_x_if_null(av_get_media_type_string(src->output_pads[srcpad].type), "?"),
-               dst->name, dstpad, (char *)av_x_if_null(av_get_media_type_string(dst-> input_pads[dstpad].type), "?"));
+               src->name, srcpad, av_media_type_get_string(src->output_pads[srcpad].type),
+               dst->name, dstpad, av_media_type_get_string(dst-> input_pads[dstpad].type));
         return AVERROR(EINVAL);
     }
 
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index b7dbfc063b..b466c5c55c 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -218,7 +218,7 @@ static int graph_check_validity(AVFilterGraph *graph, void *log_ctx)
                 pad = &filt->input_pads[j];
                 av_log(log_ctx, AV_LOG_ERROR,
                        "Input pad \"%s\" with type %s of the filter instance \"%s\" of %s not connected to any source\n",
-                       pad->name, av_get_media_type_string(pad->type), filt->name, filt->filter->name);
+                       pad->name, av_media_type_get_string(pad->type), filt->name, filt->filter->name);
                 return AVERROR(EINVAL);
             }
         }
@@ -228,7 +228,7 @@ static int graph_check_validity(AVFilterGraph *graph, void *log_ctx)
                 pad = &filt->output_pads[j];
                 av_log(log_ctx, AV_LOG_ERROR,
                        "Output pad \"%s\" with type %s of the filter instance \"%s\" of %s not connected to any destination\n",
-                       pad->name, av_get_media_type_string(pad->type), filt->name, filt->filter->name);
+                       pad->name, av_media_type_get_string(pad->type), filt->name, filt->filter->name);
                 return AVERROR(EINVAL);
             }
         }
diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c
index 711854c23c..6484005921 100644
--- a/libavfilter/src_movie.c
+++ b/libavfilter/src_movie.c
@@ -115,7 +115,7 @@ static AVStream *find_stream(void *log, AVFormatContext *avf, const char *spec)
         ret = av_find_best_stream(avf, type, stream_id, -1, NULL, 0);
         if (ret < 0) {
             av_log(log, AV_LOG_ERROR, "No %s stream with index '%d' found\n",
-                   av_get_media_type_string(type), stream_id);
+                   av_media_type_get_string(type), stream_id);
             return NULL;
         }
         return avf->streams[ret];
@@ -150,7 +150,7 @@ static AVStream *find_stream(void *log, AVFormatContext *avf, const char *spec)
         found->codecpar->codec_type != AVMEDIA_TYPE_AUDIO) {
         av_log(log, AV_LOG_ERROR, "Stream specifier \"%s\" matched a %s stream,"
                "currently unsupported by libavfilter\n", spec,
-               av_get_media_type_string(found->codecpar->codec_type));
+               av_media_type_get_string(found->codecpar->codec_type));
         return NULL;
     }
     return found;
@@ -429,7 +429,7 @@ static char *describe_frame_to_str(char *dst, size_t dst_size,
                  frame->nb_samples);
                  break;
     default:
-        snprintf(dst, dst_size, "%s BUG", av_get_media_type_string(frame_type));
+        snprintf(dst, dst_size, "%s BUG", av_media_type_get_string(frame_type));
         break;
     }
     return dst;
diff --git a/libavformat/avienc.c b/libavformat/avienc.c
index 2264241d57..7a4e73807c 100644
--- a/libavformat/avienc.c
+++ b/libavformat/avienc.c
@@ -475,7 +475,7 @@ static int avi_write_header(AVFormatContext *s)
             default:
                 av_log(s, AV_LOG_ERROR,
                     "Invalid or not supported codec type '%s' found in the input\n",
-                    (char *)av_x_if_null(av_get_media_type_string(par->codec_type), "?"));
+                    av_media_type_get_string(par->codec_type));
                 return AVERROR(EINVAL);
             }
             ff_end_tag(pb, strf);
diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 4e65ba4066..8324d51db6 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -669,7 +669,7 @@ static int flv_init(struct AVFormatContext *s)
             break;
         default:
             av_log(s, AV_LOG_ERROR, "Codec type '%s' for stream %d is not compatible with FLV\n",
-                   av_get_media_type_string(par->codec_type), i);
+                   av_media_type_get_string(par->codec_type), i);
             return AVERROR(EINVAL);
         }
         avpriv_set_pts_info(s->streams[i], 32, 1, 1000); /* 32 bit pts in ms */
diff --git a/libavformat/framehash.c b/libavformat/framehash.c
index 654996e8e0..07c29da82c 100644
--- a/libavformat/framehash.c
+++ b/libavformat/framehash.c
@@ -33,7 +33,7 @@ int ff_framehash_write_header(AVFormatContext *s)
         AVCodecParameters *avctx = st->codecpar;
         char buf[256] = { 0 };
         avio_printf(s->pb, "#tb %d: %d/%d\n", i, st->time_base.num, st->time_base.den);
-        avio_printf(s->pb, "#media_type %d: %s\n", i, av_get_media_type_string(avctx->codec_type));
+        avio_printf(s->pb, "#media_type %d: %s\n", i, av_media_type_get_string(avctx->codec_type));
         avio_printf(s->pb, "#codec_id %d: %s\n", i, avcodec_get_name(avctx->codec_id));
         switch (avctx->codec_type) {
         case AVMEDIA_TYPE_AUDIO: {
diff --git a/libavformat/mov.c b/libavformat/mov.c
index d7be593a86..9514598718 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7306,7 +7306,7 @@ static int mov_read_kind(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 
     av_log(ctx, AV_LOG_TRACE,
            "%s stream %d KindBox(scheme: %s, value: %s)\n",
-           av_get_media_type_string(st->codecpar->codec_type),
+           av_media_type_get_string(st->codecpar->codec_type),
            st->index,
            scheme_buf.str, value_buf.str);
 
diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index 62692bfcd1..3e44663715 100644
--- a/libavformat/mpegenc.c
+++ b/libavformat/mpegenc.c
@@ -458,7 +458,7 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
             break;
         default:
             av_log(ctx, AV_LOG_ERROR, "Invalid media type %s for output stream #%d\n",
-                   av_get_media_type_string(st->codecpar->codec_type), i);
+                   av_media_type_get_string(st->codecpar->codec_type), i);
             return AVERROR(EINVAL);
         }
         stream->fifo = av_fifo_alloc2(16, 1, 0);
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 6e761c07f1..13292f8041 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -2258,7 +2258,7 @@ static AVStream *find_matching_stream(MpegTSContext *ts, int pid, unsigned int p
     if (found) {
         av_log(ts->stream, AV_LOG_VERBOSE,
                "re-using existing %s stream %d (pid=0x%x) for new pid=0x%x\n",
-               av_get_media_type_string(found->codecpar->codec_type),
+               av_media_type_get_string(found->codecpar->codec_type),
                found->index, found->id, pid);
     }
 
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 6a22c33995..0af77c681e 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -2418,7 +2418,7 @@ static int mxf_add_metadata_stream(MXFContext *mxf, MXFTrack *track)
         av_dict_set(&st->metadata, "track_name", track->name, 0);
 
     codec_ul = mxf_get_codec_ul(ff_mxf_data_definition_uls, &track->sequence->data_definition_ul);
-    av_dict_set(&st->metadata, "data_type", av_get_media_type_string(codec_ul->id), 0);
+    av_dict_set(&st->metadata, "data_type", av_media_type_get_string(codec_ul->id), 0);
     return 0;
 }
 
diff --git a/libavformat/segment.c b/libavformat/segment.c
index fa435d9f32..231d845ab3 100644
--- a/libavformat/segment.c
+++ b/libavformat/segment.c
@@ -738,7 +738,7 @@ static int seg_init(AVFormatContext *s)
         return ret;
     av_log(s, AV_LOG_VERBOSE, "Selected stream id:%d type:%s\n",
            seg->reference_stream_index,
-           av_get_media_type_string(s->streams[seg->reference_stream_index]->codecpar->codec_type));
+           av_media_type_get_string(s->streams[seg->reference_stream_index]->codecpar->codec_type));
 
     seg->oformat = av_guess_format(seg->format, s->url, NULL);
 
diff --git a/libavformat/tee.c b/libavformat/tee.c
index f1f2a9d2a5..3144ab4000 100644
--- a/libavformat/tee.c
+++ b/libavformat/tee.c
@@ -419,7 +419,7 @@ static void log_slave(TeeSlave *slave, void *log_ctx, int log_level)
 
         av_log(log_ctx, log_level, "    stream:%d codec:%s type:%s",
                i, avcodec_get_name(st->codecpar->codec_id),
-               av_get_media_type_string(st->codecpar->codec_type));
+               av_media_type_get_string(st->codecpar->codec_type));
 
         bsf_name = bsf->filter->priv_class ?
                    bsf->filter->priv_class->item_name(bsf) : bsf->filter->name;
diff --git a/libavformat/uncodedframecrcenc.c b/libavformat/uncodedframecrcenc.c
index 99990616d3..c6476a4c43 100644
--- a/libavformat/uncodedframecrcenc.c
+++ b/libavformat/uncodedframecrcenc.c
@@ -131,7 +131,6 @@ static int write_frame(struct AVFormatContext *s, int stream_index,
     AVBPrint bp;
     int ret = 0;
     enum AVMediaType type;
-    const char *type_name;
 
     if ((flags & AV_WRITE_UNCODED_FRAME_QUERY))
         return 0;
@@ -140,8 +139,7 @@ static int write_frame(struct AVFormatContext *s, int stream_index,
     av_bprintf(&bp, "%d, %10"PRId64"",
                stream_index, (*frame)->pts);
     type = s->streams[stream_index]->codecpar->codec_type;
-    type_name = av_get_media_type_string(type);
-    av_bprintf(&bp, ", %s", type_name ? type_name : "unknown");
+    av_bprintf(&bp, ", %s", av_media_type_get_string(type));
     switch (type) {
         case AVMEDIA_TYPE_VIDEO:
             video_frame_cksum(&bp, *frame);
diff --git a/libavutil/avutil.h b/libavutil/avutil.h
index 64b68bdbd3..542cfd111e 100644
--- a/libavutil/avutil.h
+++ b/libavutil/avutil.h
@@ -21,6 +21,8 @@
 #ifndef AVUTIL_AVUTIL_H
 #define AVUTIL_AVUTIL_H
 
+#include "attributes.h"
+
 /**
  * @file
  * @ingroup lavu
@@ -209,9 +211,17 @@ enum AVMediaType {
 /**
  * Return a string describing the media_type enum, NULL if media_type
  * is unknown.
+ *
+ * @deprecated Use av_media_type_get_string() instead.
  */
+attribute_deprecated
 const char *av_get_media_type_string(enum AVMediaType media_type);
 
+/**
+ * Return a string describing the media_type enum, never NULL.
+ */
+const char *av_media_type_get_string(enum AVMediaType media_type);
+
 /**
  * @defgroup lavu_const Constants
  * @{
diff --git a/libavutil/utils.c b/libavutil/utils.c
index 94d247bbee..5e0be8361f 100644
--- a/libavutil/utils.c
+++ b/libavutil/utils.c
@@ -37,6 +37,19 @@ const char *av_get_media_type_string(enum AVMediaType media_type)
     }
 }
 
+const char *av_media_type_get_string(enum AVMediaType media_type)
+{
+    switch (media_type) {
+    case AVMEDIA_TYPE_UNKNOWN:    return "unknown";
+    case AVMEDIA_TYPE_VIDEO:      return "video";
+    case AVMEDIA_TYPE_AUDIO:      return "audio";
+    case AVMEDIA_TYPE_DATA:       return "data";
+    case AVMEDIA_TYPE_SUBTITLE:   return "subtitle";
+    case AVMEDIA_TYPE_ATTACHMENT: return "attachment";
+    default:                      return "invalid_media_type";
+    }
+}
+
 char av_get_picture_type_char(enum AVPictureType pict_type)
 {
     switch (pict_type) {
