Browse code

Use avpriv_report_missing_feature() where appropriate

Diego Biurrun authored on 2015/12/17 02:01:34
Showing 33 changed files
... ...
@@ -1246,8 +1246,7 @@ static int decode_ics_info(AACContext *ac, IndividualChannelStream *ics,
1246 1246
                 return AVERROR_INVALIDDATA;
1247 1247
             } else {
1248 1248
                 if (aot == AOT_ER_AAC_LD) {
1249
-                    av_log(ac->avctx, AV_LOG_ERROR,
1250
-                           "LTP in ER AAC LD not yet implemented.\n");
1249
+                    avpriv_report_missing_feature(ac->avctx, "LTP in ER AAC LD");
1251 1250
                     return AVERROR_PATCHWELCOME;
1252 1251
                 }
1253 1252
                 if ((ics->ltp.present = get_bits(gb, 1)))
... ...
@@ -266,7 +266,7 @@ static int decode_element(AVCodecContext *avctx, AVFrame *frame, int ch_index,
266 266
     alac->extra_bits = get_bits(&alac->gb, 2) << 3;
267 267
     bps = alac->sample_size - alac->extra_bits + channels - 1;
268 268
     if (bps > 32) {
269
-        av_log(avctx, AV_LOG_ERROR, "bps is unsupported: %d\n", bps);
269
+        avpriv_report_missing_feature(avctx, "bps %d", bps);
270 270
         return AVERROR_PATCHWELCOME;
271 271
     }
272 272
 
... ...
@@ -424,7 +424,7 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
424 424
             break;
425 425
         }
426 426
         if (element > TYPE_CPE && element != TYPE_LFE) {
427
-            av_log(avctx, AV_LOG_ERROR, "syntax element unsupported: %d", element);
427
+            avpriv_report_missing_feature(avctx, "Syntax element %d", element);
428 428
             return AVERROR_PATCHWELCOME;
429 429
         }
430 430
 
... ...
@@ -568,8 +568,8 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
568 568
             avctx->channels = alac->channels;
569 569
     }
570 570
     if (avctx->channels > ALAC_MAX_CHANNELS) {
571
-        av_log(avctx, AV_LOG_ERROR, "Unsupported channel count: %d\n",
572
-               avctx->channels);
571
+        avpriv_report_missing_feature(avctx, "Channel count %d",
572
+                                      avctx->channels);
573 573
         return AVERROR_PATCHWELCOME;
574 574
     }
575 575
     avctx->channel_layout = ff_alac_channel_layouts[alac->channels - 1];
... ...
@@ -98,7 +98,8 @@ static int bmp_decode_frame(AVCodecContext *avctx,
98 98
         height = bytestream_get_le16(&buf);
99 99
         break;
100 100
     default:
101
-        av_log(avctx, AV_LOG_ERROR, "unsupported BMP file, patch welcome\n");
101
+        avpriv_report_missing_feature(avctx, "Information header size %u",
102
+                                      ihsize);
102 103
         return AVERROR_PATCHWELCOME;
103 104
     }
104 105
 
... ...
@@ -163,9 +163,7 @@ static int decode_frame(AVCodecContext *avctx,
163 163
     prev_pic_bit = header & (1U << 31); /* bit 31 means same as previous pic */
164 164
 
165 165
     if (version > 5) {
166
-        av_log(avctx, AV_LOG_ERROR,
167
-               "This file is encoded with Fraps version %u. "
168
-               "This codec can only decode versions <= 5.\n", version);
166
+        avpriv_report_missing_feature(avctx, "Fraps version %u", version);
169 167
         return AVERROR_PATCHWELCOME;
170 168
     }
171 169
 
... ...
@@ -1424,9 +1424,8 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
1424 1424
             }
1425 1425
             c->compression = bytestream2_get_be32(&bc);
1426 1426
             if (c->compression != 2 && c->compression != 3) {
1427
-                av_log(avctx, AV_LOG_ERROR,
1428
-                       "Unknown compression method %d\n",
1429
-                       c->compression);
1427
+                avpriv_report_missing_feature(avctx, "Compression method %d",
1428
+                                              c->compression);
1430 1429
                 return AVERROR_PATCHWELCOME;
1431 1430
             }
1432 1431
             c->tile_width  = bytestream2_get_be32(&bc);
... ...
@@ -1453,9 +1452,9 @@ static int g2m_decode_frame(AVCodecContext *avctx, void *data,
1453 1453
                 g_mask = bytestream2_get_be32(&bc);
1454 1454
                 b_mask = bytestream2_get_be32(&bc);
1455 1455
                 if (r_mask != 0xFF0000 || g_mask != 0xFF00 || b_mask != 0xFF) {
1456
-                    av_log(avctx, AV_LOG_ERROR,
1457
-                           "Invalid or unsupported bitmasks: R=%"PRIX32", G=%"PRIX32", B=%"PRIX32"\n",
1458
-                           r_mask, g_mask, b_mask);
1456
+                    avpriv_report_missing_feature(avctx,
1457
+                                                  "Bitmasks: R=%"PRIX32", G=%"PRIX32", B=%"PRIX32,
1458
+                                                  r_mask, g_mask, b_mask);
1459 1459
                     return AVERROR_PATCHWELCOME;
1460 1460
                 }
1461 1461
             } else {
... ...
@@ -57,7 +57,8 @@ static av_cold int g723_1_encode_init(AVCodecContext *avctx)
57 57
     if (avctx->bit_rate == 6300) {
58 58
         p->cur_rate = RATE_6300;
59 59
     } else if (avctx->bit_rate == 5300) {
60
-        av_log(avctx, AV_LOG_ERROR, "Bitrate not supported yet, use 6300\n");
60
+        av_log(avctx, AV_LOG_ERROR, "Use bitrate 6300 instead of 5300.\n");
61
+        avpriv_report_missing_feature(avctx, "Bitrate 5300");
61 62
         return AVERROR_PATCHWELCOME;
62 63
     } else {
63 64
         av_log(avctx, AV_LOG_ERROR, "Bitrate not supported, use 6300\n");
... ...
@@ -700,9 +700,8 @@ int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avct
700 700
     sps = (SPS*)ps->sps_list[pps->sps_id]->data;
701 701
 
702 702
     if (sps->bit_depth_luma > 10) {
703
-        av_log(avctx, AV_LOG_ERROR,
704
-               "Unimplemented luma bit depth=%d (max=10)\n",
705
-               sps->bit_depth_luma);
703
+        avpriv_report_missing_feature(avctx, "Luma bit depth=%d (max=10)",
704
+                                      sps->bit_depth_luma);
706 705
         ret = AVERROR_PATCHWELCOME;
707 706
         goto fail;
708 707
     }
... ...
@@ -657,13 +657,12 @@ static int map_pixel_format(AVCodecContext *avctx, HEVCSPS *sps)
657 657
         case 9:  sps->pix_fmt = AV_PIX_FMT_YUV420P9;  break;
658 658
         case 10: sps->pix_fmt = AV_PIX_FMT_YUV420P10; break;
659 659
         default:
660
-            av_log(avctx, AV_LOG_ERROR, "Unsupported bit depth: %d\n",
661
-                   sps->bit_depth);
660
+            avpriv_report_missing_feature(avctx, "Bit depth %d",
661
+                                          sps->bit_depth);
662 662
             return AVERROR_PATCHWELCOME;
663 663
         }
664 664
     } else {
665
-        av_log(avctx, AV_LOG_ERROR,
666
-               "non-4:2:0 support is currently unspecified.\n");
665
+        avpriv_report_missing_feature(avctx, "Non-4:2:0 support");
667 666
         return AVERROR_PATCHWELCOME;
668 667
     }
669 668
 
... ...
@@ -90,9 +90,10 @@ int ff_hevc_encode_nal_vps(HEVCVPS *vps, unsigned int id,
90 90
     put_bits(&pb, 6, vps->vps_max_layer_id);
91 91
     set_ue_golomb(&pb, vps->vps_num_layer_sets - 1);
92 92
 
93
-    // writing layer_id_included_flag not supported
94
-    if (vps->vps_num_layer_sets > 1)
93
+    if (vps->vps_num_layer_sets > 1) {
94
+        avpriv_report_missing_feature(NULL, "Writing layer_id_included_flag");
95 95
         return AVERROR_PATCHWELCOME;
96
+    }
96 97
 
97 98
     put_bits(&pb, 1, vps->vps_timing_info_present_flag);
98 99
     if (vps->vps_timing_info_present_flag) {
... ...
@@ -102,9 +103,10 @@ int ff_hevc_encode_nal_vps(HEVCVPS *vps, unsigned int id,
102 102
         if (vps->vps_poc_proportional_to_timing_flag)
103 103
             set_ue_golomb(&pb, vps->vps_num_ticks_poc_diff_one - 1);
104 104
 
105
-        // writing HRD parameters not supported
106
-        if (vps->vps_num_hrd_parameters)
105
+        if (vps->vps_num_hrd_parameters) {
106
+            avpriv_report_missing_feature(NULL, "Writing HRD parameters");
107 107
             return AVERROR_PATCHWELCOME;
108
+        }
108 109
     }
109 110
 
110 111
     put_bits(&pb, 1, 0);    // extension flag
... ...
@@ -396,7 +396,7 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx,
396 396
         }
397 397
         break;
398 398
     default:
399
-        av_log(avctx, AV_LOG_ERROR, "unsupported pixel size %d\n", pixel_size);
399
+        avpriv_report_missing_feature(avctx, "Pixel size %d", pixel_size);
400 400
         ret = AVERROR_PATCHWELCOME;
401 401
         goto done;
402 402
     }
... ...
@@ -164,8 +164,9 @@ static int av_cold libopus_encode_init(AVCodecContext *avctx)
164 164
     /* FIXME: Opus can handle up to 255 channels. However, the mapping for
165 165
      * anything greater than 8 is undefined. */
166 166
     if (avctx->channels > 8) {
167
-        av_log(avctx, AV_LOG_ERROR,
168
-               "Channel layout undefined for %d channels.\n", avctx->channels);
167
+        avpriv_report_missing_feature(avctx,
168
+                                      "Undefined channel layout for %d channels",
169
+                                      avctx->channels);
169 170
         return AVERROR_PATCHWELCOME;
170 171
     }
171 172
     if (!avctx->bit_rate) {
... ...
@@ -373,7 +373,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
373 373
         s->avctx->color_range = s->cs_itu601 ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG;
374 374
         break;
375 375
     default:
376
-        av_log(s->avctx, AV_LOG_ERROR, "Unhandled pixel format 0x%x\n", pix_fmt_id);
376
+        avpriv_report_missing_feature(s->avctx, "Pixel format 0x%x", pix_fmt_id);
377 377
         return AVERROR_PATCHWELCOME;
378 378
     }
379 379
     if (s->ls) {
... ...
@@ -1035,8 +1035,9 @@ int ff_mjpeg_decode_sos(MJpegDecodeContext *s, const uint8_t *mb_bitmask,
1035 1035
     len = get_bits(&s->gb, 16);
1036 1036
     nb_components = get_bits(&s->gb, 8);
1037 1037
     if (nb_components == 0 || nb_components > MAX_COMPONENTS) {
1038
-        av_log(s->avctx, AV_LOG_ERROR,
1039
-               "decode_sos: nb_components (%d) unsupported\n", nb_components);
1038
+        avpriv_report_missing_feature(s->avctx,
1039
+                                      "decode_sos: nb_components (%d)",
1040
+                                      nb_components);
1040 1041
         return AVERROR_PATCHWELCOME;
1041 1042
     }
1042 1043
     if (len != 6 + 2 * nb_components) {
... ...
@@ -1530,7 +1530,7 @@ int ff_silk_decode_superframe(SilkContext *s, OpusRangeCoder *rc,
1530 1530
 
1531 1531
         redundancy[i] = opus_rc_p2model(rc, 1);
1532 1532
         if (redundancy[i]) {
1533
-            av_log(s->avctx, AV_LOG_ERROR, "LBRR frames present; this is unsupported\n");
1533
+            avpriv_report_missing_feature(s->avctx, "LBRR frames");
1534 1534
             return AVERROR_PATCHWELCOME;
1535 1535
         }
1536 1536
     }
... ...
@@ -515,8 +515,8 @@ static int shorten_decode_frame(AVCodecContext *avctx, void *data,
515 515
             case FN_BLOCKSIZE: {
516 516
                 unsigned blocksize = get_uint(s, av_log2(s->blocksize));
517 517
                 if (blocksize > s->blocksize) {
518
-                    av_log(avctx, AV_LOG_ERROR,
519
-                           "Increasing block size is not supported\n");
518
+                    avpriv_report_missing_feature(avctx,
519
+                                                  "Increasing block size");
520 520
                     return AVERROR_PATCHWELCOME;
521 521
                 }
522 522
                 if (!blocksize || blocksize > MAX_BLOCKSIZE) {
... ...
@@ -702,7 +702,7 @@ static int tak_decode_frame(AVCodecContext *avctx, void *data,
702 702
 
703 703
     if (s->ti.codec != TAK_CODEC_MONO_STEREO &&
704 704
         s->ti.codec != TAK_CODEC_MULTICHANNEL) {
705
-        av_log(avctx, AV_LOG_ERROR, "unsupported codec: %d\n", s->ti.codec);
705
+        avpriv_report_missing_feature(avctx, "TAK codec type %d", s->ti.codec);
706 706
         return AVERROR_PATCHWELCOME;
707 707
     }
708 708
     if (s->ti.data_type) {
... ...
@@ -56,8 +56,7 @@ static int txd_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
56 56
     flags           = bytestream2_get_byte(&gb);
57 57
 
58 58
     if (version < 8 || version > 9) {
59
-        av_log(avctx, AV_LOG_ERROR, "texture data version %u is unsupported\n",
60
-                                                                    version);
59
+        avpriv_report_missing_feature(avctx, "Texture data version %u", version);
61 60
         return AVERROR_PATCHWELCOME;
62 61
     }
63 62
 
... ...
@@ -66,7 +65,7 @@ static int txd_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
66 66
     } else if (depth == 16 || depth == 32) {
67 67
         avctx->pix_fmt = AV_PIX_FMT_RGBA;
68 68
     } else {
69
-        av_log(avctx, AV_LOG_ERROR, "depth of %u is unsupported\n", depth);
69
+        avpriv_report_missing_feature(avctx, "Color depth of %u", depth);
70 70
         return AVERROR_PATCHWELCOME;
71 71
     }
72 72
 
... ...
@@ -143,7 +142,7 @@ static int txd_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
143 143
     return avpkt->size;
144 144
 
145 145
 unsupported:
146
-    av_log(avctx, AV_LOG_ERROR, "unsupported d3d format (%08x)\n", d3d_format);
146
+    avpriv_report_missing_feature(avctx, "d3d format (%08x)", d3d_format);
147 147
     return AVERROR_PATCHWELCOME;
148 148
 }
149 149
 
... ...
@@ -51,7 +51,7 @@ static int vp5_parse_header(VP56Context *s, const uint8_t *buf, int buf_size,
51 51
             return AVERROR_INVALIDDATA;
52 52
         vp56_rac_gets(c, 2);
53 53
         if (vp56_rac_get(c)) {
54
-            av_log(s->avctx, AV_LOG_ERROR, "interlacing not supported\n");
54
+            avpriv_report_missing_feature(s->avctx, "Interlacing");
55 55
             return AVERROR_PATCHWELCOME;
56 56
         }
57 57
         rows = vp56_rac_gets(c, 8);  /* number of stored macroblock rows */
... ...
@@ -147,7 +147,7 @@ static int xwd_decode_frame(AVCodecContext *avctx, void *data,
147 147
     }
148 148
 
149 149
     if (pixformat != XWD_Z_PIXMAP) {
150
-        av_log(avctx, AV_LOG_ERROR, "pixmap format %"PRIu32" unsupported\n", pixformat);
150
+        avpriv_report_missing_feature(avctx, "Pixmap format %"PRIu32, pixformat);
151 151
         return AVERROR_PATCHWELCOME;
152 152
     }
153 153
 
... ...
@@ -383,8 +383,7 @@ static int vfw_read_header(AVFormatContext *s)
383 383
     if (par->format == AV_PIX_FMT_NONE) {
384 384
         par->codec_id = vfw_codecid(biCompression);
385 385
         if (par->codec_id == AV_CODEC_ID_NONE) {
386
-            av_log(s, AV_LOG_ERROR, "Unknown compression type. "
387
-                             "Please report verbose (-v 9) debug information.\n");
386
+            avpriv_report_missing_feature(s, "This compression type");
388 387
             vfw_read_close(s);
389 388
             return AVERROR_PATCHWELCOME;
390 389
         }
... ...
@@ -500,7 +500,7 @@ static int pixfmt_from_pixmap_format(AVFormatContext *s, int depth,
500 500
 
501 501
         fmt++;
502 502
     }
503
-    av_log(s, AV_LOG_ERROR, "Pixmap format not mappable.\n");
503
+    avpriv_report_missing_feature(s, "Mapping this pixmap format");
504 504
 
505 505
     return AVERROR_PATCHWELCOME;
506 506
 }
... ...
@@ -225,8 +225,7 @@ static int avi_write_header(AVFormatContext *s)
225 225
             // XSUB subtitles behave like video tracks, other subtitles
226 226
             // are not (yet) supported.
227 227
             if (par->codec_id != AV_CODEC_ID_XSUB) {
228
-                av_log(s, AV_LOG_ERROR,
229
-                       "Subtitle streams other than DivX XSUB are not supported by the AVI muxer.\n");
228
+                avpriv_report_missing_feature(s, "Subtitle streams other than DivX XSUB");
230 229
                 return AVERROR_PATCHWELCOME;
231 230
             }
232 231
         case AVMEDIA_TYPE_VIDEO:
... ...
@@ -180,7 +180,7 @@ static int get_packet_header(AVFormatContext *s)
180 180
         st->codecpar->bits_per_coded_sample = (audio_format >> 6) & 0x3F;
181 181
 
182 182
         if (st->codecpar->bits_per_coded_sample != (audio_format & 0x3F)) {
183
-            av_log(s, AV_LOG_WARNING, "only tightly packed PCM currently supported\n");
183
+            avpriv_report_missing_feature(s, "Not tightly packed PCM");
184 184
             return AVERROR_PATCHWELCOME;
185 185
         }
186 186
 
... ...
@@ -190,8 +190,7 @@ static int get_packet_header(AVFormatContext *s)
190 190
         case 24: st->codecpar->codec_id = AV_CODEC_ID_PCM_S24LE_PLANAR; break;
191 191
         case 32: st->codecpar->codec_id = AV_CODEC_ID_PCM_S32LE_PLANAR; break;
192 192
         default:
193
-            av_log(s, AV_LOG_WARNING,
194
-                   "only 16-, 20-, 24- and 32-bit PCM currently supported\n");
193
+            avpriv_report_missing_feature(s, "PCM not 16-, 20-, 24- or 32-bits");
195 194
             return AVERROR_PATCHWELCOME;
196 195
         }
197 196
 
... ...
@@ -1947,10 +1947,9 @@ static int matroska_read_header(AVFormatContext *s)
1947 1947
         ebml.max_size        > sizeof(uint64_t)  ||
1948 1948
         ebml.id_length       > sizeof(uint32_t)  ||
1949 1949
         ebml.doctype_version > 3) {
1950
-        av_log(matroska->ctx, AV_LOG_ERROR,
1951
-               "EBML header using unsupported features\n"
1952
-               "(EBML version %"PRIu64", doctype %s, doc version %"PRIu64")\n",
1953
-               ebml.version, ebml.doctype, ebml.doctype_version);
1950
+        avpriv_report_missing_feature(matroska->ctx,
1951
+                                      "EBML version %"PRIu64", doctype %s, doc version %"PRIu64,
1952
+                                      ebml.version, ebml.doctype, ebml.doctype_version);
1954 1953
         ebml_free(ebml_syntax, &ebml);
1955 1954
         return AVERROR_PATCHWELCOME;
1956 1955
     }
... ...
@@ -228,7 +228,7 @@ static int mpc8_read_header(AVFormatContext *s)
228 228
     avio_skip(pb, 4); //CRC
229 229
     c->ver = avio_r8(pb);
230 230
     if(c->ver != 8){
231
-        av_log(s, AV_LOG_ERROR, "Unknown stream version %d\n", c->ver);
231
+        avpriv_report_missing_feature(s, "Stream version %d", c->ver);
232 232
         return AVERROR_PATCHWELCOME;
233 233
     }
234 234
     c->samples = ffio_read_varlen(pb);
... ...
@@ -123,9 +123,9 @@ static int opus_packet(AVFormatContext *avf, int idx)
123 123
         skip = FFMIN(skip, os->pduration);
124 124
         if (skip > 0) {
125 125
             os->pduration = skip < os->pduration ? os->pduration - skip : 1;
126
-            av_log(avf, AV_LOG_WARNING,
127
-                   "Last packet is truncated to %d (because of unimplemented end trim support).\n",
128
-                   os->pduration);
126
+            avpriv_report_missing_feature(avf,
127
+                                          "Last packet truncated to %u since end trim support",
128
+                                          os->pduration);
129 129
             return AVERROR_PATCHWELCOME;
130 130
         }
131 131
     }
... ...
@@ -102,10 +102,10 @@ static int qcp_read_header(AVFormatContext *s)
102 102
     if (is_qcelp_13k_guid(buf)) {
103 103
         st->codecpar->codec_id = AV_CODEC_ID_QCELP;
104 104
     } else if (!memcmp(buf, guid_evrc, 16)) {
105
-        av_log(s, AV_LOG_ERROR, "EVRC codec is not supported.\n");
105
+        avpriv_report_missing_feature(s, "EVRC codec");
106 106
         return AVERROR_PATCHWELCOME;
107 107
     } else if (!memcmp(buf, guid_smv, 16)) {
108
-        av_log(s, AV_LOG_ERROR, "SMV codec is not supported.\n");
108
+        avpriv_report_missing_feature(s, "SMV codec");
109 109
         return AVERROR_PATCHWELCOME;
110 110
     } else {
111 111
         av_log(s, AV_LOG_ERROR, "Unknown codec GUID.\n");
... ...
@@ -50,7 +50,7 @@ static int rso_write_header(AVFormatContext *s)
50 50
     }
51 51
 
52 52
     if (par->codec_id == AV_CODEC_ID_ADPCM_IMA_WAV) {
53
-        av_log(s, AV_LOG_ERROR, "ADPCM in RSO not implemented\n");
53
+        avpriv_report_missing_feature(s, "ADPCM in RSO");
54 54
         return AVERROR_PATCHWELCOME;
55 55
     }
56 56
 
... ...
@@ -230,7 +230,7 @@ static int jpeg_parse_packet(AVFormatContext *ctx, PayloadContext *jpeg,
230 230
     len -= 8;
231 231
 
232 232
     if (type > 1) {
233
-        av_log(ctx, AV_LOG_ERROR, "Unimplemented RTP/JPEG type %"PRIu8"\n", type);
233
+        avpriv_report_missing_feature(ctx, "RTP/JPEG type %"PRIu8, type);
234 234
         return AVERROR_PATCHWELCOME;
235 235
     }
236 236
 
... ...
@@ -109,9 +109,9 @@ static int parse_fmtp_config(AVStream *st, const char *value)
109 109
     num_layers        = get_bits(&gb, 3);
110 110
     if (audio_mux_version != 0 || same_time_framing != 1 || num_programs != 0 ||
111 111
         num_layers != 0) {
112
-        av_log(NULL, AV_LOG_WARNING, "Unsupported LATM config (%d,%d,%d,%d)\n",
113
-                                     audio_mux_version, same_time_framing,
114
-                                     num_programs, num_layers);
112
+        avpriv_report_missing_feature(NULL, "LATM config (%d,%d,%d,%d)",
113
+                                      audio_mux_version, same_time_framing,
114
+                                      num_programs, num_layers);
115 115
         ret = AVERROR_PATCHWELCOME;
116 116
         goto end;
117 117
     }
... ...
@@ -108,15 +108,14 @@ static int xiph_handle_packet(AVFormatContext *ctx, PayloadContext *data,
108 108
     }
109 109
 
110 110
     if (ident != data->ident) {
111
-        av_log(ctx, AV_LOG_ERROR,
112
-               "Unimplemented Xiph SDP configuration change detected\n");
111
+        avpriv_report_missing_feature(ctx, "Xiph SDP configuration change");
113 112
         return AVERROR_PATCHWELCOME;
114 113
     }
115 114
 
116 115
     if (tdt) {
117
-        av_log(ctx, AV_LOG_ERROR,
118
-               "Unimplemented RTP Xiph packet settings (%d,%d,%d)\n",
119
-               fragmented, tdt, num_pkts);
116
+        avpriv_report_missing_feature(ctx,
117
+                                      "RTP Xiph packet settings (%d,%d,%d)",
118
+                                      fragmented, tdt, num_pkts);
120 119
         return AVERROR_PATCHWELCOME;
121 120
     }
122 121
 
... ...
@@ -246,9 +245,8 @@ parse_packed_headers(AVFormatContext *s,
246 246
     length2            = get_base128(&packed_headers, packed_headers_end);
247 247
 
248 248
     if (num_packed != 1 || num_headers > 3) {
249
-        av_log(s, AV_LOG_ERROR,
250
-               "Unimplemented number of headers: %u packed headers, %u headers\n",
251
-               num_packed, num_headers);
249
+        avpriv_report_missing_feature(s, "%u packed headers, %u headers",
250
+                                      num_packed, num_headers);
252 251
         return AVERROR_PATCHWELCOME;
253 252
     }
254 253
 
... ...
@@ -1333,8 +1333,7 @@ static int rtsp_send_cmd_with_content_async(AVFormatContext *s,
1333 1333
     ffurl_write(rt->rtsp_hd_out, out_buf, strlen(out_buf));
1334 1334
     if (send_content_length > 0 && send_content) {
1335 1335
         if (rt->control_transport == RTSP_MODE_TUNNEL) {
1336
-            av_log(s, AV_LOG_ERROR, "tunneling of RTSP requests "
1337
-                                    "with content data not supported\n");
1336
+            avpriv_report_missing_feature(s, "Tunneling of RTSP requests with content data");
1338 1337
             return AVERROR_PATCHWELCOME;
1339 1338
         }
1340 1339
         ffurl_write(rt->rtsp_hd_out, send_content, send_content_length);
... ...
@@ -469,7 +469,8 @@ static int spdif_write_header(AVFormatContext *s)
469 469
             return AVERROR(ENOMEM);
470 470
         break;
471 471
     default:
472
-        av_log(s, AV_LOG_ERROR, "codec not supported\n");
472
+        avpriv_report_missing_feature(s, "Codec %d",
473
+                                      s->streams[0]->codecpar->codec_id);
473 474
         return AVERROR_PATCHWELCOME;
474 475
     }
475 476
     return 0;
... ...
@@ -95,7 +95,8 @@ static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb)
95 95
     }
96 96
 
97 97
     if (wc->header.version < 0x402 || wc->header.version > 0x410) {
98
-        av_log(ctx, AV_LOG_ERROR, "Unsupported version %03X\n", wc->header.version);
98
+        avpriv_report_missing_feature(ctx, "WV version 0x%03X",
99
+                                      wc->header.version);
99 100
         return AVERROR_PATCHWELCOME;
100 101
     }
101 102