put_byte(pb, (value>> 0) & 0xFF );
}
+static int get_audio_flags(AVCodecContext *enc){
+ int flags = 0x02;
+
+ switch (enc->sample_rate) {
+ case 44100:
+ flags |= 0x0C;
+ break;
+ case 22050:
+ flags |= 0x08;
+ break;
+ case 11025:
+ flags |= 0x04;
+ break;
+ case 8000: //nellymoser only
+ case 5512: //not mp3
+ flags |= 0x00;
+ break;
+ default:
+ return -1;
+ }
+
+ if (enc->channels > 1) {
+ flags |= 0x01;
+ }
+
+ switch(enc->codec_id){
+ case CODEC_ID_MP3:
+ flags |= 0x20;
+ break;
+ case 0:
+ flags |= enc->codec_tag<<4;
+ break;
+ default:
+ return -1;
+ }
+
+ return flags;
+}
+
static int flv_write_header(AVFormatContext *s)
{
ByteIOContext *pb = &s->pb;
put_be32(pb,11); // size
flv->reserved=5;
}
+ if(enc->codec_type == CODEC_TYPE_AUDIO && get_audio_flags(enc)<0)
+ return -1;
}
return 0;
flv->hasVideo = 1;
} else {
assert(enc->codec_type == CODEC_TYPE_AUDIO);
- flags = 0x02;
-
- switch (enc->sample_rate) {
- case 44100:
- flags |= 0x0C;
- break;
- case 22050:
- flags |= 0x08;
- break;
- case 11025:
- flags |= 0x04;
- break;
- case 8000: //nellymoser only
- case 5512: //not mp3
- flags |= 0x00;
- break;
- default:
- assert(0);
- }
-
- if (enc->channels > 1) {
- flags |= 0x01;
- }
+ flags = get_audio_flags(enc);
- switch(enc->codec_id){
- case CODEC_ID_MP3:
- flags |= 0x20;
- break;
- case 0:
- flags |= enc->codec_tag<<4;
- break;
- default:
- assert(0);
- }
-
assert(size);
put_byte(pb, 8);