# HG changeset patch # User skal # Date 1206010960 0 # Node ID 1d9a55c8d25995757afbc5bebd183a1050ee6c35 # Parent 65236eababe90de25d3c8a5691c59219491329a2 Additional checks for strange num_val in FLV metadata Avoids some "Unsupported audio codec (6)" message in FLVs, e.g. Example of such problematic bitstream is 'bad_codec6.flv' in ftp's /incoming directory. diff -r 65236eababe9 -r 1d9a55c8d259 flvdec.c --- a/flvdec.c Wed Mar 19 14:08:16 2008 +0000 +++ b/flvdec.c Thu Mar 20 11:02:40 2008 +0000 @@ -175,9 +175,11 @@ if(!strcmp(key, "duration")) s->duration = num_val * AV_TIME_BASE; // else if(!strcmp(key, "width") && vcodec && num_val > 0) vcodec->width = num_val; // else if(!strcmp(key, "height") && vcodec && num_val > 0) vcodec->height = num_val; - else if(!strcmp(key, "audiocodecid") && acodec) flv_set_audio_codec(s, astream, (int)num_val << FLV_AUDIO_CODECID_OFFSET); - else if(!strcmp(key, "videocodecid") && vcodec) flv_set_video_codec(s, vstream, (int)num_val); - else if(!strcmp(key, "audiosamplesize") && acodec && num_val >= 0) { + else if(!strcmp(key, "audiocodecid") && acodec && 0 <= (int)num_val) + flv_set_audio_codec(s, astream, (int)num_val << FLV_AUDIO_CODECID_OFFSET); + else if(!strcmp(key, "videocodecid") && vcodec && 0 <= (int)num_val) + flv_set_video_codec(s, vstream, (int)num_val); + else if(!strcmp(key, "audiosamplesize") && acodec && 0 < (int)num_val) { acodec->bits_per_sample = num_val; //we may have to rewrite a previously read codecid because FLV only marks PCM endianness. if(num_val == 8 && (acodec->codec_id == CODEC_ID_PCM_S16BE || acodec->codec_id == CODEC_ID_PCM_S16LE))