[FFmpeg-devel] [PATCH] Make a clear distinction between an unsupported codec and an unknown one
Robert Swain
robert.swain
Sun Aug 31 18:30:58 CEST 2008
2008/8/31 Vitor Sessak <vitor1001 at gmail.com>:
> Robert Swain wrote:
>> 2008/8/31 Peter Ross <pross at xvid.org>:
>>> On Sun, Aug 31, 2008 at 12:53:34PM +0200, Michael Niedermayer wrote:
>>>> On Sun, Aug 31, 2008 at 06:56:48AM +0200, Vitor Sessak wrote:
>>>>> See $subj. I got pretty confused by "Stream #0.1: Audio: 0x0000, 5512 Hz,
>>>>> mono, s16" meaning that a codec is known, but unsupported...
>>>>>
>>>>> -Vitor
>>>>> Index: libavcodec/utils.c
>>>>> ===================================================================
>>>>> --- libavcodec/utils.c (revision 15050)
>>>>> +++ libavcodec/utils.c (working copy)
>>>>> @@ -1091,8 +1091,12 @@
>>>>> (enc->codec_tag >> 16) & 0xff,
>>>>> (enc->codec_tag >> 24) & 0xff,
>>>>> enc->codec_tag);
>>>>> + } else if (enc->codec_id) {
>>>>> + snprintf(buf1, sizeof(buf1), "unsuported (id 0x%04x)", enc->codec_id);
>>>>> + } else if (enc->codec_tag) {
>>>>> + snprintf(buf1, sizeof(buf1), "unknown (0x%04x)", enc->codec_tag);
>>>>> } else {
>>>>> - snprintf(buf1, sizeof(buf1), "0x%04x", enc->codec_tag);
>>>>> + snprintf(buf1, sizeof(buf1), "unknown");
>>>>> }
>>>> I think this is inconsistant now
>>>> Before it just printed the tag now it prints the tag when its
>>>> printable, if not and codec_id is not 0 the id and if not and
>>>> id is 0 and the tag is not 0 the tag and ...
>>>> Printing the ID in addition to the tag and "NONE" instead of
>>>> 0x0000 or so seems more consistent to me
>
> IMHO, when we have a codec ID, the codec is already identified and there
> is no use printing the 4CC. Yes, I should move them the "if
> (enc->codec_id)" up.
Some people may be interested in the FOURCC even if they know the codec.
>>> An enhancement to the unsupported case would be to actually print
>>> the name of the codec. e.g. i am always forgetting which 0x16X
>>> twocc refers to wmav3.
>>
>> Indeed. In my opinion it should print the codec name if possible and
>
> Today we have:
>
> AVCodec flac_decoder = {
> "flac",
> CODEC_TYPE_AUDIO,
> CODEC_ID_FLAC,
> sizeof(FLACContext),
> flac_decode_init,
> NULL,
> flac_decode_close,
> flac_decode_frame,
> CODEC_CAP_DELAY,
> .flush= flac_flush,
> .long_name= NULL_IF_CONFIG_SMALL("FLAC (Free Lossless Audio Codec)"),
> };
>
> AVCodec flac_encoder = {
> "flac",
> CODEC_TYPE_AUDIO,
> CODEC_ID_FLAC,
> sizeof(FlacEncodeContext),
> flac_encode_init,
> flac_encode_frame,
> flac_encode_close,
> NULL,
> .capabilities = CODEC_CAP_SMALL_LAST_FRAME,
> .sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
> .long_name = NULL_IF_CONFIG_SMALL("FLAC (Free Lossless Audio Codec)"),
> };
>
> enum CodecID {
> CODEC_ID_NONE,
>
> /* video codecs */
> CODEC_ID_MPEG1VIDEO,
> [...]
>
> CODEC_ID_FLAC,
> [...]
> }
>
> Note the duplication of both the short and the long name. I think that
> setting the codec long and short name in the same place of CodecID would
> remove duplication and resolve the issue of finding the name of
> unimplemented codecs...
I like this idea.
Rob
More information about the ffmpeg-devel
mailing list